@plait/draw 0.36.0 → 0.37.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/generators/line-auto-complete.generator.mjs +1 -1
- package/esm2022/geometry.component.mjs +3 -3
- package/esm2022/image.component.mjs +14 -1
- package/esm2022/interfaces/index.mjs +1 -1
- package/esm2022/plugins/with-geometry-create.mjs +59 -49
- package/esm2022/plugins/with-line-auto-complete-reaction.mjs +5 -4
- package/esm2022/plugins/with-line-auto-complete.mjs +5 -4
- package/esm2022/plugins/with-line-create.mjs +1 -1
- package/esm2022/transforms/geometry.mjs +3 -3
- package/esm2022/transforms/index.mjs +2 -7
- package/esm2022/utils/geometry.mjs +21 -11
- package/esm2022/utils/line.mjs +1 -1
- package/esm2022/utils/memorize.mjs +2 -2
- package/fesm2022/plait-draw.mjs +308 -292
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/generators/line-auto-complete.generator.d.ts +3 -3
- package/image.component.d.ts +2 -0
- package/interfaces/index.d.ts +1 -1
- package/package.json +1 -1
- package/plugins/with-geometry-create.d.ts +7 -2
- package/transforms/index.d.ts +0 -4
- package/utils/geometry.d.ts +10 -4
- package/utils/line.d.ts +4 -4
- package/utils/memorize.d.ts +7 -1
- package/esm2022/transforms/property.mjs +0 -15
- package/transforms/property.d.ts +0 -5
|
@@ -10,15 +10,16 @@ export const withLineAutoComplete = (board) => {
|
|
|
10
10
|
let temporaryElement;
|
|
11
11
|
board.pointerDown = (event) => {
|
|
12
12
|
const selectedElements = getSelectedDrawElements(board);
|
|
13
|
+
const targetElement = selectedElements.length === 1 && selectedElements[0];
|
|
13
14
|
const clickPoint = transformPoint(board, toPoint(event.x, event.y, PlaitBoard.getHost(board)));
|
|
14
|
-
if (!PlaitBoard.isReadonly(board) &&
|
|
15
|
-
const points = getAutoCompletePoints(
|
|
15
|
+
if (!PlaitBoard.isReadonly(board) && targetElement && PlaitDrawElement.isShape(targetElement)) {
|
|
16
|
+
const points = getAutoCompletePoints(targetElement);
|
|
16
17
|
const index = getHitIndexOfAutoCompletePoint(clickPoint, points);
|
|
17
18
|
const hitPoint = points[index];
|
|
18
19
|
if (hitPoint) {
|
|
19
20
|
temporaryDisableSelection(board);
|
|
20
21
|
startPoint = clickPoint;
|
|
21
|
-
sourceElement =
|
|
22
|
+
sourceElement = targetElement;
|
|
22
23
|
BoardTransforms.updatePointerType(board, LineShape.elbow);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
@@ -57,4 +58,4 @@ export const withLineAutoComplete = (board) => {
|
|
|
57
58
|
};
|
|
58
59
|
return board;
|
|
59
60
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWF1dG8tY29tcGxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtbGluZS1hdXRvLWNvbXBsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFVBQVUsRUFFVixnQkFBZ0IsRUFFaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIsT0FBTyxFQUNQLGNBQWMsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTTlILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLHFDQUFxQyxDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3RELE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV0RCxJQUFJLFVBQVUsR0FBaUIsSUFBSSxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUF1QixJQUFJLENBQUM7SUFDMUMsSUFBSSxhQUFnQyxDQUFDO0lBQ3JDLElBQUksZ0JBQWtDLENBQUM7SUFFdkMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMs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Q0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIFBSRVNTX0FORF9NT1ZFX0JVRkZFUixcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0T3B0aW9uc0JvYXJkLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24sXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0TGluZSwgUGxhaXRTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nLCBnZXRBdXRvQ29tcGxldGVQb2ludHMsIGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCwgZ2V0U2VsZWN0ZWREcmF3RWxlbWVudHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZUF1dG9Db21wbGV0ZU9wdGlvbnMge1xuICAgIGFmdGVyQ29tcGxldGU6IChlbGVtZW50OiBQbGFpdExpbmUpID0+IHt9O1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVBdXRvQ29tcGxldGVQbHVnaW5LZXkgPSAncGxhaXQtbGluZS1hdXRvLWNvbXBsZXRlLXBsdWdpbi1rZXknO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVBdXRvQ29tcGxldGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgcG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdFNoYXBlIHwgbnVsbDtcbiAgICBsZXQgdGVtcG9yYXJ5RWxlbWVudDogUGxhaXRMaW5lIHwgbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRHJhd0VsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiB0YXJnZXRFbGVtZW50ICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNTaGFwZSh0YXJnZXRFbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0QXV0b0NvbXBsZXRlUG9pbnRzKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQoY2xpY2tQb2ludCwgcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFBvaW50ID0gcG9pbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChoaXRQb2ludCkge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeURpc2FibGVTZWxlY3Rpb24oYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBjbGlja1BvaW50O1xuICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSB0YXJnZXRFbGVtZW50O1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgTGluZVNoYXBlLmVsYm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGxldCBtb3ZpbmdQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQgJiYgc291cmNlRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLm1vdmluZ1BvaW50LCAuLi5zdGFydFBvaW50KTtcbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBoYW5kbGVMaW5lQ3JlYXRpbmcoYm9hcmQsIExpbmVTaGFwZS5lbGJvdywgc3RhcnRQb2ludCwgbW92aW5nUG9pbnQsIHNvdXJjZUVsZW1lbnQsIGxpbmVTaGFwZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbXBsZXRlID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPExpbmVBdXRvQ29tcGxldGVPcHRpb25zPih3aXRoTGluZUF1dG9Db21wbGV0ZVBsdWdpbktleSlcbiAgICAgICAgICAgICAgICA/LmFmdGVyQ29tcGxldGU7XG4gICAgICAgICAgICBhZnRlckNvbXBsZXRlICYmIGFmdGVyQ29tcGxldGUodGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGluZVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgIGxpbmVTaGFwZUcgPSBudWxsO1xuICAgICAgICBzb3VyY2VFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
@@ -50,4 +50,4 @@ export const withLineCreateByDraw = (board) => {
|
|
|
50
50
|
};
|
|
51
51
|
return board;
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1saW5lLWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1saW5lLWNyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixnQkFBZ0IsRUFFaEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdEQsSUFBSSxLQUFLLEdBQWlCLElBQUksQ0FBQztJQUUvQixJQUFJLGFBQW1DLENBQUM7SUFFeEMsSUFBSSxVQUFVLEdBQXVCLElBQUksQ0FBQztJQUUxQyxJQUFJLGdCQUFnQixHQUFxQixJQUFJLENBQUM7SUFFOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFlBQVksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRixLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2QsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN4RSxJQUFJLFVBQVUsRUFBRTtnQkFDWixhQUFhLEdBQUcsVUFBVSxDQUFDO2FBQzlCO1lBQ0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyQixVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDdkIsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlGLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQWMsQ0FBQztZQUM1RCxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzFHO1FBRUQsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDdEMsSUFBSSxnQkFBZ0IsRUFBRTtZQUNsQixVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4RSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9hcmRUcmFuc2Zvcm1zLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBQb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGFkZFNlbGVjdGVkRWxlbWVudCxcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudCxcbiAgICBjcmVhdGVHLFxuICAgIHByZXZlbnRUb3VjaE1vdmUsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBMaW5lU2hhcGUsIFBsYWl0R2VvbWV0cnksIFBsYWl0TGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgaGFuZGxlTGluZUNyZWF0aW5nIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUkVBQ1RJT05fTUFSR0lOLCBnZXRMaW5lUG9pbnRlcnMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0SGl0T3V0bGluZUdlb21ldHJ5IH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgaXNEcmF3aW5nTW9kZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aExpbmVDcmVhdGVCeURyYXcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgcG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCBzb3VyY2VFbGVtZW50OiBQbGFpdEdlb21ldHJ5IHwgbnVsbDtcblxuICAgIGxldCBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0TGluZSB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBsaW5lUG9pbnRlcnMgPSBnZXRMaW5lUG9pbnRlcnMoKTtcbiAgICAgICAgY29uc3QgaXNMaW5lUG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGxpbmVQb2ludGVycyk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBpc0xpbmVQb2ludGVyICYmIGlzRHJhd2luZ01vZGUoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIHN0YXJ0ID0gcG9pbnQ7XG4gICAgICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0T3V0bGluZUdlb21ldHJ5KGJvYXJkLCBwb2ludCwgUkVBQ1RJT05fTUFSR0lOKTtcbiAgICAgICAgICAgIGlmIChoaXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IGhpdEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBldmVudCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGxpbmVTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBsaW5lU2hhcGVHID0gY3JlYXRlRygpO1xuICAgICAgICBsZXQgbW92aW5nUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgICAgY29uc3QgbGluZVNoYXBlID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBMaW5lU2hhcGU7XG4gICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gaGFuZGxlTGluZUNyZWF0aW5nKGJvYXJkLCBsaW5lU2hhcGUsIHN0YXJ0LCBtb3ZpbmdQb2ludCwgc291cmNlRWxlbWVudCwgbGluZVNoYXBlRyk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50KGJvYXJkKTtcbiAgICAgICAgICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBsaW5lU2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgbGluZVNoYXBlRyA9IG51bGw7XG4gICAgICAgIHNvdXJjZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBwcmV2ZW50VG91Y2hNb3ZlKGJvYXJkLCBldmVudCwgZmFsc2UpO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
@@ -4,7 +4,7 @@ import { BasicShapes, PlaitDrawElement } from '../interfaces';
|
|
|
4
4
|
import { createGeometryElement } from '../utils';
|
|
5
5
|
import { normalizeShapePoints } from '@plait/common';
|
|
6
6
|
export const insertGeometry = (board, points, shape) => {
|
|
7
|
-
let newElement = createGeometryElement(shape, points, '', {
|
|
7
|
+
let newElement = createGeometryElement(board, shape, points, '', {
|
|
8
8
|
strokeWidth: DefaultBasicShapeProperty.strokeWidth
|
|
9
9
|
});
|
|
10
10
|
Transforms.insertNode(board, newElement, [board.children.length]);
|
|
@@ -12,7 +12,7 @@ export const insertGeometry = (board, points, shape) => {
|
|
|
12
12
|
addSelectedElement(board, newElement);
|
|
13
13
|
};
|
|
14
14
|
export const insertText = (board, points, text = '文本') => {
|
|
15
|
-
let newElement = createGeometryElement(BasicShapes.text, points, text);
|
|
15
|
+
let newElement = createGeometryElement(board, BasicShapes.text, points, text);
|
|
16
16
|
Transforms.insertNode(board, newElement, [board.children.length]);
|
|
17
17
|
clearSelectedElement(board);
|
|
18
18
|
addSelectedElement(board, newElement);
|
|
@@ -31,4 +31,4 @@ export const transformShape = (board, element, shape) => {
|
|
|
31
31
|
const path = PlaitBoard.findPath(board, element);
|
|
32
32
|
Transforms.setNode(board, { shape }, path);
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFTLGtCQUFrQixFQUFFLG9CQUFvQixFQUFRLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsS0FBcUIsRUFBRSxFQUFFO0lBQy9GLElBQUksVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUM3RCxXQUFXLEVBQUUseUJBQXlCLENBQUMsV0FBVztLQUNyRCxDQUFrQixDQUFDO0lBQ3BCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBaUIsRUFBRSxNQUFzQixFQUFFLE9BQXlCLElBQUksRUFBRSxFQUFFO0lBQ25HLElBQUksVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQWtCLENBQUM7SUFDL0YsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsVUFBa0IsRUFBRSxJQUFVLEVBQUUsRUFBRTtJQUN4RyxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkQsTUFBTSxhQUFhLEdBQUcsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN6RSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQ3JELGFBQW9DLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztLQUMxRDtJQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXNCLEVBQUUsS0FBcUIsRUFBRSxFQUFFO0lBQy9GLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgVHJhbnNmb3JtcywgUG9pbnQsIGFkZFNlbGVjdGVkRWxlbWVudCwgY2xlYXJTZWxlY3RlZEVsZW1lbnQsIFBhdGgsIFBsYWl0Tm9kZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHkgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmFzaWNTaGFwZXMsIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnksIEdlb21ldHJ5U2hhcGVzLCBQbGFpdFRleHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZUdlb21ldHJ5RWxlbWVudCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBub3JtYWxpemVTaGFwZVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0R2VvbWV0cnkgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50czogW1BvaW50LCBQb2ludF0sIHNoYXBlOiBHZW9tZXRyeVNoYXBlcykgPT4ge1xuICAgIGxldCBuZXdFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KGJvYXJkLCBzaGFwZSwgcG9pbnRzLCAnJywge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aFxuICAgIH0pIGFzIFBsYWl0R2VvbWV0cnk7XG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXSk7XG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0VGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSwgdGV4dDogc3RyaW5nIHwgRWxlbWVudCA9ICfmlofmnKwnKSA9PiB7XG4gICAgbGV0IG5ld0VsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoYm9hcmQsIEJhc2ljU2hhcGVzLnRleHQsIHBvaW50cywgdGV4dCkgYXMgUGxhaXRHZW9tZXRyeTtcbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdKTtcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBuZXdFbGVtZW50KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNpemVHZW9tZXRyeSA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSwgdGV4dEhlaWdodDogbnVtYmVyLCBwYXRoOiBQYXRoKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplUG9pbnRzID0gbm9ybWFsaXplU2hhcGVQb2ludHMocG9pbnRzKTtcbiAgICBjb25zdCBlbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gdGV4dEhlaWdodCAvIGJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgY29uc3QgbmV3UHJvcGVydGllcyA9IHsgcG9pbnRzOiBub3JtYWxpemVQb2ludHMsIHRleHRIZWlnaHQ6IG5ld0hlaWdodCB9O1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVGV4dChlbGVtZW50KSAmJiBlbGVtZW50LmF1dG9TaXplKSB7XG4gICAgICAgIChuZXdQcm9wZXJ0aWVzIGFzIFBhcnRpYWw8UGxhaXRUZXh0PikuYXV0b1NpemUgPSBmYWxzZTtcbiAgICB9XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdQcm9wZXJ0aWVzLCBwYXRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1TaGFwZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBzaGFwZSB9LCBwYXRoKTtcbn07XG4iXX0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { setFillColor, setStrokeColor, setStrokeStyle, setStrokeWidth } from './property';
|
|
2
1
|
import { insertText, insertGeometry, resizeGeometry, transformShape } from './geometry';
|
|
3
2
|
import { setText, setTextSize } from './geometry-text';
|
|
4
3
|
import { insertImage } from './image';
|
|
@@ -14,10 +13,6 @@ export const DrawTransforms = {
|
|
|
14
13
|
removeLineText,
|
|
15
14
|
setLineMark,
|
|
16
15
|
insertImage,
|
|
17
|
-
transformShape
|
|
18
|
-
setStrokeColor,
|
|
19
|
-
setStrokeWidth,
|
|
20
|
-
setFillColor,
|
|
21
|
-
setStrokeStyle
|
|
16
|
+
transformShape
|
|
22
17
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLE9BQU87SUFDUCxjQUFjO0lBQ2QsY0FBYztJQUNkLFVBQVU7SUFDVixXQUFXO0lBQ1gsVUFBVTtJQUNWLFlBQVk7SUFDWixjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxjQUFjO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNlcnRUZXh0LCBpbnNlcnRHZW9tZXRyeSwgcmVzaXplR2VvbWV0cnksIHRyYW5zZm9ybVNoYXBlIH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBzZXRUZXh0LCBzZXRUZXh0U2l6ZSB9IGZyb20gJy4vZ2VvbWV0cnktdGV4dCc7XG5pbXBvcnQgeyBpbnNlcnRJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IHsgcmVtb3ZlTGluZVRleHQsIHJlc2l6ZUxpbmUsIHNldExpbmVNYXJrLCBzZXRMaW5lVGV4dHMgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgY29uc3QgRHJhd1RyYW5zZm9ybXMgPSB7XG4gICAgc2V0VGV4dCxcbiAgICBpbnNlcnRHZW9tZXRyeSxcbiAgICByZXNpemVHZW9tZXRyeSxcbiAgICBpbnNlcnRUZXh0LFxuICAgIHNldFRleHRTaXplLFxuICAgIHJlc2l6ZUxpbmUsXG4gICAgc2V0TGluZVRleHRzLFxuICAgIHJlbW92ZUxpbmVUZXh0LFxuICAgIHNldExpbmVNYXJrLFxuICAgIGluc2VydEltYWdlLFxuICAgIHRyYW5zZm9ybVNoYXBlXG59O1xuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, createG, distanceBetweenPointAndSegment, drawCircle, idCreator } from '@plait/core';
|
|
2
2
|
import { BasicShapes, FlowchartSymbols } from '../interfaces/geometry';
|
|
3
|
-
import { Alignment, buildText } from '@plait/text';
|
|
4
|
-
import { DefaultBasicShapeProperty, DefaultFlowchartPropertyMap,
|
|
3
|
+
import { Alignment, DEFAULT_FONT_SIZE, buildText, getTextSize } from '@plait/text';
|
|
4
|
+
import { DefaultBasicShapeProperty, DefaultFlowchartPropertyMap, DrawThemeColors, ShapeDefaultSpace } from '../constants';
|
|
5
5
|
import { RESIZE_HANDLE_DIAMETER, getRectangleByPoints } from '@plait/common';
|
|
6
6
|
import { getStrokeWidthByElement } from './style/stroke';
|
|
7
7
|
import { getEngine } from '../engines';
|
|
@@ -10,7 +10,7 @@ import { getDefaultGeometryPoints } from '../plugins/with-geometry-create';
|
|
|
10
10
|
import { createLineElement } from './line';
|
|
11
11
|
import { LineMarkerType, LineShape } from '../interfaces';
|
|
12
12
|
import { DefaultLineStyle } from '../constants/line';
|
|
13
|
-
export const createGeometryElement = (shape, points, text, options = {}, textProperties = {}) => {
|
|
13
|
+
export const createGeometryElement = (board, shape, points, text, options = {}, textProperties = {}) => {
|
|
14
14
|
let textOptions = {};
|
|
15
15
|
let alignment = Alignment.center;
|
|
16
16
|
if (shape === BasicShapes.text) {
|
|
@@ -20,13 +20,14 @@ export const createGeometryElement = (shape, points, text, options = {}, textPro
|
|
|
20
20
|
textProperties = { ...textProperties };
|
|
21
21
|
textProperties?.align && (alignment = textProperties?.align);
|
|
22
22
|
delete textProperties?.align;
|
|
23
|
+
const textHeight = getDefaultTextShapeProperty(board, textProperties['font-size']).height;
|
|
23
24
|
return {
|
|
24
25
|
id: idCreator(),
|
|
25
26
|
type: 'geometry',
|
|
26
27
|
shape,
|
|
27
28
|
angle: 0,
|
|
28
29
|
opacity: 1,
|
|
29
|
-
textHeight
|
|
30
|
+
textHeight,
|
|
30
31
|
text: buildText(text, alignment, textProperties),
|
|
31
32
|
points,
|
|
32
33
|
...textOptions,
|
|
@@ -105,7 +106,7 @@ export const getEdgeOnPolygonByPoint = (corners, point) => {
|
|
|
105
106
|
export const getDefaultFlowchartProperty = (symbol) => {
|
|
106
107
|
return DefaultFlowchartPropertyMap[symbol];
|
|
107
108
|
};
|
|
108
|
-
export const createDefaultFlowchart = (point) => {
|
|
109
|
+
export const createDefaultFlowchart = (board, point) => {
|
|
109
110
|
const decisionProperty = getDefaultFlowchartProperty(FlowchartSymbols.decision);
|
|
110
111
|
const processProperty = getDefaultFlowchartProperty(FlowchartSymbols.process);
|
|
111
112
|
const terminalProperty = getDefaultFlowchartProperty(FlowchartSymbols.terminal);
|
|
@@ -115,15 +116,15 @@ export const createDefaultFlowchart = (point) => {
|
|
|
115
116
|
const lineOptions = {
|
|
116
117
|
strokeWidth: DefaultLineStyle.strokeWidth
|
|
117
118
|
};
|
|
118
|
-
const startElement = createGeometryElement(FlowchartSymbols.terminal, getDefaultGeometryPoints(FlowchartSymbols.terminal, point), '开始', options);
|
|
119
|
+
const startElement = createGeometryElement(board, FlowchartSymbols.terminal, getDefaultGeometryPoints(board, FlowchartSymbols.terminal, point), '开始', options);
|
|
119
120
|
const processPoint1 = [point[0], point[1] + terminalProperty.height / 2 + 55 + processProperty.height / 2];
|
|
120
|
-
const processElement1 = createGeometryElement(FlowchartSymbols.process, getDefaultGeometryPoints(FlowchartSymbols.process, processPoint1), '过程', options);
|
|
121
|
+
const processElement1 = createGeometryElement(board, FlowchartSymbols.process, getDefaultGeometryPoints(board, FlowchartSymbols.process, processPoint1), '过程', options);
|
|
121
122
|
const decisionPoint = [processPoint1[0], processPoint1[1] + processProperty.height / 2 + 55 + decisionProperty.height / 2];
|
|
122
|
-
const decisionElement = createGeometryElement(FlowchartSymbols.decision, getDefaultGeometryPoints(FlowchartSymbols.decision, decisionPoint), '过程', options);
|
|
123
|
+
const decisionElement = createGeometryElement(board, FlowchartSymbols.decision, getDefaultGeometryPoints(board, FlowchartSymbols.decision, decisionPoint), '过程', options);
|
|
123
124
|
const processPoint2 = [decisionPoint[0] + decisionProperty.width / 2 + 75 + processProperty.width / 2, decisionPoint[1]];
|
|
124
|
-
const processElement2 = createGeometryElement(FlowchartSymbols.process, getDefaultGeometryPoints(FlowchartSymbols.process, processPoint2), '过程', options);
|
|
125
|
+
const processElement2 = createGeometryElement(board, FlowchartSymbols.process, getDefaultGeometryPoints(board, FlowchartSymbols.process, processPoint2), '过程', options);
|
|
125
126
|
const endPoint = [decisionPoint[0], decisionPoint[1] + decisionProperty.height / 2 + 95 + terminalProperty.height / 2];
|
|
126
|
-
const endElement = createGeometryElement(FlowchartSymbols.terminal, getDefaultGeometryPoints(FlowchartSymbols.terminal, endPoint), '结束', options);
|
|
127
|
+
const endElement = createGeometryElement(board, FlowchartSymbols.terminal, getDefaultGeometryPoints(board, FlowchartSymbols.terminal, endPoint), '结束', options);
|
|
127
128
|
const line1 = createLineElement(LineShape.elbow, [
|
|
128
129
|
[0, 0],
|
|
129
130
|
[0, 0]
|
|
@@ -180,4 +181,13 @@ export const getDrawDefaultStrokeColor = (theme) => {
|
|
|
180
181
|
export const getFlowchartDefaultFill = (theme) => {
|
|
181
182
|
return DrawThemeColors[theme].fill;
|
|
182
183
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLFVBQVUsRUFDVixTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFrQixXQUFXLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsT0FBTyxFQUNILHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixpQkFBaUIsRUFDcEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFNckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsS0FBcUIsRUFDckIsTUFBc0IsRUFDdEIsSUFB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Q0FBQyxDQUFDLElBQUksQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICBUaGVtZUNvbG9yTW9kZSxcbiAgICBjcmVhdGVHLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudCxcbiAgICBkcmF3Q2lyY2xlLFxuICAgIGlkQ3JlYXRvclxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBHZW9tZXRyeVNoYXBlcywgQmFzaWNTaGFwZXMsIFBsYWl0R2VvbWV0cnksIEZsb3djaGFydFN5bWJvbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7IEFsaWdubWVudCwgQ3VzdG9tVGV4dCwgYnVpbGRUZXh0IH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7XG4gICAgRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eSxcbiAgICBEZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHlNYXAsXG4gICAgRGVmYXVsdFRleHRQcm9wZXJ0eSxcbiAgICBEcmF3VGhlbWVDb2xvcnMsXG4gICAgU2hhcGVEZWZhdWx0U3BhY2Vcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJFU0laRV9IQU5ETEVfRElBTUVURVIsIGdldFJlY3RhbmdsZUJ5UG9pbnRzIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUvc3Ryb2tlJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgZ2V0U2hhcGUgfSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1nZW9tZXRyeS1jcmVhdGUnO1xuaW1wb3J0IHsgY3JlYXRlTGluZUVsZW1lbnQgfSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgTGluZU1hcmtlclR5cGUsIExpbmVTaGFwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGVmYXVsdExpbmVTdHlsZSB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcblxuZXhwb3J0IHR5cGUgR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSBQaWNrPFBsYWl0R2VvbWV0cnksICdmaWxsJyB8ICdzdHJva2VDb2xvcicgfCAnc3Ryb2tlV2lkdGgnPjtcblxuZXhwb3J0IHR5cGUgVGV4dFByb3BlcnRpZXMgPSBQYXJ0aWFsPEN1c3RvbVRleHQ+ICYgeyBhbGlnbj86IEFsaWdubWVudCB9O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR2VvbWV0cnlFbGVtZW50ID0gKFxuICAgIHNoYXBlOiBHZW9tZXRyeVNoYXBlcyxcbiAgICBwb2ludHM6IFtQb2ludCwgUG9pbnRdLFxuICAgIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQsXG4gICAgb3B0aW9uczogR2VvbWV0cnlTdHlsZU9wdGlvbnMgPSB7fSxcbiAgICB0ZXh0UHJvcGVydGllczogVGV4dFByb3BlcnRpZXMgPSB7fVxuKTogUGxhaXRHZW9tZXRyeSA9PiB7XG4gICAgbGV0IHRleHRPcHRpb25zID0ge307XG4gICAgbGV0IGFsaWdubWVudDogdW5kZWZpbmVkIHwgQWxpZ25tZW50ID0gQWxpZ25tZW50LmNlbnRlcjtcbiAgICBpZiAoc2hhcGUgPT09IEJhc2ljU2hhcGVzLnRleHQpIHtcbiAgICAgICAgdGV4dE9wdGlvbnMgPSB7IGF1dG9TaXplOiB0cnVlIH07XG4gICAgICAgIGFsaWdubWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGV4dFByb3BlcnRpZXMgPSB7IC4uLnRleHRQcm9wZXJ0aWVzIH07XG4gICAgdGV4dFByb3BlcnRpZXM/LmFsaWduICYmIChhbGlnbm1lbnQgPSB0ZXh0UHJvcGVydGllcz8uYWxpZ24pO1xuICAgIGRlbGV0ZSB0ZXh0UHJvcGVydGllcz8uYWxpZ247XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgYW5nbGU6IDAsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIHRleHRIZWlnaHQ6IERlZmF1bHRUZXh0UHJvcGVydHkuaGVpZ2h0LFxuICAgICAgICB0ZXh0OiBidWlsZFRleHQodGV4dCwgYWxpZ25tZW50LCB0ZXh0UHJvcGVydGllcyksXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgLi4udGV4dE9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBvaW50c0J5Q2VudGVyUG9pbnQgPSAocG9pbnQ6IFBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFtQb2ludCwgUG9pbnRdID0+IHtcbiAgICBjb25zdCBsZWZ0VG9wUG9pbnQ6IFBvaW50ID0gW3BvaW50WzBdIC0gd2lkdGggLyAyLCBwb2ludFsxXSAtIGhlaWdodCAvIDJdO1xuICAgIGNvbnN0IHJpZ2h0Qm90dG9tUG9pbnQ6IFBvaW50ID0gW3BvaW50WzBdICsgd2lkdGggLyAyLCBwb2ludFsxXSArIGhlaWdodCAvIDJdO1xuXG4gICAgcmV0dXJuIFtsZWZ0VG9wUG9pbnQsIHJpZ2h0Qm90dG9tUG9pbnRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0O1xuICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0JvdW5kTWFzayA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IEcgPSBjcmVhdGVHKCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShlbGVtZW50KTtcbiAgICBjb25zdCBtYXNrRyA9IGRyYXdHZW9tZXRyeShib2FyZCwgYWN0aXZlUmVjdGFuZ2xlLCBzaGFwZSwge1xuICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgfSk7XG4gICAgRy5hcHBlbmRDaGlsZChtYXNrRyk7XG4gICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKHNoYXBlKS5nZXRDb25uZWN0b3JQb2ludHMoYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICBjb25uZWN0b3JQb2ludHMuZm9yRWFjaChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IGNpcmNsZUcgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLCBwb2ludCwgNiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgRy5hcHBlbmRDaGlsZChjaXJjbGVHKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBHO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdHZW9tZXRyeSA9IChib2FyZDogUGxhaXRCb2FyZCwgb3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzLCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZHJhdyhib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RQb2ludCA9IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5LCBwb2ludDogUG9pbnQsIGluZmxhdGVEZWx0YSA9IDApID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBpbmZsYXRlRGVsdGEpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGUoZWxlbWVudCk7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZ2V0TmVhcmVzdFBvaW50KGFjdGl2ZVJlY3RhbmdsZSwgcG9pbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENlbnRlclBvaW50c09uUG9seWdvbiA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBjZW50ZXJQb2ludDogUG9pbnRbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBqID0gaSA9PSBwb2ludHMubGVuZ3RoIC0gMSA/IDAgOiBpICsgMTtcbiAgICAgICAgY2VudGVyUG9pbnQucHVzaChbKHBvaW50c1tpXVswXSArIHBvaW50c1tqXVswXSkgLyAyLCAocG9pbnRzW2ldWzFdICsgcG9pbnRzW2pdWzFdKSAvIDJdKTtcbiAgICB9XG4gICAgcmV0dXJuIGNlbnRlclBvaW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkZ2VPblBvbHlnb25CeVBvaW50ID0gKGNvcm5lcnM6IFBvaW50W10sIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gY29ybmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gY29ybmVyc1tpbmRleCAtIDFdO1xuICAgICAgICBsZXQgZW5kID0gaW5kZXggPT09IGNvcm5lcnMubGVuZ3RoID8gY29ybmVyc1swXSA6IGNvcm5lcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHN0YXJ0WzBdLCBzdGFydFsxXSwgZW5kWzBdLCBlbmRbMV0pO1xuICAgICAgICBpZiAoZGlzdGFuY2UgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eSA9IChzeW1ib2w6IEZsb3djaGFydFN5bWJvbHMpID0+IHtcbiAgICByZXR1cm4gRGVmYXVsdEZsb3djaGFydFByb3BlcnR5TWFwW3N5bWJvbF07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEZsb3djaGFydCA9IChwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBkZWNpc2lvblByb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24pO1xuICAgIGNvbnN0IHByb2Nlc3NQcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MpO1xuICAgIGNvbnN0IHRlcm1pbmFsUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCk7XG5cbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aFxuICAgIH07XG5cbiAgICBjb25zdCBsaW5lT3B0aW9ucyA9IHtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRMaW5lU3R5bGUuc3Ryb2tlV2lkdGhcbiAgICB9O1xuICAgIGNvbnN0IHN0YXJ0RWxlbWVudCA9IGNyZWF0ZUdlb21ldHJ5RWxlbWVudChcbiAgICAgICAgRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsIHBvaW50KSxcbiAgICAgICAgJ+W8gOWniycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MTogUG9pbnQgPSBbcG9pbnRbMF0sIHBvaW50WzFdICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyICsgNTUgKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQxID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDEpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBkZWNpc2lvblBvaW50OiBQb2ludCA9IFtwcm9jZXNzUG9pbnQxWzBdLCBwcm9jZXNzUG9pbnQxWzFdICsgcHJvY2Vzc1Byb3BlcnR5LmhlaWdodCAvIDIgKyA1NSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgZGVjaXNpb25FbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy5kZWNpc2lvbiwgZGVjaXNpb25Qb2ludCksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IHByb2Nlc3NQb2ludDI6IFBvaW50ID0gW2RlY2lzaW9uUG9pbnRbMF0gKyBkZWNpc2lvblByb3BlcnR5LndpZHRoIC8gMiArIDc1ICsgcHJvY2Vzc1Byb3BlcnR5LndpZHRoIC8gMiwgZGVjaXNpb25Qb2ludFsxXV07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQyID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsXG4gICAgICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDIpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSwgZGVjaXNpb25Qb2ludFsxXSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMiArIDk1ICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBlbmRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCwgZW5kUG9pbnQpLFxuICAgICAgICAn57uT5p2fJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMSA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IHN0YXJ0RWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUyID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQxLmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IGRlY2lzaW9uRWxlbWVudC5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTMgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogYnVpbGRUZXh0KCfmmK8nKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogMC41LFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmU0ID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAsIDAuNV0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50Mi5pZCB9LFxuICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogYnVpbGRUZXh0KCflkKYnKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogMC41LFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmU1ID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzEsIDAuNV0sIGJvdW5kSWQ6IGVuZEVsZW1lbnQuaWQgfSxcbiAgICAgICAgW10sXG4gICAgICAgIGxpbmVPcHRpb25zXG4gICAgKTtcblxuICAgIHJldHVybiBbc3RhcnRFbGVtZW50LCBwcm9jZXNzRWxlbWVudDEsIGRlY2lzaW9uRWxlbWVudCwgcHJvY2Vzc0VsZW1lbnQyLCBlbmRFbGVtZW50LCBsaW5lMSwgbGluZTIsIGxpbmUzLCBsaW5lNCwgbGluZTVdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEF1dG9Db21wbGV0ZVBvaW50cyA9IChlbGVtZW50OiBQbGFpdEdlb21ldHJ5KSA9PiB7XG4gICAgY29uc3QgQXV0b0NvbXBsZXRlTWFyZ2luID0gKDEyICsgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiAvIDIpICogMjtcbiAgICBsZXQgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQXV0b0NvbXBsZXRlTWFyZ2luKTtcbiAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRJbmRleE9mQXV0b0NvbXBsZXRlUG9pbnQgPSAobW92aW5nUG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICByZXR1cm4gcG9pbnRzLmZpbmRJbmRleChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmluZ1JlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbbW92aW5nUG9pbnRdKTtcbiAgICAgICAgbGV0IHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcG9pbnRdKTtcbiAgICAgICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBSRVNJWkVfSEFORExFX0RJQU1FVEVSKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChtb3ZpbmdSZWN0YW5nbGUsIHJlY3RhbmdsZSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RHJhd0RlZmF1bHRTdHJva2VDb2xvciA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5zdHJva2VDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGbG93Y2hhcnREZWZhdWx0RmlsbCA9ICh0aGVtZTogVGhlbWVDb2xvck1vZGUpID0+IHtcbiAgICByZXR1cm4gRHJhd1RoZW1lQ29sb3JzW3RoZW1lXS5maWxsO1xufTtcbiJdfQ==
|
|
184
|
+
export const getDefaultTextShapeProperty = (board, fontSize) => {
|
|
185
|
+
fontSize = fontSize ? Number(fontSize) : DEFAULT_FONT_SIZE;
|
|
186
|
+
const textSize = getTextSize(board, '文本', 10, { fontSize });
|
|
187
|
+
return {
|
|
188
|
+
width: textSize.width + ShapeDefaultSpace.rectangleAndText * 2,
|
|
189
|
+
height: textSize.height,
|
|
190
|
+
text: '文本'
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy9nZW9tZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLFVBQVUsRUFDVixTQUFTLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFrQixXQUFXLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBYyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFNckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDakMsS0FBaUIsRUFDakIsS0FBcUIsRUFD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TUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDL0QsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQzlDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQzdELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBMEIsRUFBRSxFQUFFO0lBQ3pGLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDM0QsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxPQUFPO1FBQ0gsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQztRQUM5RCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsSUFBSSxFQUFFLElBQUk7S0FDYixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgVGhlbWVDb2xvck1vZGUsXG4gICAgY3JlYXRlRyxcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnQsXG4gICAgZHJhd0NpcmNsZSxcbiAgICBpZENyZWF0b3Jcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZXMsIEJhc2ljU2hhcGVzLCBQbGFpdEdlb21ldHJ5LCBGbG93Y2hhcnRTeW1ib2xzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9nZW9tZXRyeSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEN1c3RvbVRleHQsIERFRkFVTFRfRk9OVF9TSVpFLCBidWlsZFRleHQsIGdldFRleHRTaXplIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHksIERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eU1hcCwgRHJhd1RoZW1lQ29sb3JzLCBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSRVNJWkVfSEFORExFX0RJQU1FVEVSLCBnZXRSZWN0YW5nbGVCeVBvaW50cyB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuL3N0eWxlL3N0cm9rZSc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAncm91Z2hqcy9iaW4vY29yZSc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktY3JlYXRlJztcbmltcG9ydCB7IGNyZWF0ZUxpbmVFbGVtZW50IH0gZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IExpbmVNYXJrZXJUeXBlLCBMaW5lU2hhcGUsIFBsYWl0U2hhcGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlZmF1bHRMaW5lU3R5bGUgfSBmcm9tICcuLi9jb25zdGFudHMvbGluZSc7XG5cbmV4cG9ydCB0eXBlIEdlb21ldHJ5U3R5bGVPcHRpb25zID0gUGljazxQbGFpdEdlb21ldHJ5LCAnZmlsbCcgfCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJz47XG5cbmV4cG9ydCB0eXBlIFRleHRQcm9wZXJ0aWVzID0gUGFydGlhbDxDdXN0b21UZXh0PiAmIHsgYWxpZ24/OiBBbGlnbm1lbnQgfTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdlb21ldHJ5RWxlbWVudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXMsXG4gICAgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSxcbiAgICB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50LFxuICAgIG9wdGlvbnM6IEdlb21ldHJ5U3R5bGVPcHRpb25zID0ge30sXG4gICAgdGV4dFByb3BlcnRpZXM6IFRleHRQcm9wZXJ0aWVzID0ge31cbik6IFBsYWl0R2VvbWV0cnkgPT4ge1xuICAgIGxldCB0ZXh0T3B0aW9ucyA9IHt9O1xuICAgIGxldCBhbGlnbm1lbnQ6IHVuZGVmaW5lZCB8IEFsaWdubWVudCA9IEFsaWdubWVudC5jZW50ZXI7XG4gICAgaWYgKHNoYXBlID09PSBCYXNpY1NoYXBlcy50ZXh0KSB7XG4gICAgICAgIHRleHRPcHRpb25zID0geyBhdXRvU2l6ZTogdHJ1ZSB9O1xuICAgICAgICBhbGlnbm1lbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRleHRQcm9wZXJ0aWVzID0geyAuLi50ZXh0UHJvcGVydGllcyB9O1xuICAgIHRleHRQcm9wZXJ0aWVzPy5hbGlnbiAmJiAoYWxpZ25tZW50ID0gdGV4dFByb3BlcnRpZXM/LmFsaWduKTtcbiAgICBkZWxldGUgdGV4dFByb3BlcnRpZXM/LmFsaWduO1xuICAgIGNvbnN0IHRleHRIZWlnaHQgPSBnZXREZWZhdWx0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIHRleHRQcm9wZXJ0aWVzWydmb250LXNpemUnXSkuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIGFuZ2xlOiAwLFxuICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICB0ZXh0SGVpZ2h0LFxuICAgICAgICB0ZXh0OiBidWlsZFRleHQodGV4dCwgYWxpZ25tZW50LCB0ZXh0UHJvcGVydGllcyksXG4gICAgICAgIHBvaW50cyxcbiAgICAgICAgLi4udGV4dE9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBvaW50c0J5Q2VudGVyUG9pbnQgPSAocG9pbnQ6IFBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFtQb2ludCwgUG9pbnRdID0+IHtcbiAgICBjb25zdCBsZWZ0VG9wUG9pbnQ6IFBvaW50ID0gW3BvaW50WzBdIC0gd2lkdGggLyAyLCBwb2ludFsxXSAtIGhlaWdodCAvIDJdO1xuICAgIGNvbnN0IHJpZ2h0Qm90dG9tUG9pbnQ6IFBvaW50ID0gW3BvaW50WzBdICsgd2lkdGggLyAyLCBwb2ludFsxXSArIGhlaWdodCAvIDJdO1xuXG4gICAgcmV0dXJuIFtsZWZ0VG9wUG9pbnQsIHJpZ2h0Qm90dG9tUG9pbnRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyEpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC50ZXh0SGVpZ2h0O1xuICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudFJlY3RhbmdsZS53aWR0aCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMCxcbiAgICAgICAgeDogZWxlbWVudFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICB5OiBlbGVtZW50UmVjdGFuZ2xlLnkgKyAoZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQgLSBoZWlnaHQpIC8gMlxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0JvdW5kTWFzayA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRHZW9tZXRyeSkgPT4ge1xuICAgIGNvbnN0IEcgPSBjcmVhdGVHKCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgIGNvbnN0IGFjdGl2ZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5pbmZsYXRlKHJlY3RhbmdsZSwgQUNUSVZFX1NUUk9LRV9XSURUSCk7XG4gICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZShlbGVtZW50KTtcbiAgICBjb25zdCBtYXNrRyA9IGRyYXdHZW9tZXRyeShib2FyZCwgYWN0aXZlUmVjdGFuZ2xlLCBzaGFwZSwge1xuICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgfSk7XG4gICAgRy5hcHBlbmRDaGlsZChtYXNrRyk7XG4gICAgY29uc3QgY29ubmVjdG9yUG9pbnRzID0gZ2V0RW5naW5lKHNoYXBlKS5nZXRDb25uZWN0b3JQb2ludHMoYWN0aXZlUmVjdGFuZ2xlKTtcbiAgICBjb25uZWN0b3JQb2ludHMuZm9yRWFjaChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IGNpcmNsZUcgPSBkcmF3Q2lyY2xlKFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLCBwb2ludCwgNiwge1xuICAgICAgICAgICAgc3Ryb2tlOiAnIzk5OTk5OScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgIGZpbGw6ICcjRkZGJyxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgRy5hcHBlbmRDaGlsZChjaXJjbGVHKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBHO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdHZW9tZXRyeSA9IChib2FyZDogUGxhaXRCb2FyZCwgb3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgc2hhcGU6IEdlb21ldHJ5U2hhcGVzLCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZHJhdyhib2FyZCwgb3V0ZXJSZWN0YW5nbGUsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RQb2ludCA9IChlbGVtZW50OiBQbGFpdFNoYXBlLCBwb2ludDogUG9pbnQsIGluZmxhdGVEZWx0YSA9IDApID0+IHtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBpbmZsYXRlRGVsdGEpO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGUoZWxlbWVudCk7XG4gICAgcmV0dXJuIGdldEVuZ2luZShzaGFwZSkuZ2V0TmVhcmVzdFBvaW50KGFjdGl2ZVJlY3RhbmdsZSwgcG9pbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENlbnRlclBvaW50c09uUG9seWdvbiA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBjZW50ZXJQb2ludDogUG9pbnRbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBqID0gaSA9PSBwb2ludHMubGVuZ3RoIC0gMSA/IDAgOiBpICsgMTtcbiAgICAgICAgY2VudGVyUG9pbnQucHVzaChbKHBvaW50c1tpXVswXSArIHBvaW50c1tqXVswXSkgLyAyLCAocG9pbnRzW2ldWzFdICsgcG9pbnRzW2pdWzFdKSAvIDJdKTtcbiAgICB9XG4gICAgcmV0dXJuIGNlbnRlclBvaW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkZ2VPblBvbHlnb25CeVBvaW50ID0gKGNvcm5lcnM6IFBvaW50W10sIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gY29ybmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gY29ybmVyc1tpbmRleCAtIDFdO1xuICAgICAgICBsZXQgZW5kID0gaW5kZXggPT09IGNvcm5lcnMubGVuZ3RoID8gY29ybmVyc1swXSA6IGNvcm5lcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHN0YXJ0WzBdLCBzdGFydFsxXSwgZW5kWzBdLCBlbmRbMV0pO1xuICAgICAgICBpZiAoZGlzdGFuY2UgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eSA9IChzeW1ib2w6IEZsb3djaGFydFN5bWJvbHMpID0+IHtcbiAgICByZXR1cm4gRGVmYXVsdEZsb3djaGFydFByb3BlcnR5TWFwW3N5bWJvbF07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdEZsb3djaGFydCA9IChib2FyZDogUGxhaXRCb2FyZCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3QgZGVjaXNpb25Qcm9wZXJ0eSA9IGdldERlZmF1bHRGbG93Y2hhcnRQcm9wZXJ0eShGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uKTtcbiAgICBjb25zdCBwcm9jZXNzUHJvcGVydHkgPSBnZXREZWZhdWx0Rmxvd2NoYXJ0UHJvcGVydHkoRmxvd2NoYXJ0U3ltYm9scy5wcm9jZXNzKTtcbiAgICBjb25zdCB0ZXJtaW5hbFByb3BlcnR5ID0gZ2V0RGVmYXVsdEZsb3djaGFydFByb3BlcnR5KEZsb3djaGFydFN5bWJvbHMudGVybWluYWwpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRCYXNpY1NoYXBlUHJvcGVydHkuc3Ryb2tlV2lkdGhcbiAgICB9O1xuXG4gICAgY29uc3QgbGluZU9wdGlvbnMgPSB7XG4gICAgICAgIHN0cm9rZVdpZHRoOiBEZWZhdWx0TGluZVN0eWxlLnN0cm9rZVdpZHRoXG4gICAgfTtcbiAgICBjb25zdCBzdGFydEVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoYm9hcmQsIEZsb3djaGFydFN5bWJvbHMudGVybWluYWwsIHBvaW50KSxcbiAgICAgICAgJ+W8gOWniycsXG4gICAgICAgIG9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc1BvaW50MTogUG9pbnQgPSBbcG9pbnRbMF0sIHBvaW50WzFdICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyICsgNTUgKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMl07XG4gICAgY29uc3QgcHJvY2Vzc0VsZW1lbnQxID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgRmxvd2NoYXJ0U3ltYm9scy5wcm9jZXNzLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoYm9hcmQsIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcywgcHJvY2Vzc1BvaW50MSksXG4gICAgICAgICfov4fnqIsnLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY2lzaW9uUG9pbnQ6IFBvaW50ID0gW3Byb2Nlc3NQb2ludDFbMF0sIHByb2Nlc3NQb2ludDFbMV0gKyBwcm9jZXNzUHJvcGVydHkuaGVpZ2h0IC8gMiArIDU1ICsgZGVjaXNpb25Qcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBkZWNpc2lvbkVsZW1lbnQgPSBjcmVhdGVHZW9tZXRyeUVsZW1lbnQoXG4gICAgICAgIGJvYXJkLFxuICAgICAgICBGbG93Y2hhcnRTeW1ib2xzLmRlY2lzaW9uLFxuICAgICAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMoYm9hcmQsIEZsb3djaGFydFN5bWJvbHMuZGVjaXNpb24sIGRlY2lzaW9uUG9pbnQpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzUG9pbnQyOiBQb2ludCA9IFtkZWNpc2lvblBvaW50WzBdICsgZGVjaXNpb25Qcm9wZXJ0eS53aWR0aCAvIDIgKyA3NSArIHByb2Nlc3NQcm9wZXJ0eS53aWR0aCAvIDIsIGRlY2lzaW9uUG9pbnRbMV1dO1xuICAgIGNvbnN0IHByb2Nlc3NFbGVtZW50MiA9IGNyZWF0ZUdlb21ldHJ5RWxlbWVudChcbiAgICAgICAgYm9hcmQsXG4gICAgICAgIEZsb3djaGFydFN5bWJvbHMucHJvY2VzcyxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKGJvYXJkLCBGbG93Y2hhcnRTeW1ib2xzLnByb2Nlc3MsIHByb2Nlc3NQb2ludDIpLFxuICAgICAgICAn6L+H56iLJyxcbiAgICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSBbZGVjaXNpb25Qb2ludFswXSwgZGVjaXNpb25Qb2ludFsxXSArIGRlY2lzaW9uUHJvcGVydHkuaGVpZ2h0IC8gMiArIDk1ICsgdGVybWluYWxQcm9wZXJ0eS5oZWlnaHQgLyAyXTtcbiAgICBjb25zdCBlbmRFbGVtZW50ID0gY3JlYXRlR2VvbWV0cnlFbGVtZW50KFxuICAgICAgICBib2FyZCxcbiAgICAgICAgRmxvd2NoYXJ0U3ltYm9scy50ZXJtaW5hbCxcbiAgICAgICAgZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKGJvYXJkLCBGbG93Y2hhcnRTeW1ib2xzLnRlcm1pbmFsLCBlbmRQb2ludCksXG4gICAgICAgICfnu5PmnZ8nLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmUxID0gY3JlYXRlTGluZUVsZW1lbnQoXG4gICAgICAgIExpbmVTaGFwZS5lbGJvdyxcbiAgICAgICAgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgWzAsIDBdXG4gICAgICAgIF0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5ub25lLCBjb25uZWN0aW9uOiBbMC41LCAxXSwgYm91bmRJZDogc3RhcnRFbGVtZW50LmlkIH0sXG4gICAgICAgIHsgbWFya2VyOiBMaW5lTWFya2VyVHlwZS5hcnJvdywgY29ubmVjdGlvbjogWzAuNSwgMF0sIGJvdW5kSWQ6IHByb2Nlc3NFbGVtZW50MS5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTIgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDEuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMC41LCAwXSwgYm91bmRJZDogZGVjaXNpb25FbGVtZW50LmlkIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBsaW5lT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBsaW5lMyA9IGNyZWF0ZUxpbmVFbGVtZW50KFxuICAgICAgICBMaW5lU2hhcGUuZWxib3csXG4gICAgICAgIFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFswLCAwXVxuICAgICAgICBdLFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUubm9uZSwgY29ubmVjdGlvbjogWzAuNSwgMV0sIGJvdW5kSWQ6IGRlY2lzaW9uRWxlbWVudC5pZCB9LFxuICAgICAgICB7IG1hcmtlcjogTGluZU1hcmtlclR5cGUuYXJyb3csIGNvbm5lY3Rpb246IFswLjUsIDBdLCBib3VuZElkOiBlbmRFbGVtZW50LmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+aYrycpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTQgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFsxLCAwLjVdLCBib3VuZElkOiBkZWNpc2lvbkVsZW1lbnQuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMCwgMC41XSwgYm91bmRJZDogcHJvY2Vzc0VsZW1lbnQyLmlkIH0sXG4gICAgICAgIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBidWlsZFRleHQoJ+WQpicpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLjUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgbGluZTUgPSBjcmVhdGVMaW5lRWxlbWVudChcbiAgICAgICAgTGluZVNoYXBlLmVsYm93LFxuICAgICAgICBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbMCwgMF1cbiAgICAgICAgXSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLm5vbmUsIGNvbm5lY3Rpb246IFswLjUsIDFdLCBib3VuZElkOiBwcm9jZXNzRWxlbWVudDIuaWQgfSxcbiAgICAgICAgeyBtYXJrZXI6IExpbmVNYXJrZXJUeXBlLmFycm93LCBjb25uZWN0aW9uOiBbMSwgMC41XSwgYm91bmRJZDogZW5kRWxlbWVudC5pZCB9LFxuICAgICAgICBbXSxcbiAgICAgICAgbGluZU9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIFtzdGFydEVsZW1lbnQsIHByb2Nlc3NFbGVtZW50MSwgZGVjaXNpb25FbGVtZW50LCBwcm9jZXNzRWxlbWVudDIsIGVuZEVsZW1lbnQsIGxpbmUxLCBsaW5lMiwgbGluZTMsIGxpbmU0LCBsaW5lNV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXV0b0NvbXBsZXRlUG9pbnRzID0gKGVsZW1lbnQ6IFBsYWl0U2hhcGUpID0+IHtcbiAgICBjb25zdCBBdXRvQ29tcGxldGVNYXJnaW4gPSAoMTIgKyBSRVNJWkVfSEFORExFX0RJQU1FVEVSIC8gMikgKiAyO1xuICAgIGxldCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBdXRvQ29tcGxldGVNYXJnaW4pO1xuICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0RWRnZUNlbnRlclBvaW50cyhyZWN0YW5nbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEluZGV4T2ZBdXRvQ29tcGxldGVQb2ludCA9IChtb3ZpbmdQb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIHJldHVybiBwb2ludHMuZmluZEluZGV4KHBvaW50ID0+IHtcbiAgICAgICAgY29uc3QgbW92aW5nUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFttb3ZpbmdQb2ludF0pO1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludF0pO1xuICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIFJFU0laRV9IQU5ETEVfRElBTUVURVIpO1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KG1vdmluZ1JlY3RhbmdsZSwgcmVjdGFuZ2xlKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREcmF3RGVmYXVsdFN0cm9rZUNvbG9yID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLnN0cm9rZUNvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZsb3djaGFydERlZmF1bHRGaWxsID0gKHRoZW1lOiBUaGVtZUNvbG9yTW9kZSkgPT4ge1xuICAgIHJldHVybiBEcmF3VGhlbWVDb2xvcnNbdGhlbWVdLmZpbGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFRleHRTaGFwZVByb3BlcnR5ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBmb250U2l6ZT86IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgPyBOdW1iZXIoZm9udFNpemUpIDogREVGQVVMVF9GT05UX1NJWkU7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnZXRUZXh0U2l6ZShib2FyZCwgJ+aWh+acrCcsIDEwLCB7IGZvbnRTaXplIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0ZXh0U2l6ZS53aWR0aCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyLFxuICAgICAgICBoZWlnaHQ6IHRleHRTaXplLmhlaWdodCxcbiAgICAgICAgdGV4dDogJ+aWh+acrCdcbiAgICB9O1xufTtcbiJdfQ==
|