@plait/draw 0.76.0 → 0.77.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/default.d.ts +4 -0
- package/constants/index.d.ts +1 -0
- package/esm2022/constants/default.mjs +6 -1
- package/esm2022/constants/index.mjs +2 -1
- package/esm2022/geometry.component.mjs +2 -3
- package/esm2022/image.component.mjs +2 -4
- package/esm2022/plugins/with-arrow-line-text.mjs +20 -8
- package/esm2022/plugins/with-draw-resize.mjs +23 -18
- package/esm2022/plugins/with-geometry-create.mjs +7 -7
- package/esm2022/plugins/with-table-resize.mjs +11 -7
- package/esm2022/plugins/with-table.mjs +8 -5
- package/esm2022/table.component.mjs +2 -3
- package/esm2022/utils/common.mjs +6 -3
- package/esm2022/utils/geometry.mjs +5 -62
- package/esm2022/utils/table-selected.mjs +1 -5
- package/esm2022/utils/table.mjs +3 -3
- package/esm2022/utils/uml.mjs +7 -5
- package/fesm2022/plait-draw.mjs +1380 -1413
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-arrow-line-text.d.ts +1 -0
- package/plugins/with-draw-resize.d.ts +1 -0
- package/utils/common.d.ts +1 -0
- package/utils/geometry.d.ts +2 -3
- package/utils/table-selected.d.ts +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PlaitBoard, RectangleClient, createG, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { BasicShapes, PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { GeometryShapeGenerator } from '../generators/geometry-shape.generator';
|
|
4
|
-
import { createDefaultGeometry, createTextElement, getDefaultGeometryPoints, getTextShapeProperty, getMemorizedLatestByPointer, getTextRectangle, insertElement } from '../utils';
|
|
5
|
-
import {
|
|
4
|
+
import { createDefaultGeometry, createTextElement, getDefaultGeometryPoints, getTextShapeProperty, getMemorizedLatestByPointer, getTextRectangle, insertElement, getDefaultGeometryText } from '../utils';
|
|
5
|
+
import { getGeometryPointers } from '../constants';
|
|
6
6
|
import { normalizeShapePoints, isDndMode, isDrawingMode, getDirectionFactorByDirectionComponent, getUnitVectorByPointAndPoint, TextManage } from '@plait/common';
|
|
7
7
|
import { isKeyHotkey } from 'is-hotkey';
|
|
8
8
|
import { getSnapResizingRef } from '../utils/snap-resizing';
|
|
@@ -44,9 +44,9 @@ export const withGeometryCreateByDrag = (board) => {
|
|
|
44
44
|
if (dragMode) {
|
|
45
45
|
const memorizedLatest = getMemorizedLatestByPointer(pointer);
|
|
46
46
|
if (pointer === BasicShapes.text) {
|
|
47
|
-
const property = getTextShapeProperty(board,
|
|
47
|
+
const property = getTextShapeProperty(board, getDefaultGeometryText(board), memorizedLatest.textProperties['font-size']);
|
|
48
48
|
const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(movingPoint, property.width, property.height));
|
|
49
|
-
temporaryElement = createTextElement(board, points);
|
|
49
|
+
temporaryElement = createTextElement(board, points, getDefaultGeometryText(board));
|
|
50
50
|
if (!fakeCreateTextRef) {
|
|
51
51
|
const textManage = new TextManage(board, {
|
|
52
52
|
getRectangle: () => {
|
|
@@ -117,9 +117,9 @@ export const withGeometryCreateByDrawing = (board) => {
|
|
|
117
117
|
const pointer = PlaitBoard.getPointer(board);
|
|
118
118
|
if (pointer === BasicShapes.text) {
|
|
119
119
|
const memorizedLatest = getMemorizedLatestByPointer(pointer);
|
|
120
|
-
const property = getTextShapeProperty(board,
|
|
120
|
+
const property = getTextShapeProperty(board, getDefaultGeometryText(board), memorizedLatest.textProperties['font-size']);
|
|
121
121
|
const points = RectangleClient.getPoints(RectangleClient.getRectangleByCenterPoint(point, property.width, property.height));
|
|
122
|
-
const textElement = createTextElement(board, points);
|
|
122
|
+
const textElement = createTextElement(board, points, getDefaultGeometryText(board));
|
|
123
123
|
insertElement(board, textElement);
|
|
124
124
|
start = null;
|
|
125
125
|
}
|
|
@@ -179,4 +179,4 @@ export const withGeometryCreateByDrawing = (board) => {
|
|
|
179
179
|
};
|
|
180
180
|
return board;
|
|
181
181
|
};
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1jcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVMsZUFBZSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxXQUFXLEVBQXVDLGdCQUFnQixFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNoQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pGLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNULGFBQWEsRUFDYixzQ0FBc0MsRUFDdEMsNEJBQTRCLEVBQzVCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU8vRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7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TSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFvQixDQUFDO2dCQUNoRSxJQUFJLE9BQU8sS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQy9CLE1BQU0sTUFBTSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDOUQsZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUF5QixDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixhQUFhLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQixjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDekIsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLE9BQU87UUFDWCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGNyZWF0ZUcsIHRvSG9zdFBvaW50LCB0b1ZpZXdCb3hQb2ludCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEJhc2ljU2hhcGVzLCBHZW9tZXRyeVNoYXBlcywgUGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXREcmF3RWxlbWVudCwgUGxhaXRHZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4uL2dlbmVyYXRvcnMvZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yJztcbmltcG9ydCB7XG4gICAgY3JlYXRlRGVmYXVsdEdlb21ldHJ5LFxuICAgIGNyZWF0ZVRleHRFbGVtZW50LFxuICAgIGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyxcbiAgICBnZXRUZXh0U2hhcGVQcm9wZXJ0eSxcbiAgICBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIsXG4gICAgZ2V0VGV4dFJlY3RhbmdsZSxcbiAgICBpbnNlcnRFbGVtZW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERlZmF1bHRUZXh0UHJvcGVydHksIERyYXdQb2ludGVyVHlwZSwgZ2V0R2VvbWV0cnlQb2ludGVycyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIG5vcm1hbGl6ZVNoYXBlUG9pbnRzLFxuICAgIGlzRG5kTW9kZSxcbiAgICBpc0RyYXdpbmdNb2RlLFxuICAgIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50LFxuICAgIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQsXG4gICAgVGV4dE1hbmFnZVxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0U25hcFJlc2l6aW5nUmVmIH0gZnJvbSAnLi4vdXRpbHMvc25hcC1yZXNpemluZyc7XG5pbXBvcnQgeyBUYWJsZUdlbmVyYXRvciB9IGZyb20gJy4uL2dlbmVyYXRvcnMvdGFibGUuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBGYWtlQ3JlYXRlVGV4dFJlZiB7XG4gICAgZzogU1ZHR0VsZW1lbnQ7XG4gICAgdGV4dE1hbmFnZTogVGV4dE1hbmFnZTtcbn1cblxuY29uc3QgaXNHZW9tZXRyeURuZE1vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBnZW9tZXRyeVBvaW50ZXJzID0gZ2V0R2VvbWV0cnlQb2ludGVycygpO1xuICAgIGNvbnN0IGlzR2VvbWV0cnlQb2ludGVyID0gUGxhaXRCb2FyZC5pc0luUG9pbnRlcihib2FyZCwgZ2VvbWV0cnlQb2ludGVycyk7XG4gICAgY29uc3QgZG5kTW9kZSA9IGlzR2VvbWV0cnlQb2ludGVyICYmIGlzRG5kTW9kZShib2FyZCk7XG4gICAgcmV0dXJuIGRuZE1vZGU7XG59O1xuXG5jb25zdCBpc0dlb21ldHJ5RHJhd2luZ01vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBnZW9tZXRyeVBvaW50ZXJzID0gZ2V0R2VvbWV0cnlQb2ludGVycygpO1xuICAgIGNvbnN0IGlzR2VvbWV0cnlQb2ludGVyID0gUGxhaXRCb2FyZC5pc0luUG9pbnRlcihib2FyZCwgZ2VvbWV0cnlQb2ludGVycyk7XG4gICAgY29uc3QgZHJhd2luZ01vZGUgPSBpc0dlb21ldHJ5UG9pbnRlciAmJiBpc0RyYXdpbmdNb2RlKGJvYXJkKTtcbiAgICByZXR1cm4gZHJhd2luZ01vZGU7XG59O1xuXG5jb25zdCBnZXRHZW9tZXRyeUdlbmVyYXRvckJ5U2hhcGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNoYXBlOiBEcmF3UG9pbnRlclR5cGUpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1VNTENsYXNzT3JJbnRlcmZhY2UoeyBzaGFwZTogc2hhcGUgfSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUdlbmVyYXRvcjxQbGFpdEdlb21ldHJ5Pihib2FyZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yKGJvYXJkKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3Qgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmFnID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBwb2ludGVyVXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IGdlb21ldHJ5U2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnkgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCBmYWtlQ3JlYXRlVGV4dFJlZjogRmFrZUNyZWF0ZVRleHRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBnZW9tZXRyeVNoYXBlRyA9IGNyZWF0ZUcoKTtcblxuICAgICAgICBjb25zdCBnZW9tZXRyeVBvaW50ZXJzID0gZ2V0R2VvbWV0cnlQb2ludGVycygpO1xuICAgICAgICBjb25zdCBpc0dlb21ldHJ5UG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGdlb21ldHJ5UG9pbnRlcnMpO1xuICAgICAgICBjb25zdCBkcmFnTW9kZSA9IGlzR2VvbWV0cnlQb2ludGVyICYmIGlzRG5kTW9kZShib2FyZCk7XG4gICAgICAgIGNvbnN0IG1vdmluZ1BvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSBQbGFpdEJvYXJkLmdldFBvaW50ZXIoYm9hcmQpIGFzIERyYXdQb2ludGVyVHlwZTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnlHZW5lcmF0b3IgPSBnZXRHZW9tZXRyeUdlbmVyYXRvckJ5U2hhcGUoYm9hcmQsIHBvaW50ZXIpO1xuICAgICAgICBpZiAoZHJhZ01vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihwb2ludGVyKTtcbiAgICAgICAgICAgIGlmIChwb2ludGVyID09PSBCYXNpY1NoYXBlcy50ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBnZXRUZXh0U2hhcGVQcm9wZXJ0eShib2FyZCwgRGVmYXVsdFRleHRQcm9wZXJ0eS50ZXh0LCBtZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChtb3ZpbmdQb2ludCwgcHJvcGVydHkud2lkdGgsIHByb3BlcnR5LmhlaWdodClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBjcmVhdGVUZXh0RWxlbWVudChib2FyZCwgcG9pbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZha2VDcmVhdGVUZXh0UmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBuZXcgVGV4dE1hbmFnZShib2FyZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFRleHRSZWN0YW5nbGUodGVtcG9yYXJ5RWxlbWVudCEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5kcmF3KHRlbXBvcmFyeUVsZW1lbnQhLnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGc6IGNyZWF0ZUcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRNYW5hZ2VcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLmFwcGVuZChmYWtlQ3JlYXRlVGV4dFJlZi5nKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWYuZy5hcHBlbmQodGV4dE1hbmFnZS5nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZi50ZXh0TWFuYWdlLnVwZGF0ZVJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZi5nLmFwcGVuZChmYWtlQ3JlYXRlVGV4dFJlZi50ZXh0TWFuYWdlLmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gZ2V0RGVmYXVsdEdlb21ldHJ5UG9pbnRzKHBvaW50ZXIsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gY3JlYXRlRGVmYXVsdEdlb21ldHJ5KGJvYXJkLCBwb2ludHMsIHBvaW50ZXIgYXMgR2VvbWV0cnlTaGFwZXMpO1xuICAgICAgICAgICAgICAgIGdlb21ldHJ5R2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRlbXBvcmFyeUVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgZ2VvbWV0cnlTaGFwZUcpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QoYm9hcmQpLmFwcGVuZChnZW9tZXRyeVNoYXBlRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0dlb21ldHJ5RG5kTW9kZShib2FyZCkgJiYgdGVtcG9yYXJ5RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0dlb21ldHJ5RG5kTW9kZShib2FyZCkgJiYgdGVtcG9yYXJ5RWxlbWVudCkge1xuICAgICAgICAgICAgaW5zZXJ0RWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZj8udGV4dE1hbmFnZS5kZXN0cm95KCk7XG4gICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZj8uZy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGZha2VDcmVhdGVUZXh0UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBnZW9tZXRyeVNoYXBlRyA9IG51bGw7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoR2VvbWV0cnlDcmVhdGVCeURyYXdpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgcG9pbnRlclVwLCBrZXlEb3duLCBrZXlVcCB9ID0gYm9hcmQ7XG4gICAgbGV0IHN0YXJ0OiBQb2ludCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IGdlb21ldHJ5U2hhcGVHOiBTVkdHRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgbGV0IHRlbXBvcmFyeUVsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnkgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCBpc1NoaWZ0ID0gZmFsc2U7XG5cbiAgICBsZXQgc25hcEc6IFNWR0dFbGVtZW50IHwgbnVsbDtcblxuICAgIGJvYXJkLmtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaXNTaGlmdCA9IGlzS2V5SG90a2V5KCdzaGlmdCcsIGV2ZW50KTtcbiAgICAgICAga2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleVVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlzU2hpZnQgPSBmYWxzZTtcbiAgICAgICAga2V5VXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSAmJiBpc0dlb21ldHJ5RHJhd2luZ01vZGUoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgc3RhcnQgPSBwb2ludDtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBQbGFpdEJvYXJkLmdldFBvaW50ZXIoYm9hcmQpIGFzIERyYXdQb2ludGVyVHlwZTtcbiAgICAgICAgICAgIGlmIChwb2ludGVyID09PSBCYXNpY1NoYXBlcy50ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVtb3JpemVkTGF0ZXN0ID0gZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyKHBvaW50ZXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIERlZmF1bHRUZXh0UHJvcGVydHkudGV4dCwgbWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzWydmb250LXNpemUnXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludCwgcHJvcGVydHkud2lkdGgsIHByb3BlcnR5LmhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gY3JlYXRlVGV4dEVsZW1lbnQoYm9hcmQsIHBvaW50cyk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0RWxlbWVudChib2FyZCwgdGV4dEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUc/LnJlbW92ZSgpO1xuICAgICAgICBnZW9tZXRyeVNoYXBlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgY29uc3QgbW92aW5nUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3QgcG9pbnRlciA9IFBsYWl0Qm9hcmQuZ2V0UG9pbnRlcihib2FyZCkgYXMgRHJhd1BvaW50ZXJUeXBlO1xuICAgICAgICBjb25zdCBnZW9tZXRyeUdlbmVyYXRvciA9IGdldEdlb21ldHJ5R2VuZXJhdG9yQnlTaGFwZShib2FyZCwgcG9pbnRlcik7XG5cbiAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICBpZiAoc3RhcnQgJiYgaXNHZW9tZXRyeURyYXdpbmdNb2RlKGJvYXJkKSkge1xuICAgICAgICAgICAgbGV0IHBvaW50czogW1BvaW50LCBQb2ludF0gPSBub3JtYWxpemVTaGFwZVBvaW50cyhbc3RhcnQsIG1vdmluZ1BvaW50XSwgaXNTaGlmdCk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQoc3RhcnQsIG1vdmluZ1BvaW50KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVNuYXBSZWYgPSBnZXRTbmFwUmVzaXppbmdSZWYoYm9hcmQsIFtdLCB7XG4gICAgICAgICAgICAgICAgcmVzaXplUG9pbnRzOiBwb2ludHMsXG4gICAgICAgICAgICAgICAgYWN0aXZlUmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbkZhY3RvcnM6IFtnZXREaXJlY3Rpb25GYWN0b3JCeURpcmVjdGlvbkNvbXBvbmVudCh4KSwgZ2V0RGlyZWN0aW9uRmFjdG9yQnlEaXJlY3Rpb25Db21wb25lbnQoeSldLFxuICAgICAgICAgICAgICAgIGlzQXNwZWN0UmF0aW86IGlzU2hpZnQsXG4gICAgICAgICAgICAgICAgaXNGcm9tQ29ybmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIGlzQ3JlYXRlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNuYXBHID0gcmVzaXplU25hcFJlZi5zbmFwRztcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QoYm9hcmQpLmFwcGVuZChzbmFwRyk7XG4gICAgICAgICAgICBwb2ludHMgPSBub3JtYWxpemVTaGFwZVBvaW50cyhyZXNpemVTbmFwUmVmLmFjdGl2ZVBvaW50cyBhcyBbUG9pbnQsIFBvaW50XSwgaXNTaGlmdCk7XG4gICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gY3JlYXRlRGVmYXVsdEdlb21ldHJ5KGJvYXJkLCBwb2ludHMsIHBvaW50ZXIgYXMgR2VvbWV0cnlTaGFwZXMpO1xuICAgICAgICAgICAgZ2VvbWV0cnlHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGVtcG9yYXJ5RWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCBnZW9tZXRyeVNoYXBlRyk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoZ2VvbWV0cnlTaGFwZUcpO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGlzR2VvbWV0cnlEcmF3aW5nTW9kZShib2FyZCkgJiYgc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc3RhcnQhLCB0YXJnZXRQb2ludF0pO1xuICAgICAgICAgICAgaWYgKE1hdGguaHlwb3Qod2lkdGgsIGhlaWdodCkgPCA4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlciA9IFBsYWl0Qm9hcmQuZ2V0UG9pbnRlcihib2FyZCkgYXMgRHJhd1BvaW50ZXJUeXBlO1xuICAgICAgICAgICAgICAgIGlmIChwb2ludGVyICE9PSBCYXNpY1NoYXBlcy50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhwb2ludGVyLCB0YXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0R2VvbWV0cnkoYm9hcmQsIHBvaW50cywgcG9pbnRlciBhcyBHZW9tZXRyeVNoYXBlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpbnNlcnRFbGVtZW50KGJvYXJkLCB0ZW1wb3JhcnlFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGdlb21ldHJ5U2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGdlb21ldHJ5U2hhcGVHID0gbnVsbDtcbiAgICAgICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuIl19
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nZW9tZXRyeS1jcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtZ2VvbWV0cnktY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVMsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUF1QyxnQkFBZ0IsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUNILHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixzQkFBc0IsRUFDekIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxhQUFhLEVBQ2Isc0NBQXNDLEVBQ3RDLDRCQUE0QixFQUM1QixVQUFVLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFPL0QsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUM1QyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFD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LFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQW9CLENBQUM7Z0JBQ2hFLElBQUksT0FBTyxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUM5RCxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQXlCLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLGFBQWEsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDYixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTztRQUNYLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgY3JlYXRlRywgZ2V0STE4blZhbHVlLCB0b0hvc3RQb2ludCwgdG9WaWV3Qm94UG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBCYXNpY1NoYXBlcywgR2VvbWV0cnlTaGFwZXMsIFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0RHJhd0VsZW1lbnQsIFBsYWl0R2VvbWV0cnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzL2dlb21ldHJ5LXNoYXBlLmdlbmVyYXRvcic7XG5pbXBvcnQge1xuICAgIGNyZWF0ZURlZmF1bHRHZW9tZXRyeSxcbiAgICBjcmVhdGVUZXh0RWxlbWVudCxcbiAgICBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMsXG4gICAgZ2V0VGV4dFNoYXBlUHJvcGVydHksXG4gICAgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyLFxuICAgIGdldFRleHRSZWN0YW5nbGUsXG4gICAgaW5zZXJ0RWxlbWVudCxcbiAgICBnZXREZWZhdWx0R2VvbWV0cnlUZXh0XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERyYXdQb2ludGVyVHlwZSwgZ2V0R2VvbWV0cnlQb2ludGVycyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIG5vcm1hbGl6ZVNoYXBlUG9pbnRzLFxuICAgIGlzRG5kTW9kZSxcbiAgICBpc0RyYXdpbmdNb2RlLFxuICAgIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50LFxuICAgIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQsXG4gICAgVGV4dE1hbmFnZVxufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGlzS2V5SG90a2V5IH0gZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IGdldFNuYXBSZXNpemluZ1JlZiB9IGZyb20gJy4uL3V0aWxzL3NuYXAtcmVzaXppbmcnO1xuaW1wb3J0IHsgVGFibGVHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RhYmxlLmdlbmVyYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFrZUNyZWF0ZVRleHRSZWYge1xuICAgIGc6IFNWR0dFbGVtZW50O1xuICAgIHRleHRNYW5hZ2U6IFRleHRNYW5hZ2U7XG59XG5cbmNvbnN0IGlzR2VvbWV0cnlEbmRNb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgZ2VvbWV0cnlQb2ludGVycyA9IGdldEdlb21ldHJ5UG9pbnRlcnMoKTtcbiAgICBjb25zdCBpc0dlb21ldHJ5UG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGdlb21ldHJ5UG9pbnRlcnMpO1xuICAgIGNvbnN0IGRuZE1vZGUgPSBpc0dlb21ldHJ5UG9pbnRlciAmJiBpc0RuZE1vZGUoYm9hcmQpO1xuICAgIHJldHVybiBkbmRNb2RlO1xufTtcblxuY29uc3QgaXNHZW9tZXRyeURyYXdpbmdNb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgZ2VvbWV0cnlQb2ludGVycyA9IGdldEdlb21ldHJ5UG9pbnRlcnMoKTtcbiAgICBjb25zdCBpc0dlb21ldHJ5UG9pbnRlciA9IFBsYWl0Qm9hcmQuaXNJblBvaW50ZXIoYm9hcmQsIGdlb21ldHJ5UG9pbnRlcnMpO1xuICAgIGNvbnN0IGRyYXdpbmdNb2RlID0gaXNHZW9tZXRyeVBvaW50ZXIgJiYgaXNEcmF3aW5nTW9kZShib2FyZCk7XG4gICAgcmV0dXJuIGRyYXdpbmdNb2RlO1xufTtcblxuY29uc3QgZ2V0R2VvbWV0cnlHZW5lcmF0b3JCeVNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzaGFwZTogRHJhd1BvaW50ZXJUeXBlKSA9PiB7XG4gICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNVTUxDbGFzc09ySW50ZXJmYWNlKHsgc2hhcGU6IHNoYXBlIH0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVHZW5lcmF0b3I8UGxhaXRHZW9tZXRyeT4oYm9hcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgR2VvbWV0cnlTaGFwZUdlbmVyYXRvcihib2FyZCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHdpdGhHZW9tZXRyeUNyZWF0ZUJ5RHJhZyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgcG9pbnRlclVwIH0gPSBib2FyZDtcblxuICAgIGxldCBnZW9tZXRyeVNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCB0ZW1wb3JhcnlFbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBsZXQgZmFrZUNyZWF0ZVRleHRSZWY6IEZha2VDcmVhdGVUZXh0UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGdlb21ldHJ5U2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUcgPSBjcmVhdGVHKCk7XG5cbiAgICAgICAgY29uc3QgZ2VvbWV0cnlQb2ludGVycyA9IGdldEdlb21ldHJ5UG9pbnRlcnMoKTtcbiAgICAgICAgY29uc3QgaXNHZW9tZXRyeVBvaW50ZXIgPSBQbGFpdEJvYXJkLmlzSW5Qb2ludGVyKGJvYXJkLCBnZW9tZXRyeVBvaW50ZXJzKTtcbiAgICAgICAgY29uc3QgZHJhZ01vZGUgPSBpc0dlb21ldHJ5UG9pbnRlciAmJiBpc0RuZE1vZGUoYm9hcmQpO1xuICAgICAgICBjb25zdCBtb3ZpbmdQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBwb2ludGVyID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBEcmF3UG9pbnRlclR5cGU7XG4gICAgICAgIGNvbnN0IGdlb21ldHJ5R2VuZXJhdG9yID0gZ2V0R2VvbWV0cnlHZW5lcmF0b3JCeVNoYXBlKGJvYXJkLCBwb2ludGVyKTtcbiAgICAgICAgaWYgKGRyYWdNb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1vcml6ZWRMYXRlc3QgPSBnZXRNZW1vcml6ZWRMYXRlc3RCeVBvaW50ZXIocG9pbnRlcik7XG4gICAgICAgICAgICBpZiAocG9pbnRlciA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0VGV4dFNoYXBlUHJvcGVydHkoYm9hcmQsIGdldERlZmF1bHRHZW9tZXRyeVRleHQoYm9hcmQpLCBtZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChtb3ZpbmdQb2ludCwgcHJvcGVydHkud2lkdGgsIHByb3BlcnR5LmhlaWdodClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRlbXBvcmFyeUVsZW1lbnQgPSBjcmVhdGVUZXh0RWxlbWVudChib2FyZCwgcG9pbnRzLCBnZXREZWZhdWx0R2VvbWV0cnlUZXh0KGJvYXJkKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFmYWtlQ3JlYXRlVGV4dFJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gbmV3IFRleHRNYW5hZ2UoYm9hcmQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRUZXh0UmVjdGFuZ2xlKHRlbXBvcmFyeUVsZW1lbnQhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRleHRNYW5hZ2UuZHJhdyh0ZW1wb3JhcnlFbGVtZW50IS50ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWYgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnOiBjcmVhdGVHKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmQoZmFrZUNyZWF0ZVRleHRSZWYuZyk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VDcmVhdGVUZXh0UmVmLmcuYXBwZW5kKHRleHRNYW5hZ2UuZyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWYudGV4dE1hbmFnZS51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWYuZy5hcHBlbmQoZmFrZUNyZWF0ZVRleHRSZWYudGV4dE1hbmFnZS5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldERlZmF1bHRHZW9tZXRyeVBvaW50cyhwb2ludGVyLCBtb3ZpbmdQb2ludCk7XG4gICAgICAgICAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IGNyZWF0ZURlZmF1bHRHZW9tZXRyeShib2FyZCwgcG9pbnRzLCBwb2ludGVyIGFzIEdlb21ldHJ5U2hhcGVzKTtcbiAgICAgICAgICAgICAgICBnZW9tZXRyeUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0ZW1wb3JhcnlFbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIGdlb21ldHJ5U2hhcGVHKTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoZ2VvbWV0cnlTaGFwZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoaXNHZW9tZXRyeURuZE1vZGUoYm9hcmQpICYmIHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoaXNHZW9tZXRyeURuZE1vZGUoYm9hcmQpICYmIHRlbXBvcmFyeUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGluc2VydEVsZW1lbnQoYm9hcmQsIHRlbXBvcmFyeUVsZW1lbnQpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWY/LnRleHRNYW5hZ2UuZGVzdHJveSgpO1xuICAgICAgICAgICAgZmFrZUNyZWF0ZVRleHRSZWY/LmcucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlQ3JlYXRlVGV4dFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IG51bGw7XG4gICAgICAgIGdlb21ldHJ5U2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUcgPSBudWxsO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3Qgd2l0aEdlb21ldHJ5Q3JlYXRlQnlEcmF3aW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIHBvaW50ZXJVcCwga2V5RG93biwga2V5VXAgfSA9IGJvYXJkO1xuICAgIGxldCBzdGFydDogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCBnZW9tZXRyeVNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxldCB0ZW1wb3JhcnlFbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuXG4gICAgbGV0IHNuYXBHOiBTVkdHRWxlbWVudCB8IG51bGw7XG5cbiAgICBib2FyZC5rZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlzU2hpZnQgPSBpc0tleUhvdGtleSgnc2hpZnQnLCBldmVudCk7XG4gICAgICAgIGtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlVcCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgICAgIGtleVVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiYgaXNHZW9tZXRyeURyYXdpbmdNb2RlKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIHN0YXJ0ID0gcG9pbnQ7XG4gICAgICAgICAgICBjb25zdCBwb2ludGVyID0gUGxhaXRCb2FyZC5nZXRQb2ludGVyKGJvYXJkKSBhcyBEcmF3UG9pbnRlclR5cGU7XG4gICAgICAgICAgICBpZiAocG9pbnRlciA9PT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihwb2ludGVyKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGdldFRleHRTaGFwZVByb3BlcnR5KGJvYXJkLCBnZXREZWZhdWx0R2VvbWV0cnlUZXh0KGJvYXJkKSwgbWVtb3JpemVkTGF0ZXN0LnRleHRQcm9wZXJ0aWVzWydmb250LXNpemUnXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldFBvaW50cyhSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludCwgcHJvcGVydHkud2lkdGgsIHByb3BlcnR5LmhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gY3JlYXRlVGV4dEVsZW1lbnQoYm9hcmQsIHBvaW50cywgZ2V0RGVmYXVsdEdlb21ldHJ5VGV4dChib2FyZCkpO1xuICAgICAgICAgICAgICAgIGluc2VydEVsZW1lbnQoYm9hcmQsIHRleHRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGdlb21ldHJ5U2hhcGVHPy5yZW1vdmUoKTtcbiAgICAgICAgZ2VvbWV0cnlTaGFwZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IG1vdmluZ1BvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSBQbGFpdEJvYXJkLmdldFBvaW50ZXIoYm9hcmQpIGFzIERyYXdQb2ludGVyVHlwZTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnlHZW5lcmF0b3IgPSBnZXRHZW9tZXRyeUdlbmVyYXRvckJ5U2hhcGUoYm9hcmQsIHBvaW50ZXIpO1xuXG4gICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGlzR2VvbWV0cnlEcmF3aW5nTW9kZShib2FyZCkpIHtcbiAgICAgICAgICAgIGxldCBwb2ludHM6IFtQb2ludCwgUG9pbnRdID0gbm9ybWFsaXplU2hhcGVQb2ludHMoW3N0YXJ0LCBtb3ZpbmdQb2ludF0sIGlzU2hpZnQpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG4gICAgICAgICAgICBjb25zdCBbeCwgeV0gPSBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KHN0YXJ0LCBtb3ZpbmdQb2ludCk7XG4gICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmID0gZ2V0U25hcFJlc2l6aW5nUmVmKGJvYXJkLCBbXSwge1xuICAgICAgICAgICAgICAgIHJlc2l6ZVBvaW50czogcG9pbnRzLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb25GYWN0b3JzOiBbZ2V0RGlyZWN0aW9uRmFjdG9yQnlEaXJlY3Rpb25Db21wb25lbnQoeCksIGdldERpcmVjdGlvbkZhY3RvckJ5RGlyZWN0aW9uQ29tcG9uZW50KHkpXSxcbiAgICAgICAgICAgICAgICBpc0FzcGVjdFJhdGlvOiBpc1NoaWZ0LFxuICAgICAgICAgICAgICAgIGlzRnJvbUNvcm5lcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0NyZWF0ZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzbmFwRyA9IHJlc2l6ZVNuYXBSZWYuc25hcEc7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuICAgICAgICAgICAgcG9pbnRzID0gbm9ybWFsaXplU2hhcGVQb2ludHMocmVzaXplU25hcFJlZi5hY3RpdmVQb2ludHMgYXMgW1BvaW50LCBQb2ludF0sIGlzU2hpZnQpO1xuICAgICAgICAgICAgdGVtcG9yYXJ5RWxlbWVudCA9IGNyZWF0ZURlZmF1bHRHZW9tZXRyeShib2FyZCwgcG9pbnRzLCBwb2ludGVyIGFzIEdlb21ldHJ5U2hhcGVzKTtcbiAgICAgICAgICAgIGdlb21ldHJ5R2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRlbXBvcmFyeUVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgZ2VvbWV0cnlTaGFwZUcpO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50VG9wSG9zdChib2FyZCkuYXBwZW5kKGdlb21ldHJ5U2hhcGVHKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc0dlb21ldHJ5RHJhd2luZ01vZGUoYm9hcmQpICYmIHN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0ISwgdGFyZ2V0UG9pbnRdKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmh5cG90KHdpZHRoLCBoZWlnaHQpIDwgOCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBQbGFpdEJvYXJkLmdldFBvaW50ZXIoYm9hcmQpIGFzIERyYXdQb2ludGVyVHlwZTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRlciAhPT0gQmFzaWNTaGFwZXMudGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBnZXREZWZhdWx0R2VvbWV0cnlQb2ludHMocG9pbnRlciwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gY3JlYXRlRGVmYXVsdEdlb21ldHJ5KGJvYXJkLCBwb2ludHMsIHBvaW50ZXIgYXMgR2VvbWV0cnlTaGFwZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0RWxlbWVudChib2FyZCwgdGVtcG9yYXJ5RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBnZW9tZXRyeVNoYXBlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBnZW9tZXRyeVNoYXBlRyA9IG51bGw7XG4gICAgICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgICAgICB0ZW1wb3JhcnlFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|
|
@@ -1,28 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PlaitBoard, RectangleClient, Transforms, isSelectedElement, getSelectedElements, hasValidAngle, } from '@plait/core';
|
|
2
2
|
import { getIndexByResizeHandle, isCornerHandle, withResize, normalizeShapePoints } from '@plait/common';
|
|
3
3
|
import { getCellsWithPoints, updateColumns, updateRows } from '../utils/table';
|
|
4
4
|
import { getHitRectangleResizeHandleRef } from '../utils/position/geometry';
|
|
5
5
|
import { getResizeOriginPointAndHandlePoint, getResizeZoom, movePointByZoomAndOriginPoint } from './with-draw-resize';
|
|
6
6
|
import { getSnapResizingRef, getSnapResizingRefOptions } from '../utils/snap-resizing';
|
|
7
7
|
import { PlaitDrawElement } from '../interfaces';
|
|
8
|
-
import {
|
|
8
|
+
import { isSingleSelectTable } from '../utils';
|
|
9
9
|
const MIN_CELL_SIZE = 20;
|
|
10
10
|
export function withTableResize(board) {
|
|
11
11
|
let snapG;
|
|
12
12
|
const options = {
|
|
13
13
|
key: 'draw-table',
|
|
14
14
|
canResize: () => {
|
|
15
|
-
|
|
15
|
+
const selectedElements = getSelectedElements(board);
|
|
16
|
+
return isSingleSelectTable(board) && !hasValidAngle(selectedElements[0]);
|
|
16
17
|
},
|
|
17
18
|
hitTest: (point) => {
|
|
18
|
-
const
|
|
19
|
+
const selectedElements = getSelectedElements(board);
|
|
20
|
+
const hitElement = selectedElements[0];
|
|
21
|
+
// debugGenerator.clear();
|
|
19
22
|
if (hitElement && PlaitDrawElement.isElementByTable(hitElement)) {
|
|
20
23
|
let rectangle = board.getRectangle(hitElement);
|
|
24
|
+
// debugGenerator.drawRectangle(board, rectangle);
|
|
25
|
+
// debugGenerator.drawCircles(board, [point], 5);
|
|
21
26
|
let handleRef = getHitRectangleResizeHandleRef(board, rectangle, point, hitElement.angle);
|
|
22
27
|
if (handleRef) {
|
|
23
28
|
const selectElement = isSelectedElement(board, hitElement);
|
|
24
|
-
if ((selectElement &&
|
|
25
|
-
(!selectElement && !isCornerHandle(board, handleRef.handle))) {
|
|
29
|
+
if ((selectElement && isSingleSelectTable(board)) || (!selectElement && !isCornerHandle(board, handleRef.handle))) {
|
|
26
30
|
return {
|
|
27
31
|
element: hitElement,
|
|
28
32
|
handle: handleRef.handle,
|
|
@@ -128,4 +132,4 @@ export function withTableResize(board) {
|
|
|
128
132
|
withResize(board, options);
|
|
129
133
|
return board;
|
|
130
134
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdGFibGUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQVMsZUFBZSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0SCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLGNBQWMsRUFLZCxVQUFVLEVBRVYsb0JBQW9CLEVBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLGFBQWEsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNeEQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBRXpCLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBc0I7SUFDbEQsSUFBSSxLQUF5QixDQUFDO0lBRTlCLE1BQU0sT0FBTyxHQUF3RTtRQUNqRixHQUFHLEVBQUUsWUFBWTtRQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3RCLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxL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QUM7NEJBQ2QsT0FBTztnQ0FDSCxHQUFHLElBQUk7Z0NBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDOzZCQUN6RSxDQUFDO3dCQUNOLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdGLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUMsU0FBc0UsRUFBRSxFQUFFO1lBQ3BGLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLENBQUM7S0FDSixDQUFDO0lBRUYsVUFBVSxDQUFtRCxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0UsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEhpdEVsZW1lbnRCeVBvaW50LCBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBUcmFuc2Zvcm1zLCBpc1NlbGVjdGVkRWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0QmFzZVRhYmxlLCBQbGFpdFRhYmxlQm9hcmQsIFBsYWl0VGFibGVDZWxsV2l0aFBvaW50cyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHtcbiAgICBnZXRJbmRleEJ5UmVzaXplSGFuZGxlLFxuICAgIGlzQ29ybmVySGFuZGxlLFxuICAgIFJlc2l6ZU9wdGlvbnMsXG4gICAgUmVzaXplSGFuZGxlLFxuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICB3aXRoUmVzaXplLFxuICAgIFdpdGhSZXNpemVPcHRpb25zLFxuICAgIG5vcm1hbGl6ZVNoYXBlUG9pbnRzXG59IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0Q2VsbHNXaXRoUG9pbnRzLCB1cGRhdGVDb2x1bW5zLCB1cGRhdGVSb3dzIH0gZnJvbSAnLi4vdXRpbHMvdGFibGUnO1xuaW1wb3J0IHsgZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmIH0gZnJvbSAnLi4vdXRpbHMvcG9zaXRpb24vZ2VvbWV0cnknO1xuaW1wb3J0IHsgZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludCwgZ2V0UmVzaXplWm9vbSwgbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQgfSBmcm9tICcuL3dpdGgtZHJhdy1yZXNpemUnO1xuaW1wb3J0IHsgZ2V0U25hcFJlc2l6aW5nUmVmLCBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvc25hcC1yZXNpemluZyc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpc1NpbmdsZVNlbGVjdEVsZW1lbnRCeVRhYmxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgVGFibGVSZXNpemVPcHRpb25zIGV4dGVuZHMgUmVzaXplT3B0aW9ucyB7XG4gICAgY2VsbDogUGxhaXRUYWJsZUNlbGxXaXRoUG9pbnRzO1xufVxuXG5jb25zdCBNSU5fQ0VMTF9TSVpFID0gMjA7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVGFibGVSZXNpemUoYm9hcmQ6IFBsYWl0VGFibGVCb2FyZCkge1xuICAgIGxldCBzbmFwRzogU1ZHR0VsZW1lbnQgfCBudWxsO1xuXG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXRCYXNlVGFibGUsIFJlc2l6ZUhhbmRsZSwgVGFibGVSZXNpemVPcHRpb25zPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy10YWJsZScsXG4gICAgICAgIGNhblJlc2l6ZTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlY3RhbmdsZSA9IGJvYXJkLmdldFJlY3RhbmdsZShoaXRFbGVtZW50KSBhcyBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgcmVjdGFuZ2xlLCBwb2ludCwgaGl0RWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gaXNTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGhpdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0RWxlbWVudCAmJiBpc1NpbmdsZVNlbGVjdEVsZW1lbnRCeVRhYmxlKGJvYXJkKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICghc2VsZWN0RWxlbWVudCAmJiAhaXNDb3JuZXJIYW5kbGUoYm9hcmQsIGhhbmRsZVJlZi5oYW5kbGUpKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogaGl0RWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU6IGhhbmRsZVJlZi5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yQ2xhc3M6IGhhbmRsZVJlZi5jdXJzb3JDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsc1dpdGhQb2ludHMoYm9hcmQsIGhpdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGNlbGxzW2ldLnBvaW50cyk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgcmVjdGFuZ2xlLCBwb2ludCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVSZWYgJiYgIWlzQ29ybmVySGFuZGxlKGJvYXJkLCBoYW5kbGVSZWYuaGFuZGxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBoaXRFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGw6IGNlbGxzW2ldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChyZXNpemVSZWYub3B0aW9ucz8uY2VsbCAmJiByZXNpemVSZWYucmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBnZXRJbmRleEJ5UmVzaXplSGFuZGxlKHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50IH0gPSBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50KGJvYXJkLCBoYW5kbGVJbmRleCwgcmVzaXplUmVmLnJlY3RhbmdsZSEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVBvaW50czogW1BvaW50LCBQb2ludF0gPSBbcmVzaXplU3RhdGUuc3RhcnRQb2ludCwgcmVzaXplU3RhdGUuZW5kUG9pbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgeFpvb20sIHlab29tIH0gPSBnZXRSZXNpemVab29tKHJlc2l6ZVBvaW50cywgb3JpZ2luUG9pbnQsIGhhbmRsZVBvaW50LCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpblBvaW50cyA9IHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsLnBvaW50cztcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludHMgPSBvcmlnaW5Qb2ludHMubWFwKChwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgeFpvb20sIHlab29tKTtcbiAgICAgICAgICAgICAgICB9KSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRYID0gdGFyZ2V0UG9pbnRzWzFdWzBdIC0gb3JpZ2luUG9pbnRzWzFdWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSB0YXJnZXRQb2ludHNbMV1bMV0gLSBvcmlnaW5Qb2ludHNbMV1bMV07XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0YXJnZXRQb2ludHNbMV1bMF0gLSB0YXJnZXRQb2ludHNbMF1bMF07XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGFyZ2V0UG9pbnRzWzFdWzFdIC0gdGFyZ2V0UG9pbnRzWzBdWzFdO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXRYICE9PSAwICYmIHdpZHRoID49IE1JTl9DRUxMX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb2x1bW5zLCBwb2ludHMgfSA9IHVwZGF0ZUNvbHVtbnMocmVzaXplUmVmLmVsZW1lbnQsIHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsLmNvbHVtbklkLCB3aWR0aCwgb2Zmc2V0WCk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBjb2x1bW5zLCBwb2ludHMgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvZmZzZXRZICE9PSAwICYmIGhlaWdodCA+PSBNSU5fQ0VMTF9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcm93cywgcG9pbnRzIH0gPSB1cGRhdGVSb3dzKHJlc2l6ZVJlZi5lbGVtZW50LCByZXNpemVSZWYub3B0aW9ucz8uY2VsbC5yb3dJZCwgaGVpZ2h0LCBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHJvd3MsIHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRnJvbUNvcm5lciA9IGlzQ29ybmVySGFuZGxlKGJvYXJkLCByZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FzcGVjdFJhdGlvID0gcmVzaXplU3RhdGUuaXNTaGlmdDtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGdldEluZGV4QnlSZXNpemVIYW5kbGUocmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZk9wdGlvbnMgPSBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICBib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgcmVzaXplUmVmLFxuICAgICAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb2ludFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpc0FzcGVjdFJhdGlvLFxuICAgICAgICAgICAgICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZVNuYXBSZWYgPSBnZXRTbmFwUmVzaXppbmdSZWYoYm9hcmQsIFtyZXNpemVSZWYuZWxlbWVudF0sIHJlc2l6ZVNuYXBSZWZPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBzbmFwRyA9IHJlc2l6ZVNuYXBSZWYuc25hcEc7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50VG9wSG9zdChib2FyZCkuYXBwZW5kKHNuYXBHKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSByZXNpemVTbmFwUmVmLmFjdGl2ZVBvaW50cyBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5Qb2ludHMgPSByZXNpemVSZWYuZWxlbWVudC5wb2ludHM7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luUmVjdCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhvcmlnaW5Qb2ludHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRXaWR0aCA9IHRhcmdldFJlY3Qud2lkdGggLSBvcmlnaW5SZWN0LndpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldEhlaWdodCA9IHRhcmdldFJlY3QuaGVpZ2h0IC0gb3JpZ2luUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQuY29sdW1uc107XG4gICAgICAgICAgICAgICAgbGV0IHJvd3MgPSBbLi4ucmVzaXplUmVmLmVsZW1lbnQucm93c107XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldFdpZHRoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaXRlbS53aWR0aCArIG9mZnNldFdpZHRoICogKGl0ZW0ud2lkdGggLyBvcmlnaW5SZWN0LndpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvZmZzZXRIZWlnaHQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ICsgb2Zmc2V0SGVpZ2h0ICogKGl0ZW0uaGVpZ2h0IC8gb3JpZ2luUmVjdC5oZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50czogbm9ybWFsaXplU2hhcGVQb2ludHMocG9pbnRzKSwgY29sdW1ucywgcm93cyB9LCBwYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdEJhc2VUYWJsZSwgUmVzaXplSGFuZGxlLCBUYWJsZVJlc2l6ZU9wdGlvbnM+KSA9PiB7XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBzbmFwRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdEJhc2VUYWJsZSwgUmVzaXplSGFuZGxlLCBUYWJsZVJlc2l6ZU9wdGlvbnM+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS1yZXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtdGFibGUtcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBRVYsZUFBZSxFQUNmLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGFBQWEsR0FDaEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNILHNCQUFzQixFQUN0QixjQUFjLEVBS2QsVUFBVSxFQUVWLG9CQUFvQixFQUN2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsYUFBYSxFQUNiLDZCQUE2QixFQUNoQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFTL0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBRXpCLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBc0I7SUFDbEQsSUFBSSxLQUF5QixDQUFDO0lBRTlCLE1BQU0sT0FBTyxHQUF3RTtRQUNqRixHQUFHLEVBQUUsWUFBWTtRQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1osTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFB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QUFDOzZCQUNwRSxDQUFDO3dCQUNOLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNkLE9BQU87Z0NBQ0gsR0FBRyxJQUFJO2dDQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQzs2QkFDekUsQ0FBQzt3QkFDTixDQUFDO3dCQUNELE9BQU8sSUFBSSxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RixDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsRUFBRSxDQUFDLFNBQXNFLEVBQUUsRUFBRTtZQUNwRixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO0tBQ0osQ0FBQztJQUVGLFVBQVUsQ0FBbUQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdFLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgaXNTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBoYXNWYWxpZEFuZ2xlLFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUJvYXJkLCBQbGFpdFRhYmxlQ2VsbFdpdGhQb2ludHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7XG4gICAgZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZSxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICBSZXNpemVPcHRpb25zLFxuICAgIFJlc2l6ZUhhbmRsZSxcbiAgICBSZXNpemVSZWYsXG4gICAgUmVzaXplU3RhdGUsXG4gICAgd2l0aFJlc2l6ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBub3JtYWxpemVTaGFwZVBvaW50c1xufSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldENlbGxzV2l0aFBvaW50cywgdXBkYXRlQ29sdW1ucywgdXBkYXRlUm93cyB9IGZyb20gJy4uL3V0aWxzL3RhYmxlJztcbmltcG9ydCB7IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZiB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2dlb21ldHJ5JztcbmltcG9ydCB7XG4gICAgZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludCxcbiAgICBnZXRSZXNpemVab29tLFxuICAgIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50XG59IGZyb20gJy4vd2l0aC1kcmF3LXJlc2l6ZSc7XG5pbXBvcnQgeyBnZXRTbmFwUmVzaXppbmdSZWYsIGdldFNuYXBSZXNpemluZ1JlZk9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9zbmFwLXJlc2l6aW5nJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzU2luZ2xlU2VsZWN0VGFibGUgfSBmcm9tICcuLi91dGlscyc7XG5cbi8vIGNvbnN0IGRlYnVnS2V5ID0gJ2RlYnVnOnBsYWl0OnRhYmxlOnJlc2l6ZSc7XG4vLyBjb25zdCBkZWJ1Z0dlbmVyYXRvciA9IGNyZWF0ZURlYnVnR2VuZXJhdG9yKGRlYnVnS2V5KTtcblxuaW50ZXJmYWNlIFRhYmxlUmVzaXplT3B0aW9ucyBleHRlbmRzIFJlc2l6ZU9wdGlvbnMge1xuICAgIGNlbGw6IFBsYWl0VGFibGVDZWxsV2l0aFBvaW50cztcbn1cblxuY29uc3QgTUlOX0NFTExfU0laRSA9IDIwO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRhYmxlUmVzaXplKGJvYXJkOiBQbGFpdFRhYmxlQm9hcmQpIHtcbiAgICBsZXQgc25hcEc6IFNWR0dFbGVtZW50IHwgbnVsbDtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFdpdGhSZXNpemVPcHRpb25zPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4gPSB7XG4gICAgICAgIGtleTogJ2RyYXctdGFibGUnLFxuICAgICAgICBjYW5SZXNpemU6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIHJldHVybiBpc1NpbmdsZVNlbGVjdFRhYmxlKGJvYXJkKSAmJiAhaGFzVmFsaWRBbmdsZShzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgICAgICAvLyBkZWJ1Z0dlbmVyYXRvci5jbGVhcigpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlY3RhbmdsZSA9IGJvYXJkLmdldFJlY3RhbmdsZShoaXRFbGVtZW50KSBhcyBSZWN0YW5nbGVDbGllbnQ7XG4gICAgICAgICAgICAgICAgLy8gZGVidWdHZW5lcmF0b3IuZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAvLyBkZWJ1Z0dlbmVyYXRvci5kcmF3Q2lyY2xlcyhib2FyZCwgW3BvaW50XSwgNSk7XG4gICAgICAgICAgICAgICAgbGV0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgcmVjdGFuZ2xlLCBwb2ludCwgaGl0RWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gaXNTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGhpdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHNlbGVjdEVsZW1lbnQgJiYgaXNTaW5nbGVTZWxlY3RUYWJsZShib2FyZCkpIHx8ICghc2VsZWN0RWxlbWVudCAmJiAhaXNDb3JuZXJIYW5kbGUoYm9hcmQsIGhhbmRsZVJlZi5oYW5kbGUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBoaXRFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZTogaGFuZGxlUmVmLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RhbmdsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldENlbGxzV2l0aFBvaW50cyhib2FyZCwgaGl0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY2VsbHNbaV0ucG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVmID0gZ2V0SGl0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmKGJvYXJkLCByZWN0YW5nbGUsIHBvaW50LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZVJlZiAmJiAhaXNDb3JuZXJIYW5kbGUoYm9hcmQsIGhhbmRsZVJlZi5oYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGhpdEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBoYW5kbGVSZWYuY3Vyc29yQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbDogY2VsbHNbaV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8UGxhaXRCYXNlVGFibGUsIFJlc2l6ZUhhbmRsZSwgVGFibGVSZXNpemVPcHRpb25zPiwgcmVzaXplU3RhdGU6IFJlc2l6ZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgcmVzaXplUmVmLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsICYmIHJlc2l6ZVJlZi5yZWN0YW5nbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJbmRleCA9IGdldEluZGV4QnlSZXNpemVIYW5kbGUocmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplUG9pbnRzOiBbUG9pbnQsIFBvaW50XSA9IFtyZXNpemVTdGF0ZS5zdGFydFBvaW50LCByZXNpemVTdGF0ZS5lbmRQb2ludF07XG4gICAgICAgICAgICAgICAgY29uc3QgeyB4Wm9vbSwgeVpvb20gfSA9IGdldFJlc2l6ZVpvb20ocmVzaXplUG9pbnRzLCBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luUG9pbnRzID0gcmVzaXplUmVmLm9wdGlvbnM/LmNlbGwucG9pbnRzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50cyA9IG9yaWdpblBvaW50cy5tYXAoKHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCB4Wm9vbSwgeVpvb20pO1xuICAgICAgICAgICAgICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSB0YXJnZXRQb2ludHNbMV1bMF0gLSBvcmlnaW5Qb2ludHNbMV1bMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IHRhcmdldFBvaW50c1sxXVsxXSAtIG9yaWdpblBvaW50c1sxXVsxXTtcbiAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRhcmdldFBvaW50c1sxXVswXSAtIHRhcmdldFBvaW50c1swXVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0YXJnZXRQb2ludHNbMV1bMV0gLSB0YXJnZXRQb2ludHNbMF1bMV07XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldFggIT09IDAgJiYgd2lkdGggPj0gTUlOX0NFTExfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbHVtbnMsIHBvaW50cyB9ID0gdXBkYXRlQ29sdW1ucyhyZXNpemVSZWYuZWxlbWVudCwgcmVzaXplUmVmLm9wdGlvbnM/LmNlbGwuY29sdW1uSWQsIHdpZHRoLCBvZmZzZXRYKTtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGNvbHVtbnMsIHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9mZnNldFkgIT09IDAgJiYgaGVpZ2h0ID49IE1JTl9DRUxMX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByb3dzLCBwb2ludHMgfSA9IHVwZGF0ZVJvd3MocmVzaXplUmVmLmVsZW1lbnQsIHJlc2l6ZVJlZi5vcHRpb25zPy5jZWxsLnJvd0lkLCBoZWlnaHQsIG9mZnNldFkpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcm93cywgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGcm9tQ29ybmVyID0gaXNDb3JuZXJIYW5kbGUoYm9hcmQsIHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQXNwZWN0UmF0aW8gPSByZXNpemVTdGF0ZS5pc1NoaWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID0gZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZShyZXNpemVSZWYuaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG9yaWdpblBvaW50LCBoYW5kbGVQb2ludCB9ID0gZ2V0UmVzaXplT3JpZ2luUG9pbnRBbmRIYW5kbGVQb2ludChib2FyZCwgaGFuZGxlSW5kZXgsIHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmT3B0aW9ucyA9IGdldFNuYXBSZXNpemluZ1JlZk9wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgICAgICByZXNpemVSZWYsXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBvaW50XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGlzQXNwZWN0UmF0aW8sXG4gICAgICAgICAgICAgICAgICAgIGlzRnJvbUNvcm5lclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZiA9IGdldFNuYXBSZXNpemluZ1JlZihib2FyZCwgW3Jlc2l6ZVJlZi5lbGVtZW50XSwgcmVzaXplU25hcFJlZk9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHNuYXBHID0gcmVzaXplU25hcFJlZi5zbmFwRztcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IHJlc2l6ZVNuYXBSZWYuYWN0aXZlUG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpblBvaW50cyA9IHJlc2l6ZVJlZi5lbGVtZW50LnBvaW50cztcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5SZWN0ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKG9yaWdpblBvaW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFdpZHRoID0gdGFyZ2V0UmVjdC53aWR0aCAtIG9yaWdpblJlY3Qud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gdGFyZ2V0UmVjdC5oZWlnaHQgLSBvcmlnaW5SZWN0LmhlaWdodDtcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1ucyA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICBsZXQgcm93cyA9IFsuLi5yZXNpemVSZWYuZWxlbWVudC5yb3dzXTtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0V2lkdGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpdGVtLndpZHRoICsgb2Zmc2V0V2lkdGggKiAoaXRlbS53aWR0aCAvIG9yaWdpblJlY3Qud2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldEhlaWdodCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3dzID0gcm93cy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgKyBvZmZzZXRIZWlnaHQgKiAoaXRlbS5oZWlnaHQgLyBvcmlnaW5SZWN0LmhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiBub3JtYWxpemVTaGFwZVBvaW50cyhwb2ludHMpLCBjb2x1bW5zLCByb3dzIH0sIHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZnRlclJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4pID0+IHtcbiAgICAgICAgICAgIHNuYXBHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHNuYXBHID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB3aXRoUmVzaXplPFBsYWl0QmFzZVRhYmxlLCBSZXNpemVIYW5kbGUsIFRhYmxlUmVzaXplT3B0aW9ucz4oYm9hcmQsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { TableComponent } from '../table.component';
|
|
2
|
-
import { PlaitBoard, RectangleClient, isLineHitRectangle, toViewBoxPoint, toHostPoint, getHitElementByPoint, getSelectedElements, PlaitPointerType, isDragging, isMainPointer } from '@plait/core';
|
|
2
|
+
import { PlaitBoard, RectangleClient, isLineHitRectangle, toViewBoxPoint, toHostPoint, getHitElementByPoint, getSelectedElements, PlaitPointerType, isDragging, isMainPointer, distanceBetweenPointAndPoint, HIT_DISTANCE_BUFFER } from '@plait/core';
|
|
3
3
|
import { editCell, getHitCell } from '../utils/table';
|
|
4
4
|
import { withTableResize } from './with-table-resize';
|
|
5
5
|
import { isVirtualKey, isDelete, isSpaceHotkey } from '@plait/common';
|
|
6
6
|
import { PlaitDrawElement } from '../interfaces';
|
|
7
7
|
import { getSelectedCells, getSelectedTableElements, isSingleSelectTable, setSelectedCells } from '../utils';
|
|
8
|
+
import { TableEngine } from '../engines/table/table';
|
|
8
9
|
export const withTable = (board) => {
|
|
9
10
|
const tableBoard = board;
|
|
10
11
|
const { drawElement, getRectangle, isRectangleHit, isHit, isMovable, dblClick, keyDown, pointerUp } = tableBoard;
|
|
@@ -17,7 +18,9 @@ export const withTable = (board) => {
|
|
|
17
18
|
tableBoard.isHit = (element, point, isStrict) => {
|
|
18
19
|
if (PlaitDrawElement.isElementByTable(element)) {
|
|
19
20
|
const client = RectangleClient.getRectangleByPoints(element.points);
|
|
20
|
-
|
|
21
|
+
const nearestPoint = TableEngine.getNearestPoint(client, point);
|
|
22
|
+
const distance = distanceBetweenPointAndPoint(nearestPoint[0], nearestPoint[1], point[0], point[1]);
|
|
23
|
+
return distance <= HIT_DISTANCE_BUFFER || RectangleClient.isPointInRectangle(client, point);
|
|
21
24
|
}
|
|
22
25
|
return isHit(element, point, isStrict);
|
|
23
26
|
};
|
|
@@ -54,9 +57,9 @@ export const withTable = (board) => {
|
|
|
54
57
|
event.preventDefault();
|
|
55
58
|
if (PlaitDrawElement.isElementByTable(targetElement)) {
|
|
56
59
|
const cells = getSelectedCells(targetElement);
|
|
57
|
-
let cell = targetElement.cells.find(item => item.text && item.textHeight);
|
|
60
|
+
let cell = targetElement.cells.find((item) => item.text && item.textHeight);
|
|
58
61
|
if (cells?.length) {
|
|
59
|
-
cell = cells.find(item => item.text && item.textHeight);
|
|
62
|
+
cell = cells.find((item) => item.text && item.textHeight);
|
|
60
63
|
}
|
|
61
64
|
if (cell) {
|
|
62
65
|
editCell(board, cell);
|
|
@@ -103,4 +106,4 @@ export const withTable = (board) => {
|
|
|
103
106
|
};
|
|
104
107
|
return withTableResize(tableBoard);
|
|
105
108
|
};
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0csTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQXdCLENBQUM7SUFFNUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFakgsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUM1RCxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENB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QUFDO1lBQ3pDLENBQUM7UUFDTCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUF1QixFQUFFLEVBQUU7UUFDaEQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhaXRCYXNlVGFibGUsIFBsYWl0VGFibGVCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBTZWxlY3Rpb24sXG4gICAgaXNMaW5lSGl0UmVjdGFuZ2xlLFxuICAgIHRvVmlld0JveFBvaW50LFxuICAgIHRvSG9zdFBvaW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBpc0RyYWdnaW5nLFxuICAgIGlzTWFpblBvaW50ZXJcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZWRpdENlbGwsIGdldEhpdENlbGwgfSBmcm9tICcuLi91dGlscy90YWJsZSc7XG5pbXBvcnQgeyB3aXRoVGFibGVSZXNpemUgfSBmcm9tICcuL3dpdGgtdGFibGUtcmVzaXplJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSwgaXNEZWxldGUsIGlzU3BhY2VIb3RrZXkgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNlbGVjdGVkQ2VsbHMsIGdldFNlbGVjdGVkVGFibGVFbGVtZW50cywgaXNTaW5nbGVTZWxlY3RUYWJsZSwgc2V0U2VsZWN0ZWRDZWxscyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IHdpdGhUYWJsZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlQm9hcmQgPSBib2FyZCBhcyBQbGFpdFRhYmxlQm9hcmQ7XG5cbiAgICBjb25zdCB7IGRyYXdFbGVtZW50LCBnZXRSZWN0YW5nbGUsIGlzUmVjdGFuZ2xlSGl0LCBpc0hpdCwgaXNNb3ZhYmxlLCBkYmxDbGljaywga2V5RG93biwgcG9pbnRlclVwIH0gPSB0YWJsZUJvYXJkO1xuXG4gICAgdGFibGVCb2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIFRhYmxlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5pc0hpdCA9IChlbGVtZW50LCBwb2ludCwgaXNTdHJpY3Q/OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShjbGllbnQsIHBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNNb3ZhYmxlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNSZWN0YW5nbGVIaXQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmZvY3VzXSk7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGNsaWVudCksIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5rZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGFibGVCb2FyZCkgJiZcbiAgICAgICAgICAgICFpc1ZpcnR1YWxLZXkoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNEZWxldGUoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNTcGFjZUhvdGtleShldmVudCkgJiZcbiAgICAgICAgICAgIGlzU2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNlbGwgPSB0YXJnZXRFbGVtZW50LmNlbGxzLmZpbmQoaXRlbSA9PiBpdGVtLnRleHQgJiYgaXRlbS50ZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjZWxsID0gY2VsbHMuZmluZChpdGVtID0+IGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0Q2VsbChib2FyZCwgY2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuZGJsQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgaGl0RWxlbWVudCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgICAgICBpZiAoaGl0RWxlbWVudCAmJiBQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoaGl0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoaXRDZWxsID0gZ2V0SGl0Q2VsbCh0YWJsZUJvYXJkLCBoaXRFbGVtZW50LCBwb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKGhpdENlbGwgJiYgaGl0Q2VsbC50ZXh0ICYmIGhpdENlbGwudGV4dEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBlZGl0Q2VsbChib2FyZCwgaGl0Q2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGJsQ2xpY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0U2VsZWN0aW9uUG9pbnRlciA9XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcih0YWJsZUJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgfHwgUGxhaXRCb2FyZC5pc1BvaW50ZXIodGFibGVCb2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcodGFibGVCb2FyZCkgfHwgIWlzU2V0U2VsZWN0aW9uUG9pbnRlcjtcbiAgICAgICAgaWYgKGlzU2tpcCkge1xuICAgICAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTaW5nbGVTZWxlY3RUYWJsZSh0YWJsZUJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludCh0YWJsZUJvYXJkLCB0b0hvc3RQb2ludCh0YWJsZUJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZ2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnRzKHRhYmxlQm9hcmQpWzBdO1xuICAgICAgICAgICAgY29uc3QgaGl0Q2VsbCA9IGdldEhpdENlbGwodGFibGVCb2FyZCwgZWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdENlbGwgJiYgaGl0Q2VsbC50ZXh0ICYmIGhpdENlbGwudGV4dEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2VsbHMoZWxlbWVudCwgW2hpdENlbGxdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmJ1aWxkVGFibGUgPSAoZWxlbWVudDogUGxhaXRCYXNlVGFibGUpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoVGFibGVSZXNpemUodGFibGVCb2FyZCk7XG59O1xuIl19
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUNILFVBQVUsRUFHVixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGFBQWEsRUFDYiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFvQixtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQXdCLENBQUM7SUFFNUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFakgsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFD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VUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEYsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hELGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNMLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtRQUNoRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFNlbGVjdGlvbixcbiAgICBpc0xpbmVIaXRSZWN0YW5nbGUsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGlzRHJhZ2dpbmcsXG4gICAgaXNNYWluUG9pbnRlcixcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIEhJVF9ESVNUQU5DRV9CVUZGRVJcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZWRpdENlbGwsIGdldEhpdENlbGwgfSBmcm9tICcuLi91dGlscy90YWJsZSc7XG5pbXBvcnQgeyB3aXRoVGFibGVSZXNpemUgfSBmcm9tICcuL3dpdGgtdGFibGUtcmVzaXplJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSwgaXNEZWxldGUsIGlzU3BhY2VIb3RrZXkgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNlbGVjdGVkQ2VsbHMsIGdldFNlbGVjdGVkVGFibGVFbGVtZW50cywgaXNIaXRFZGdlT2ZTaGFwZSwgaXNTaW5nbGVTZWxlY3RUYWJsZSwgc2V0U2VsZWN0ZWRDZWxscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lcy90YWJsZS90YWJsZSc7XG5cbmV4cG9ydCBjb25zdCB3aXRoVGFibGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB0YWJsZUJvYXJkID0gYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkO1xuXG4gICAgY29uc3QgeyBkcmF3RWxlbWVudCwgZ2V0UmVjdGFuZ2xlLCBpc1JlY3RhbmdsZUhpdCwgaXNIaXQsIGlzTW92YWJsZSwgZGJsQ2xpY2ssIGtleURvd24sIHBvaW50ZXJVcCB9ID0gdGFibGVCb2FyZDtcblxuICAgIHRhYmxlQm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNIaXQgPSAoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0PzogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgY29uc3QgbmVhcmVzdFBvaW50ID0gVGFibGVFbmdpbmUuZ2V0TmVhcmVzdFBvaW50KGNsaWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KG5lYXJlc3RQb2ludFswXSwgbmVhcmVzdFBvaW50WzFdLCBwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlIDw9IEhJVF9ESVNUQU5DRV9CVUZGRVIgfHwgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShjbGllbnQsIHBvaW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQoZWxlbWVudCwgcG9pbnQsIGlzU3RyaWN0KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5nZXRSZWN0YW5nbGUgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNNb3ZhYmxlID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc01vdmFibGUoZWxlbWVudCk7XG4gICAgfTtcblxuICAgIHRhYmxlQm9hcmQuaXNSZWN0YW5nbGVIaXQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50LCBzZWxlY3Rpb246IFNlbGVjdGlvbikgPT4ge1xuICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZVJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmZvY3VzXSk7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGluZUhpdFJlY3RhbmdsZShSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGNsaWVudCksIHJhbmdlUmVjdGFuZ2xlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN0YW5nbGVIaXQoZWxlbWVudCwgc2VsZWN0aW9uKTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5rZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaXNTaW5nbGVTZWxlY3Rpb24gPSBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpICYmXG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGFibGVCb2FyZCkgJiZcbiAgICAgICAgICAgICFpc1ZpcnR1YWxLZXkoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNEZWxldGUoZXZlbnQpICYmXG4gICAgICAgICAgICAhaXNTcGFjZUhvdGtleShldmVudCkgJiZcbiAgICAgICAgICAgIGlzU2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUodGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNlbGwgPSB0YXJnZXRFbGVtZW50LmNlbGxzLmZpbmQoKGl0ZW0pID0+IGl0ZW0udGV4dCAmJiBpdGVtLnRleHRIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGlmIChjZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwgPSBjZWxscy5maW5kKChpdGVtKSA9PiBpdGVtLnRleHQgJiYgaXRlbS50ZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICB0YWJsZUJvYXJkLmRibENsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0VsZW1lbnRCeVRhYmxlKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0Q2VsbCA9IGdldEhpdENlbGwodGFibGVCb2FyZCwgaGl0RWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdENlbGwoYm9hcmQsIGhpdENlbGwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRibENsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIodGFibGVCb2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKHRhYmxlQm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgIGNvbnN0IGlzU2tpcCA9ICFpc01haW5Qb2ludGVyKGV2ZW50KSB8fCBpc0RyYWdnaW5nKHRhYmxlQm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2luZ2xlU2VsZWN0VGFibGUodGFibGVCb2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGFibGVCb2FyZCwgdG9Ib3N0UG9pbnQodGFibGVCb2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGdldFNlbGVjdGVkVGFibGVFbGVtZW50cyh0YWJsZUJvYXJkKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGhpdENlbGwgPSBnZXRIaXRDZWxsKHRhYmxlQm9hcmQsIGVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChoaXRDZWxsICYmIGhpdENlbGwudGV4dCAmJiBoaXRDZWxsLnRleHRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENlbGxzKGVsZW1lbnQsIFtoaXRDZWxsXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgdGFibGVCb2FyZC5idWlsZFRhYmxlID0gKGVsZW1lbnQ6IFBsYWl0QmFzZVRhYmxlKSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH07XG5cbiAgICByZXR1cm4gd2l0aFRhYmxlUmVzaXplKHRhYmxlQm9hcmQpO1xufTtcbiJdfQ==
|
|
@@ -137,9 +137,8 @@ export class TableComponent extends CommonElementFlavour {
|
|
|
137
137
|
}
|
|
138
138
|
else {
|
|
139
139
|
const hasSameSelected = value.selected === previous.selected;
|
|
140
|
-
const hasSameHandleState = this.activeGenerator.options.hasResizeHandle() === this.activeGenerator.hasResizeHandle;
|
|
141
140
|
const currentSelectedCells = getSelectedCells(value.element);
|
|
142
|
-
if (!hasSameSelected ||
|
|
141
|
+
if (!hasSameSelected || currentSelectedCells?.length || value.selected) {
|
|
143
142
|
this.activeGenerator.processDrawing(value.element, PlaitBoard.getActiveHost(this.board), {
|
|
144
143
|
selected: this.selected
|
|
145
144
|
});
|
|
@@ -160,4 +159,4 @@ export class TableComponent extends CommonElementFlavour {
|
|
|
160
159
|
this.lineAutoCompleteGenerator.destroy();
|
|
161
160
|
}
|
|
162
161
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBbUIsb0JBQW9CLEVBQXdCLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQStDLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEcsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ25CLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFakcsTUFBTSxPQUFPLGNBQXFDLFNBQVEsb0JBQW1DO0lBU3pGO1FB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N0QsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLGtCQUFrQixJQUFJLG9CQUFvQixFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzVGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3JGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDMUIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5RixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE9BQU87UUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWQsXG4gICAgQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgc2V0QW5nbGVGb3JHLFxuICAgIGRlZ3JlZXNUb1JhZGlhbnNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yLCBDb21tb25FbGVtZW50Rmxhdm91ciwgVGV4dE1hbmFnZUNoYW5nZURhdGEsIGNyZWF0ZUFjdGl2ZUdlbmVyYXRvciwgaGFzUmVzaXplSGFuZGxlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBQbGFpdFRhYmxlLCBQbGFpdFRhYmxlQm9hcmQsIFBsYWl0VGFibGVDZWxsLCBQbGFpdFRhYmxlRWxlbWVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy90YWJsZSc7XG5pbXBvcnQgeyBEcmF3VGV4dEluZm8sIFRleHRHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvdGV4dC5nZW5lcmF0b3InO1xuaW1wb3J0IHsgVGFibGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvdGFibGUuZ2VuZXJhdG9yJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IGdldENlbGxXaXRoUG9pbnRzLCBnZXRUZXh0TWFuYWdlQnlDZWxsLCBpc0NlbGxJbmNsdWRlVGV4dCB9IGZyb20gJy4vdXRpbHMvdGFibGUnO1xuaW1wb3J0IHtcbiAgICBjbGVhclNlbGVjdGVkQ2VsbHMsXG4gICAgZ2V0Q2VsbHNSZWN0YW5nbGUsXG4gICAgZ2V0U2VsZWN0ZWRDZWxscyxcbiAgICBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCxcbiAgICBtZW1vcml6ZUxhdGVzdFRleHQsXG4gICAgc2V0U2VsZWN0ZWRDZWxsc1xufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4vZW5naW5lcyc7XG5pbXBvcnQgeyBUYWJsZVN5bWJvbHMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0SG9yaXpvbnRhbFRleHRSZWN0YW5nbGUgfSBmcm9tICcuL2VuZ2luZXMvdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgU2hhcGVEZWZhdWx0U3BhY2UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgUGxhaXRUYWJsZT4gZXh0ZW5kcyBDb21tb25FbGVtZW50Rmxhdm91cjxULCBQbGFpdEJvYXJkPiBpbXBsZW1lbnRzIE9uQ29udGV4dENoYW5nZWQ8VCwgUGxhaXRCb2FyZD4ge1xuICAgIGFjdGl2ZUdlbmVyYXRvciE6IEFjdGl2ZUdlbmVyYXRvcjxUPjtcblxuICAgIHRhYmxlR2VuZXJhdG9yITogVGFibGVHZW5lcmF0b3I8VD47XG5cbiAgICB0ZXh0R2VuZXJhdG9yITogVGV4dEdlbmVyYXRvcjxUPjtcblxuICAgIGxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IhOiBBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3I8UGxhaXRUYWJsZT47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplR2VuZXJhdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvciA9IGNyZWF0ZUFjdGl2ZUdlbmVyYXRvcjxUPih0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICBnZXRTdHJva2VXaWR0aDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFN0cm9rZU9wYWNpdHk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICh2YWx1ZTogVCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldENlbGxzUmVjdGFuZ2xlKHRoaXMuYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkLCB0aGlzLmVsZW1lbnQsIGNlbGxzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyh2YWx1ZS5wb2ludHMhKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IGdldFNlbGVjdGVkQ2VsbHModGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNSZXNpemVIYW5kbGUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IgPSBuZXcgVGFibGVHZW5lcmF0b3I8VD4odGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yID0gbmV3IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS5hZGRHZW5lcmF0b3IoQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmtleSwgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS51cGRhdGVBY3RpdmVTZWN0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5kcmF3KCk7XG4gICAgfVxuXG4gICAgZHJhdygpIHtcbiAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5kcmF3KHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgIHRoaXMucm90YXRlVmVydGljYWxUZXh0KCk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcm90YXRlVmVydGljYWxUZXh0KCkge1xuICAgICAgICBjb25zdCB0YWJsZSA9ICh0aGlzLmJvYXJkIGFzIFBsYWl0VGFibGVCb2FyZCkuYnVpbGRUYWJsZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB0YWJsZS5jZWxscy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoUGxhaXRUYWJsZUVsZW1lbnQuaXNWZXJ0aWNhbFRleHQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZUJ5Q2VsbCh0aGlzLmJvYXJkLCBpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dE1hbmFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmU8UGxhaXRUYWJsZT4oVGFibGVTeW1ib2xzLnRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZW5naW5lLmdldFRleHRSZWN0YW5nbGUhKHRoaXMuZWxlbWVudCwgeyBpZDogaXRlbS5pZCwgYm9hcmQ6IHRoaXMuYm9hcmQgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRleHRNYW5hZ2UuZy5jbGFzc0xpc3QuYWRkKCd2ZXJ0aWNhbC1jZWxsLXRleHQnKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0QW5nbGVGb3JHKHRleHRNYW5hZ2UuZywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3RhbmdsZSksIGRlZ3JlZXNUb1JhZGlhbnMoLTkwKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREcmF3U2hhcGVUZXh0cyhjZWxsczogUGxhaXRUYWJsZUNlbGxbXSk6IERyYXdUZXh0SW5mb1tdIHtcbiAgICAgICAgcmV0dXJuIGNlbGxzXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpc0NlbGxJbmNsdWRlVGV4dChpdGVtKSlcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0ISxcbiAgICAgICAgICAgICAgICAgICAgdGV4dEhlaWdodDogaXRlbS50ZXh0SGVpZ2h0ISxcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQ6IHRoaXMuYm9hcmRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IHRleHRzID0gdGhpcy5nZXREcmF3U2hhcGVUZXh0cyh0aGlzLmVsZW1lbnQuY2VsbHMpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgPSBuZXcgVGV4dEdlbmVyYXRvcih0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHRleHRzLCB7XG4gICAgICAgICAgICBvbkNoYW5nZTogKHZhbHVlOiBQbGFpdFRhYmxlLCBkYXRhOiBUZXh0TWFuYWdlQ2hhbmdlRGF0YSwgdGV4dDogRHJhd1RleHRJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLm5ld1RleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGFibGVUZXh0KHRoaXMuYm9hcmQsIHBhdGgsIHRleHQuaWQsIGRhdGEubmV3VGV4dCwgZGF0YS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhLm9wZXJhdGlvbnMgJiYgbWVtb3JpemVMYXRlc3RUZXh0KHZhbHVlLCBkYXRhLm9wZXJhdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlbmRlclJlY3RhbmdsZTogKHZhbHVlOiBQbGFpdFRhYmxlLCB0ZXh0OiBEcmF3VGV4dEluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0gZ2V0Q2VsbFdpdGhQb2ludHModGhpcy5ib2FyZCwgdmFsdWUsIHRleHQuaWQpO1xuICAgICAgICAgICAgICAgIGlmIChQbGFpdFRhYmxlRWxlbWVudC5pc1ZlcnRpY2FsVGV4dChjZWxsKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGNlbGwucG9pbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChjZWxsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBjZWxsLnRleHRIZWlnaHQgfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gY2VsbFJlY3RhbmdsZS5oZWlnaHQgLSBTaGFwZURlZmF1bHRTcGFjZS5yZWN0YW5nbGVBbmRUZXh0ICogMiAtIHN0cm9rZVdpZHRoICogMjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgPiAwID8gaGVpZ2h0IDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGNlbGxSZWN0YW5nbGUueCArIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKyBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGNlbGxSZWN0YW5nbGUueSArIChjZWxsUmVjdGFuZ2xlLmhlaWdodCAtIGhlaWdodCkgLyAyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEhvcml6b250YWxUZXh0UmVjdGFuZ2xlKGNlbGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZCh2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxULCBQbGFpdEJvYXJkPiwgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8VCwgUGxhaXRCb2FyZD4pIHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgdmFsdWUuaGFzVGhlbWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1NlbGVjdGVkQ2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHByZXZpb3VzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzU2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJTZWxlY3RlZENlbGxzKHByZXZpb3VzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2VsbHModmFsdWUuZWxlbWVudCwgcHJldmlvdXNTZWxlY3RlZENlbGxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodmFsdWUuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHZhbHVlLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwgeyBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVGV4dHMgPSB0aGlzLmdldERyYXdTaGFwZVRleHRzKHByZXZpb3VzLmVsZW1lbnQuY2VsbHMpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRleHRzID0gdGhpcy5nZXREcmF3U2hhcGVUZXh0cyh2YWx1ZS5lbGVtZW50LmNlbGxzKTtcbiAgICAgICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci51cGRhdGUodmFsdWUuZWxlbWVudCwgcHJldmlvdXNUZXh0cywgY3VycmVudFRleHRzLCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5yb3RhdGVWZXJ0aWNhbFRleHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVTZWxlY3RlZCA9IHZhbHVlLnNlbGVjdGVkID09PSBwcmV2aW91cy5zZWxlY3RlZDtcbiAgICAgICAgICAgIGNvbnN0IGhhc1NhbWVIYW5kbGVTdGF0ZSA9IHRoaXMuYWN0aXZlR2VuZXJhdG9yLm9wdGlvbnMuaGFzUmVzaXplSGFuZGxlKCkgPT09IHRoaXMuYWN0aXZlR2VuZXJhdG9yLmhhc1Jlc2l6ZUhhbmRsZTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZENlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh2YWx1ZS5lbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzU2FtZVNlbGVjdGVkIHx8ICFoYXNTYW1lSGFuZGxlU3RhdGUgfHwgY3VycmVudFNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCB2YWx1ZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHZhbHVlLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJTZWxlY3RlZENlbGxzKHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBbUIsb0JBQW9CLEVBQXdCLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQStDLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEcsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ25CLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFakcsTUFBTSxPQUFPLGNBQXFDLFNBQVEsb0JBQW1DO0lBU3pGO1FB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QUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDckYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7WUFDUCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTztRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBzZXRBbmdsZUZvckcsXG4gICAgZGVncmVlc1RvUmFkaWFuc1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmVHZW5lcmF0b3IsIENvbW1vbkVsZW1lbnRGbGF2b3VyLCBUZXh0TWFuYWdlQ2hhbmdlRGF0YSwgY3JlYXRlQWN0aXZlR2VuZXJhdG9yLCBoYXNSZXNpemVIYW5kbGUgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0VGFibGUsIFBsYWl0VGFibGVCb2FyZCwgUGxhaXRUYWJsZUNlbGwsIFBsYWl0VGFibGVFbGVtZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IERyYXdUZXh0SW5mbywgVGV4dEdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy90ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBUYWJsZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy90YWJsZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0Q2VsbFdpdGhQb2ludHMsIGdldFRleHRNYW5hZ2VCeUNlbGwsIGlzQ2VsbEluY2x1ZGVUZXh0IH0gZnJvbSAnLi91dGlscy90YWJsZSc7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0ZWRDZWxscyxcbiAgICBnZXRDZWxsc1JlY3RhbmdsZSxcbiAgICBnZXRTZWxlY3RlZENlbGxzLFxuICAgIGdldFN0cm9rZVdpZHRoQnlFbGVtZW50LFxuICAgIG1lbW9yaXplTGF0ZXN0VGV4dCxcbiAgICBzZXRTZWxlY3RlZENlbGxzXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0RW5naW5lIH0gZnJvbSAnLi9lbmdpbmVzJztcbmltcG9ydCB7IFRhYmxlU3ltYm9scyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRIb3Jpem9udGFsVGV4dFJlY3RhbmdsZSB9IGZyb20gJy4vZW5naW5lcy90YWJsZS90YWJsZSc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9hcnJvdy1saW5lLWF1dG8tY29tcGxldGUuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBQbGFpdFRhYmxlPiBleHRlbmRzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFQsIFBsYWl0Qm9hcmQ+IGltcGxlbWVudHMgT25Db250ZXh0Q2hhbmdlZDxULCBQbGFpdEJvYXJkPiB7XG4gICAgYWN0aXZlR2VuZXJhdG9yITogQWN0aXZlR2VuZXJhdG9yPFQ+O1xuXG4gICAgdGFibGVHZW5lcmF0b3IhOiBUYWJsZUdlbmVyYXRvcjxUPjtcblxuICAgIHRleHRHZW5lcmF0b3IhOiBUZXh0R2VuZXJhdG9yPFQ+O1xuXG4gICAgbGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciE6IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcjxQbGFpdFRhYmxlPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVHZW5lcmF0b3IoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yID0gY3JlYXRlQWN0aXZlR2VuZXJhdG9yPFQ+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFDVElWRV9TVFJPS0VfV0lEVEg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlT3BhY2l0eTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q2VsbHNSZWN0YW5nbGUodGhpcy5ib2FyZCBhcyBQbGFpdFRhYmxlQm9hcmQsIHRoaXMuZWxlbWVudCwgY2VsbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHZhbHVlLnBvaW50cyEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChjZWxscz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Jlc2l6ZUhhbmRsZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvciA9IG5ldyBUYWJsZUdlbmVyYXRvcjxUPih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplVGV4dE1hbmFnZSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgPSBuZXcgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3Iua2V5LCB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IpO1xuICAgICAgICB0aGlzLmdldFJlZigpLnVwZGF0ZUFjdGl2ZVNlY3Rpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICB9XG5cbiAgICBkcmF3KCkge1xuICAgICAgICB0aGlzLnRhYmxlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yLmRyYXcodGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy5yb3RhdGVWZXJ0aWNhbFRleHQoKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByb3RhdGVWZXJ0aWNhbFRleHQoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gKHRoaXMuYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkKS5idWlsZFRhYmxlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRhYmxlLmNlbGxzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChQbGFpdFRhYmxlRWxlbWVudC5pc1ZlcnRpY2FsVGV4dChpdGVtKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHRNYW5hZ2UgPSBnZXRUZXh0TWFuYWdlQnlDZWxsKHRoaXMuYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0TWFuYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZ2luZSA9IGdldEVuZ2luZTxQbGFpdFRhYmxlPihUYWJsZVN5bWJvbHMudGFibGUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBlbmdpbmUuZ2V0VGV4dFJlY3RhbmdsZSEodGhpcy5lbGVtZW50LCB7IGlkOiBpdGVtLmlkLCBib2FyZDogdGhpcy5ib2FyZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZS5nLmNsYXNzTGlzdC5hZGQoJ3ZlcnRpY2FsLWNlbGwtdGV4dCcpO1xuICAgICAgICAgICAgICAgICAgICBzZXRBbmdsZUZvckcodGV4dE1hbmFnZS5nLCBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVjdGFuZ2xlKSwgZGVncmVlc1RvUmFkaWFucygtOTApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERyYXdTaGFwZVRleHRzKGNlbGxzOiBQbGFpdFRhYmxlQ2VsbFtdKTogRHJhd1RleHRJbmZvW10ge1xuICAgICAgICByZXR1cm4gY2VsbHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGlzQ2VsbEluY2x1ZGVUZXh0KGl0ZW0pKVxuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQhLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0SGVpZ2h0OiBpdGVtLnRleHRIZWlnaHQhLFxuICAgICAgICAgICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplVGV4dE1hbmFnZSgpIHtcbiAgICAgICAgY29uc3QgdGV4dHMgPSB0aGlzLmdldERyYXdTaGFwZVRleHRzKHRoaXMuZWxlbWVudC5jZWxscyk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvciA9IG5ldyBUZXh0R2VuZXJhdG9yKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgdGV4dHMsIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAodmFsdWU6IFBsYWl0VGFibGUsIGRhdGE6IFRleHRNYW5hZ2VDaGFuZ2VEYXRhLCB0ZXh0OiBEcmF3VGV4dEluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aCh0aGlzLmJvYXJkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEubmV3VGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUYWJsZVRleHQodGhpcy5ib2FyZCwgcGF0aCwgdGV4dC5pZCwgZGF0YS5uZXdUZXh0LCBkYXRhLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEub3BlcmF0aW9ucyAmJiBtZW1vcml6ZUxhdGVzdFRleHQodmFsdWUsIGRhdGEub3BlcmF0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UmVuZGVyUmVjdGFuZ2xlOiAodmFsdWU6IFBsYWl0VGFibGUsIHRleHQ6IERyYXdUZXh0SW5mbykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsV2l0aFBvaW50cyh0aGlzLmJvYXJkLCB2YWx1ZSwgdGV4dC5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKFBsYWl0VGFibGVFbGVtZW50LmlzVmVydGljYWxUZXh0KGNlbGwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoY2VsbC5wb2ludHMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IGNlbGwudGV4dEhlaWdodCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjZWxsUmVjdGFuZ2xlLmhlaWdodCAtIFNoYXBlRGVmYXVsdFNwYWNlLnJlY3RhbmdsZUFuZFRleHQgKiAyIC0gc3Ryb2tlV2lkdGggKiAyO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCA+IDAgPyBoZWlnaHQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogY2VsbFJlY3RhbmdsZS54ICsgU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dCArIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogY2VsbFJlY3RhbmdsZS55ICsgKGNlbGxSZWN0YW5nbGUuaGVpZ2h0IC0gaGVpZ2h0KSAvIDJcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SG9yaXpvbnRhbFRleHRSZWN0YW5nbGUoY2VsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFQsIFBsYWl0Qm9hcmQ+LCBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxULCBQbGFpdEJvYXJkPikge1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gcHJldmlvdXMuZWxlbWVudCB8fCB2YWx1ZS5oYXNUaGVtZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWRDZWxscyA9IGdldFNlbGVjdGVkQ2VsbHMocHJldmlvdXMuZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNTZWxlY3RlZENlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjbGVhclNlbGVjdGVkQ2VsbHMocHJldmlvdXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRDZWxscyh2YWx1ZS5lbGVtZW50LCBwcmV2aW91c1NlbGVjdGVkQ2VsbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50YWJsZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh2YWx1ZS5lbGVtZW50LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodmFsdWUuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7IHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNUZXh0cyA9IHRoaXMuZ2V0RHJhd1NoYXBlVGV4dHMocHJldmlvdXMuZWxlbWVudC5jZWxscyk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGV4dHMgPSB0aGlzLmdldERyYXdTaGFwZVRleHRzKHZhbHVlLmVsZW1lbnQuY2VsbHMpO1xuICAgICAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yLnVwZGF0ZSh2YWx1ZS5lbGVtZW50LCBwcmV2aW91c1RleHRzLCBjdXJyZW50VGV4dHMsIHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgICAgICB0aGlzLnJvdGF0ZVZlcnRpY2FsVGV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaGFzU2FtZVNlbGVjdGVkID0gdmFsdWUuc2VsZWN0ZWQgPT09IHByZXZpb3VzLnNlbGVjdGVkO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkQ2VsbHMgPSBnZXRTZWxlY3RlZENlbGxzKHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFoYXNTYW1lU2VsZWN0ZWQgfHwgY3VycmVudFNlbGVjdGVkQ2VsbHM/Lmxlbmd0aCB8fCB2YWx1ZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHZhbHVlLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJTZWxlY3RlZENlbGxzKHZhbHVlLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFibGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|