@plait/draw 0.77.2 → 0.78.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/plait-draw.mjs +21 -14
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -3
- package/transforms/image.d.ts +6 -0
- package/utils/hit.d.ts +1 -1
- package/esm2022/arrow-line.component.mjs +0 -165
- package/esm2022/constants/default.mjs +0 -7
- package/esm2022/constants/geometry.mjs +0 -272
- package/esm2022/constants/image.mjs +0 -2
- package/esm2022/constants/index.mjs +0 -9
- package/esm2022/constants/line.mjs +0 -12
- package/esm2022/constants/pointer.mjs +0 -23
- package/esm2022/constants/swimlane.mjs +0 -25
- package/esm2022/constants/text.mjs +0 -2
- package/esm2022/constants/theme.mjs +0 -28
- package/esm2022/engines/basic-shapes/cloud.mjs +0 -146
- package/esm2022/engines/basic-shapes/comment.mjs +0 -56
- package/esm2022/engines/basic-shapes/cross.mjs +0 -33
- package/esm2022/engines/basic-shapes/diamond.mjs +0 -16
- package/esm2022/engines/basic-shapes/ellipse.mjs +0 -53
- package/esm2022/engines/basic-shapes/hexagon.mjs +0 -27
- package/esm2022/engines/basic-shapes/left-arrow.mjs +0 -30
- package/esm2022/engines/basic-shapes/octagon.mjs +0 -29
- package/esm2022/engines/basic-shapes/parallelogram.mjs +0 -26
- package/esm2022/engines/basic-shapes/pentagon-arrow.mjs +0 -27
- package/esm2022/engines/basic-shapes/pentagon.mjs +0 -30
- package/esm2022/engines/basic-shapes/polygon.mjs +0 -56
- package/esm2022/engines/basic-shapes/process-arrow.mjs +0 -26
- package/esm2022/engines/basic-shapes/rectangle.mjs +0 -26
- package/esm2022/engines/basic-shapes/right-arrow.mjs +0 -28
- package/esm2022/engines/basic-shapes/round-comment.mjs +0 -82
- package/esm2022/engines/basic-shapes/round-rectangle.mjs +0 -58
- package/esm2022/engines/basic-shapes/star.mjs +0 -39
- package/esm2022/engines/basic-shapes/trapezoid.mjs +0 -26
- package/esm2022/engines/basic-shapes/triangle.mjs +0 -34
- package/esm2022/engines/basic-shapes/two-way-arrow.mjs +0 -25
- package/esm2022/engines/flowchart/database.mjs +0 -84
- package/esm2022/engines/flowchart/delay.mjs +0 -44
- package/esm2022/engines/flowchart/display.mjs +0 -74
- package/esm2022/engines/flowchart/document.mjs +0 -81
- package/esm2022/engines/flowchart/hard-disk.mjs +0 -84
- package/esm2022/engines/flowchart/internal-storage.mjs +0 -47
- package/esm2022/engines/flowchart/manual-input.mjs +0 -33
- package/esm2022/engines/flowchart/manual-loop.mjs +0 -26
- package/esm2022/engines/flowchart/merge.mjs +0 -34
- package/esm2022/engines/flowchart/multi-document.mjs +0 -143
- package/esm2022/engines/flowchart/note-curly-left.mjs +0 -86
- package/esm2022/engines/flowchart/note-curly-right.mjs +0 -89
- package/esm2022/engines/flowchart/note-square.mjs +0 -46
- package/esm2022/engines/flowchart/off-page.mjs +0 -32
- package/esm2022/engines/flowchart/or.mjs +0 -20
- package/esm2022/engines/flowchart/predefined-process.mjs +0 -47
- package/esm2022/engines/flowchart/preparation.mjs +0 -27
- package/esm2022/engines/flowchart/stored-data.mjs +0 -79
- package/esm2022/engines/flowchart/summing-junction.mjs +0 -23
- package/esm2022/engines/flowchart/terminal.mjs +0 -68
- package/esm2022/engines/index.mjs +0 -130
- package/esm2022/engines/table/table.mjs +0 -101
- package/esm2022/engines/uml/activity-class.mjs +0 -47
- package/esm2022/engines/uml/actor.mjs +0 -119
- package/esm2022/engines/uml/assembly.mjs +0 -105
- package/esm2022/engines/uml/combined-fragment.mjs +0 -66
- package/esm2022/engines/uml/component-box.mjs +0 -61
- package/esm2022/engines/uml/component.mjs +0 -117
- package/esm2022/engines/uml/container.mjs +0 -44
- package/esm2022/engines/uml/deletion.mjs +0 -54
- package/esm2022/engines/uml/note.mjs +0 -58
- package/esm2022/engines/uml/package.mjs +0 -105
- package/esm2022/engines/uml/provided-interface.mjs +0 -92
- package/esm2022/engines/uml/required-interface.mjs +0 -81
- package/esm2022/engines/uml/template.mjs +0 -47
- package/esm2022/generators/arrow-line-auto-complete.generator.mjs +0 -46
- package/esm2022/generators/arrow-line.generator.mjs +0 -13
- package/esm2022/generators/geometry-shape.generator.mjs +0 -29
- package/esm2022/generators/index.mjs +0 -7
- package/esm2022/generators/line-active.generator.mjs +0 -84
- package/esm2022/generators/single-text.generator.mjs +0 -16
- package/esm2022/generators/table.generator.mjs +0 -25
- package/esm2022/generators/text.generator.mjs +0 -131
- package/esm2022/generators/vector-line-generator.mjs +0 -13
- package/esm2022/geometry.component.mjs +0 -145
- package/esm2022/image.component.mjs +0 -67
- package/esm2022/interfaces/arrow-line.mjs +0 -70
- package/esm2022/interfaces/element.mjs +0 -9
- package/esm2022/interfaces/engine.mjs +0 -2
- package/esm2022/interfaces/geometry.mjs +0 -82
- package/esm2022/interfaces/image.mjs +0 -2
- package/esm2022/interfaces/index.mjs +0 -92
- package/esm2022/interfaces/line.mjs +0 -2
- package/esm2022/interfaces/options.mjs +0 -2
- package/esm2022/interfaces/swimlane.mjs +0 -13
- package/esm2022/interfaces/table.mjs +0 -13
- package/esm2022/interfaces/text.mjs +0 -2
- package/esm2022/interfaces/vector-line.mjs +0 -10
- package/esm2022/plait-draw.mjs +0 -5
- package/esm2022/plugins/with-arrow-line-auto-complete-reaction.mjs +0 -43
- package/esm2022/plugins/with-arrow-line-auto-complete.mjs +0 -76
- package/esm2022/plugins/with-arrow-line-bound-reaction.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-create.mjs +0 -51
- package/esm2022/plugins/with-arrow-line-resize.mjs +0 -158
- package/esm2022/plugins/with-arrow-line-text-move.mjs +0 -53
- package/esm2022/plugins/with-arrow-line-text.mjs +0 -73
- package/esm2022/plugins/with-draw-fragment.mjs +0 -98
- package/esm2022/plugins/with-draw-hotkey.mjs +0 -45
- package/esm2022/plugins/with-draw-resize.mjs +0 -269
- package/esm2022/plugins/with-draw-rotate.mjs +0 -132
- package/esm2022/plugins/with-draw.mjs +0 -144
- package/esm2022/plugins/with-geometry-create.mjs +0 -182
- package/esm2022/plugins/with-swimlane-create.mjs +0 -127
- package/esm2022/plugins/with-swimlane.mjs +0 -21
- package/esm2022/plugins/with-table-resize.mjs +0 -135
- package/esm2022/plugins/with-table.mjs +0 -109
- package/esm2022/plugins/with-vector-line-create.mjs +0 -85
- package/esm2022/plugins/with-vector-line-resize.mjs +0 -61
- package/esm2022/public-api.mjs +0 -11
- package/esm2022/table.component.mjs +0 -162
- package/esm2022/transforms/arrow-line.mjs +0 -66
- package/esm2022/transforms/common.mjs +0 -36
- package/esm2022/transforms/geometry-text.mjs +0 -59
- package/esm2022/transforms/geometry.mjs +0 -43
- package/esm2022/transforms/image.mjs +0 -22
- package/esm2022/transforms/index.mjs +0 -36
- package/esm2022/transforms/multi-text-geometry-text.mjs +0 -15
- package/esm2022/transforms/swimlane.mjs +0 -164
- package/esm2022/transforms/table-text.mjs +0 -44
- package/esm2022/transforms/table.mjs +0 -36
- package/esm2022/transforms/vector-line.mjs +0 -13
- package/esm2022/utils/arrow-line/arrow-line-arrow.mjs +0 -123
- package/esm2022/utils/arrow-line/arrow-line-basic.mjs +0 -205
- package/esm2022/utils/arrow-line/arrow-line-common.mjs +0 -162
- package/esm2022/utils/arrow-line/arrow-line-resize.mjs +0 -309
- package/esm2022/utils/arrow-line/elbow.mjs +0 -114
- package/esm2022/utils/arrow-line/index.mjs +0 -6
- package/esm2022/utils/clipboard.mjs +0 -55
- package/esm2022/utils/common.mjs +0 -184
- package/esm2022/utils/geometry.mjs +0 -178
- package/esm2022/utils/hit.mjs +0 -242
- package/esm2022/utils/index.mjs +0 -17
- package/esm2022/utils/line.mjs +0 -64
- package/esm2022/utils/memorize.mjs +0 -93
- package/esm2022/utils/multi-text-geometry.mjs +0 -61
- package/esm2022/utils/polygon.mjs +0 -30
- package/esm2022/utils/position/arrow-line.mjs +0 -20
- package/esm2022/utils/position/geometry.mjs +0 -30
- package/esm2022/utils/position/line.mjs +0 -51
- package/esm2022/utils/selected.mjs +0 -39
- package/esm2022/utils/shape.mjs +0 -11
- package/esm2022/utils/snap-resizing.mjs +0 -185
- package/esm2022/utils/style/index.mjs +0 -2
- package/esm2022/utils/style/stroke.mjs +0 -21
- package/esm2022/utils/swimlane.mjs +0 -124
- package/esm2022/utils/table-selected.mjs +0 -21
- package/esm2022/utils/table.mjs +0 -172
- package/esm2022/utils/uml.mjs +0 -90
- package/esm2022/utils/vector-line.mjs +0 -71
- package/esm2022/vector-line.component.mjs +0 -55
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { getSelectedElements } from '@plait/core';
|
|
2
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
-
export const isSingleSelectTable = (board) => {
|
|
4
|
-
const selectedElements = getSelectedElements(board);
|
|
5
|
-
return selectedElements && selectedElements.length === 1 && PlaitDrawElement.isElementByTable(selectedElements[0]);
|
|
6
|
-
};
|
|
7
|
-
export const getSelectedTableElements = (board, elements) => {
|
|
8
|
-
const selectedElements = elements?.length ? elements : getSelectedElements(board);
|
|
9
|
-
return selectedElements.filter(value => PlaitDrawElement.isElementByTable(value));
|
|
10
|
-
};
|
|
11
|
-
export const SELECTED_CELLS = new WeakMap();
|
|
12
|
-
export function getSelectedCells(element) {
|
|
13
|
-
return SELECTED_CELLS.get(element);
|
|
14
|
-
}
|
|
15
|
-
export function setSelectedCells(element, cells) {
|
|
16
|
-
return SELECTED_CELLS.set(element, cells);
|
|
17
|
-
}
|
|
18
|
-
export function clearSelectedCells(element) {
|
|
19
|
-
return SELECTED_CELLS.delete(element);
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy90YWJsZS1zZWxlY3RlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsbUJBQW1CLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUNyRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELE9BQU8sZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF5QixFQUFFLEVBQUU7SUFDckYsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQWlCLENBQUM7QUFDdEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFvQyxDQUFDO0FBRTlFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUF1QjtJQUNwRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUF1QixFQUFFLEtBQXVCO0lBQzdFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUF1QjtJQUN0RCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIGdldFNlbGVjdGVkRWxlbWVudHMsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0VGFibGVDZWxsLCBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgUGxhaXREcmF3RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgaXNTaW5nbGVTZWxlY3RUYWJsZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cyAmJiBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUoc2VsZWN0ZWRFbGVtZW50c1swXSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzPy5sZW5ndGggPyBlbGVtZW50cyA6IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIHJldHVybiBzZWxlY3RlZEVsZW1lbnRzLmZpbHRlcih2YWx1ZSA9PiBQbGFpdERyYXdFbGVtZW50LmlzRWxlbWVudEJ5VGFibGUodmFsdWUpKSBhcyBQbGFpdFRhYmxlW107XG59O1xuXG5leHBvcnQgY29uc3QgU0VMRUNURURfQ0VMTFMgPSBuZXcgV2Vha01hcDxQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUNlbGxbXT4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkQ2VsbHMoZWxlbWVudDogUGxhaXRCYXNlVGFibGUpIHtcbiAgICByZXR1cm4gU0VMRUNURURfQ0VMTFMuZ2V0KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U2VsZWN0ZWRDZWxscyhlbGVtZW50OiBQbGFpdEJhc2VUYWJsZSwgY2VsbHM6IFBsYWl0VGFibGVDZWxsW10pIHtcbiAgICByZXR1cm4gU0VMRUNURURfQ0VMTFMuc2V0KGVsZW1lbnQsIGNlbGxzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2VsZWN0ZWRDZWxscyhlbGVtZW50OiBQbGFpdEJhc2VUYWJsZSkge1xuICAgIHJldHVybiBTRUxFQ1RFRF9DRUxMUy5kZWxldGUoZWxlbWVudCk7XG59XG4iXX0=
|
package/esm2022/utils/table.mjs
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { idCreator, RectangleClient } from '@plait/core';
|
|
2
|
-
import { getTextManage } from '../generators/text.generator';
|
|
3
|
-
import { Alignment } from '@plait/common';
|
|
4
|
-
import { TEXT_DEFAULT_HEIGHT } from '@plait/text-plugins';
|
|
5
|
-
import { getSelectedCells, getSelectedTableElements, isSingleSelectTable } from './table-selected';
|
|
6
|
-
export function getCellsWithPoints(board, element) {
|
|
7
|
-
const table = board?.buildTable(element);
|
|
8
|
-
if (!table || !table.points || !table.columns || !table.rows) {
|
|
9
|
-
throw new Error('can not get table cells points');
|
|
10
|
-
}
|
|
11
|
-
const rectangle = RectangleClient.getRectangleByPoints(table.points);
|
|
12
|
-
const columnsCount = table.columns.length;
|
|
13
|
-
const rowsCount = table.rows.length;
|
|
14
|
-
const cellWidths = calculateCellsSize(table.columns, rectangle.width, columnsCount, true);
|
|
15
|
-
const cellHeights = calculateCellsSize(table.rows, rectangle.height, rowsCount, false);
|
|
16
|
-
const cells = table.cells.map(cell => {
|
|
17
|
-
const rowIdx = table.rows.findIndex(row => row.id === cell.rowId);
|
|
18
|
-
const columnIdx = table.columns.findIndex(column => column.id === cell.columnId);
|
|
19
|
-
let cellTopLeftX = rectangle.x;
|
|
20
|
-
for (let i = 0; i < columnIdx; i++) {
|
|
21
|
-
cellTopLeftX += cellWidths[i];
|
|
22
|
-
}
|
|
23
|
-
let cellTopLeftY = rectangle.y;
|
|
24
|
-
for (let i = 0; i < rowIdx; i++) {
|
|
25
|
-
cellTopLeftY += cellHeights[i];
|
|
26
|
-
}
|
|
27
|
-
const cellWidth = calculateCellSize(cell, cellWidths, columnIdx, true);
|
|
28
|
-
const cellBottomRightX = cellTopLeftX + cellWidth;
|
|
29
|
-
const cellHeight = calculateCellSize(cell, cellHeights, rowIdx, false);
|
|
30
|
-
const cellBottomRightY = cellTopLeftY + cellHeight;
|
|
31
|
-
return {
|
|
32
|
-
...cell,
|
|
33
|
-
points: [
|
|
34
|
-
[cellTopLeftX, cellTopLeftY],
|
|
35
|
-
[cellBottomRightX, cellBottomRightY]
|
|
36
|
-
]
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
return cells;
|
|
40
|
-
}
|
|
41
|
-
export function getCellWithPoints(board, table, cellId) {
|
|
42
|
-
try {
|
|
43
|
-
const cells = getCellsWithPoints(board, table);
|
|
44
|
-
const cellIndex = cells && table.cells.findIndex(item => item.id === cellId);
|
|
45
|
-
return cells[cellIndex];
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
throw new Error('can not get table cell points');
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function calculateCellsSize(items, tableSize, count, isWidth) {
|
|
52
|
-
const cellSizes = [];
|
|
53
|
-
const sizeType = isWidth ? 'width' : 'height';
|
|
54
|
-
// The remaining size of the table excluding cells with already set sizes.
|
|
55
|
-
let totalSizeRemaining = tableSize;
|
|
56
|
-
items.forEach((item, index) => {
|
|
57
|
-
if (item[sizeType]) {
|
|
58
|
-
cellSizes[index] = item[sizeType];
|
|
59
|
-
totalSizeRemaining -= item[sizeType];
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
// Divide the remaining size equally.
|
|
63
|
-
const remainingItemCount = count - cellSizes.filter(item => !!item).length;
|
|
64
|
-
const remainingCellSize = remainingItemCount > 0 ? totalSizeRemaining / remainingItemCount : 0;
|
|
65
|
-
for (let i = 0; i < count; i++) {
|
|
66
|
-
if (!cellSizes[i]) {
|
|
67
|
-
cellSizes[i] = remainingCellSize;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return cellSizes;
|
|
71
|
-
}
|
|
72
|
-
function calculateCellSize(cell, sizes, index, isWidth) {
|
|
73
|
-
const span = isWidth ? cell.colspan || 1 : cell.rowspan || 1;
|
|
74
|
-
let size = 0;
|
|
75
|
-
for (let i = 0; i < span; i++) {
|
|
76
|
-
const cellIndex = index + i;
|
|
77
|
-
size += sizes[cellIndex];
|
|
78
|
-
}
|
|
79
|
-
return size;
|
|
80
|
-
}
|
|
81
|
-
export function getHitCell(board, element, point) {
|
|
82
|
-
const table = board.buildTable(element);
|
|
83
|
-
const cells = getCellsWithPoints(board, table);
|
|
84
|
-
const rectangle = RectangleClient.getRectangleByPoints([point, point]);
|
|
85
|
-
const cell = cells.find(item => {
|
|
86
|
-
const cellRectangle = RectangleClient.getRectangleByPoints(item.points);
|
|
87
|
-
return RectangleClient.isHit(rectangle, cellRectangle);
|
|
88
|
-
});
|
|
89
|
-
if (cell) {
|
|
90
|
-
return table.cells.find(item => item.id === cell.id);
|
|
91
|
-
}
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
export function editCell(board, cell) {
|
|
95
|
-
const textManage = getTextManageByCell(board, cell);
|
|
96
|
-
textManage && textManage.edit();
|
|
97
|
-
}
|
|
98
|
-
export function getTextManageByCell(board, cell) {
|
|
99
|
-
return getTextManage(board, undefined, cell);
|
|
100
|
-
}
|
|
101
|
-
export const updateColumns = (table, columnId, width, offset) => {
|
|
102
|
-
const columns = table.columns.map(item => (item.id === columnId ? { ...item, width } : item));
|
|
103
|
-
const points = [table.points[0], [table.points[1][0] + offset, table.points[1][1]]];
|
|
104
|
-
return { columns, points };
|
|
105
|
-
};
|
|
106
|
-
export const updateRows = (table, rowId, height, offset) => {
|
|
107
|
-
const rows = table.rows.map(item => (item.id === rowId ? { ...item, height } : item));
|
|
108
|
-
const points = [table.points[0], [table.points[1][0], table.points[1][1] + offset]];
|
|
109
|
-
return { rows, points };
|
|
110
|
-
};
|
|
111
|
-
export function updateCellIdsByRowOrColumn(cells, oldId, newId, type) {
|
|
112
|
-
const id = `${type}Id`;
|
|
113
|
-
cells.forEach(item => {
|
|
114
|
-
if (item[id] === oldId) {
|
|
115
|
-
item[id] = newId;
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
export function updateRowOrColumnIds(element, type) {
|
|
120
|
-
element[`${type}s`].forEach(item => {
|
|
121
|
-
const newId = idCreator();
|
|
122
|
-
updateCellIdsByRowOrColumn(element.cells, item.id, newId, type);
|
|
123
|
-
item.id = newId;
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
export function updateCellIds(cells) {
|
|
127
|
-
cells.forEach(item => {
|
|
128
|
-
const newId = idCreator();
|
|
129
|
-
item.id = newId;
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
export function isCellIncludeText(cell) {
|
|
133
|
-
return cell.text && cell.textHeight;
|
|
134
|
-
}
|
|
135
|
-
export function getCellsRectangle(board, element, cells) {
|
|
136
|
-
const cellsWithPoints = getCellsWithPoints(board, element);
|
|
137
|
-
const points = cells.map(cell => {
|
|
138
|
-
const cellWithPoints = cellsWithPoints.find(item => item.id === cell.id);
|
|
139
|
-
return cellWithPoints.points;
|
|
140
|
-
});
|
|
141
|
-
return RectangleClient.getRectangleByPoints(points);
|
|
142
|
-
}
|
|
143
|
-
export const createCell = (rowId, columnId, text = null) => {
|
|
144
|
-
const cell = {
|
|
145
|
-
id: idCreator(),
|
|
146
|
-
rowId,
|
|
147
|
-
columnId
|
|
148
|
-
};
|
|
149
|
-
if (text !== null) {
|
|
150
|
-
cell['textHeight'] = TEXT_DEFAULT_HEIGHT;
|
|
151
|
-
cell['text'] = {
|
|
152
|
-
children: [{ text }],
|
|
153
|
-
align: Alignment.center
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
return cell;
|
|
157
|
-
};
|
|
158
|
-
export const getSelectedTableCellsEditor = (board) => {
|
|
159
|
-
if (isSingleSelectTable(board)) {
|
|
160
|
-
const elements = getSelectedTableElements(board);
|
|
161
|
-
const selectedCells = getSelectedCells(elements[0]);
|
|
162
|
-
const selectedCellsEditor = selectedCells?.map(cell => {
|
|
163
|
-
const textManage = getTextManageByCell(board, cell);
|
|
164
|
-
return textManage?.editor;
|
|
165
|
-
});
|
|
166
|
-
if (selectedCellsEditor?.length) {
|
|
167
|
-
return selectedCellsEditor;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return undefined;
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbkcsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWlCLEVBQUUsT0FBdUI7SUFDekUsTUFBTSxLQUFLLEdBQUksS0FBeUIsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMxQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FB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LENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFpQixFQUE0QixFQUFFO0lBQ3ZGLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLG1CQUFtQixHQUFHLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEQsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BELE9BQU8sVUFBVSxFQUFFLE1BQU0sQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksbUJBQW1CLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDOUIsT0FBTyxtQkFBbUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlkQ3JlYXRvciwgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0QmFzZVRhYmxlLCBQbGFpdFRhYmxlLCBQbGFpdFRhYmxlQm9hcmQsIFBsYWl0VGFibGVDZWxsLCBQbGFpdFRhYmxlQ2VsbFdpdGhQb2ludHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IGdldFRleHRNYW5hZ2UgfSBmcm9tICcuLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IEFsaWdubWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgVEVYVF9ERUZBVUxUX0hFSUdIVCB9IGZyb20gJ0BwbGFpdC90ZXh0LXBsdWdpbnMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRDZWxscywgZ2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnRzLCBpc1NpbmdsZVNlbGVjdFRhYmxlIH0gZnJvbSAnLi90YWJsZS1zZWxlY3RlZCc7XG5pbXBvcnQgeyBCYXNlRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbHNXaXRoUG9pbnRzKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdEJhc2VUYWJsZSk6IFBsYWl0VGFibGVDZWxsV2l0aFBvaW50c1tdIHtcbiAgICBjb25zdCB0YWJsZSA9IChib2FyZCBhcyBQbGFpdFRhYmxlQm9hcmQpPy5idWlsZFRhYmxlKGVsZW1lbnQpO1xuICAgIGlmICghdGFibGUgfHwgIXRhYmxlLnBvaW50cyB8fCAhdGFibGUuY29sdW1ucyB8fCAhdGFibGUucm93cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBub3QgZ2V0IHRhYmxlIGNlbGxzIHBvaW50cycpO1xuICAgIH1cbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHModGFibGUucG9pbnRzKTtcbiAgICBjb25zdCBjb2x1bW5zQ291bnQgPSB0YWJsZS5jb2x1bW5zLmxlbmd0aDtcbiAgICBjb25zdCByb3dzQ291bnQgPSB0YWJsZS5yb3dzLmxlbmd0aDtcbiAgICBjb25zdCBjZWxsV2lkdGhzID0gY2FsY3VsYXRlQ2VsbHNTaXplKHRhYmxlLmNvbHVtbnMsIHJlY3RhbmdsZS53aWR0aCwgY29sdW1uc0NvdW50LCB0cnVlKTtcbiAgICBjb25zdCBjZWxsSGVpZ2h0cyA9IGNhbGN1bGF0ZUNlbGxzU2l6ZSh0YWJsZS5yb3dzLCByZWN0YW5nbGUuaGVpZ2h0LCByb3dzQ291bnQsIGZhbHNlKTtcbiAgICBjb25zdCBjZWxsczogUGxhaXRUYWJsZUNlbGxXaXRoUG9pbnRzW10gPSB0YWJsZS5jZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgIGNvbnN0IHJvd0lkeCA9IHRhYmxlLnJvd3MuZmluZEluZGV4KHJvdyA9PiByb3cuaWQgPT09IGNlbGwucm93SWQpO1xuICAgICAgICBjb25zdCBjb2x1bW5JZHggPSB0YWJsZS5jb2x1bW5zLmZpbmRJbmRleChjb2x1bW4gPT4gY29sdW1uLmlkID09PSBjZWxsLmNvbHVtbklkKTtcblxuICAgICAgICBsZXQgY2VsbFRvcExlZnRYID0gcmVjdGFuZ2xlLng7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uSWR4OyBpKyspIHtcbiAgICAgICAgICAgIGNlbGxUb3BMZWZ0WCArPSBjZWxsV2lkdGhzW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNlbGxUb3BMZWZ0WSA9IHJlY3RhbmdsZS55O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0lkeDsgaSsrKSB7XG4gICAgICAgICAgICBjZWxsVG9wTGVmdFkgKz0gY2VsbEhlaWdodHNbaV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjZWxsV2lkdGggPSBjYWxjdWxhdGVDZWxsU2l6ZShjZWxsLCBjZWxsV2lkdGhzLCBjb2x1bW5JZHgsIHRydWUpO1xuICAgICAgICBjb25zdCBjZWxsQm90dG9tUmlnaHRYID0gY2VsbFRvcExlZnRYICsgY2VsbFdpZHRoO1xuXG4gICAgICAgIGNvbnN0IGNlbGxIZWlnaHQgPSBjYWxjdWxhdGVDZWxsU2l6ZShjZWxsLCBjZWxsSGVpZ2h0cywgcm93SWR4LCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IGNlbGxCb3R0b21SaWdodFkgPSBjZWxsVG9wTGVmdFkgKyBjZWxsSGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jZWxsLFxuICAgICAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICAgICAgW2NlbGxUb3BMZWZ0WCwgY2VsbFRvcExlZnRZXSxcbiAgICAgICAgICAgICAgICBbY2VsbEJvdHRvbVJpZ2h0WCwgY2VsbEJvdHRvbVJpZ2h0WV1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjZWxscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGxXaXRoUG9pbnRzKGJvYXJkOiBQbGFpdEJvYXJkLCB0YWJsZTogUGxhaXRCYXNlVGFibGUsIGNlbGxJZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsc1dpdGhQb2ludHMoYm9hcmQgYXMgUGxhaXRUYWJsZUJvYXJkLCB0YWJsZSk7XG4gICAgICAgIGNvbnN0IGNlbGxJbmRleCA9IGNlbGxzICYmIHRhYmxlLmNlbGxzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IGNlbGxJZCk7XG4gICAgICAgIHJldHVybiBjZWxsc1tjZWxsSW5kZXhdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY2FuIG5vdCBnZXQgdGFibGUgY2VsbCBwb2ludHMnKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUNlbGxzU2l6ZShpdGVtczogeyBpZDogc3RyaW5nOyBba2V5OiBzdHJpbmddOiBhbnkgfVtdLCB0YWJsZVNpemU6IG51bWJlciwgY291bnQ6IG51bWJlciwgaXNXaWR0aDogYm9vbGVhbikge1xuICAgIGNvbnN0IGNlbGxTaXplczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBzaXplVHlwZSA9IGlzV2lkdGggPyAnd2lkdGgnIDogJ2hlaWdodCc7XG5cbiAgICAvLyBUaGUgcmVtYWluaW5nIHNpemUgb2YgdGhlIHRhYmxlIGV4Y2x1ZGluZyBjZWxscyB3aXRoIGFscmVhZHkgc2V0IHNpemVzLlxuICAgIGxldCB0b3RhbFNpemVSZW1haW5pbmcgPSB0YWJsZVNpemU7XG5cbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaXRlbVtzaXplVHlwZV0pIHtcbiAgICAgICAgICAgIGNlbGxTaXplc1tpbmRleF0gPSBpdGVtW3NpemVUeXBlXTtcbiAgICAgICAgICAgIHRvdGFsU2l6ZVJlbWFpbmluZyAtPSBpdGVtW3NpemVUeXBlXTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRGl2aWRlIHRoZSByZW1haW5pbmcgc2l6ZSBlcXVhbGx5LlxuICAgIGNvbnN0IHJlbWFpbmluZ0l0ZW1Db3VudCA9IGNvdW50IC0gY2VsbFNpemVzLmZpbHRlcihpdGVtID0+ICEhaXRlbSkubGVuZ3RoO1xuICAgIGNvbnN0IHJlbWFpbmluZ0NlbGxTaXplID0gcmVtYWluaW5nSXRlbUNvdW50ID4gMCA/IHRvdGFsU2l6ZVJlbWFpbmluZyAvIHJlbWFpbmluZ0l0ZW1Db3VudCA6IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIGlmICghY2VsbFNpemVzW2ldKSB7XG4gICAgICAgICAgICBjZWxsU2l6ZXNbaV0gPSByZW1haW5pbmdDZWxsU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2VsbFNpemVzO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVDZWxsU2l6ZShjZWxsOiBQbGFpdFRhYmxlQ2VsbCwgc2l6ZXM6IG51bWJlcltdLCBpbmRleDogbnVtYmVyLCBpc1dpZHRoOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc3BhbiA9IGlzV2lkdGggPyBjZWxsLmNvbHNwYW4gfHwgMSA6IGNlbGwucm93c3BhbiB8fCAxO1xuICAgIGxldCBzaXplID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwYW47IGkrKykge1xuICAgICAgICBjb25zdCBjZWxsSW5kZXggPSBpbmRleCArIGk7XG4gICAgICAgIHNpemUgKz0gc2l6ZXNbY2VsbEluZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXRDZWxsKGJvYXJkOiBQbGFpdFRhYmxlQm9hcmQsIGVsZW1lbnQ6IFBsYWl0QmFzZVRhYmxlLCBwb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCB0YWJsZSA9IGJvYXJkLmJ1aWxkVGFibGUoZWxlbWVudCk7XG4gICAgY29uc3QgY2VsbHMgPSBnZXRDZWxsc1dpdGhQb2ludHMoYm9hcmQsIHRhYmxlKTtcbiAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgIGNvbnN0IGNlbGwgPSBjZWxscy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBjZWxsUmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGl0ZW0ucG9pbnRzKTtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdChyZWN0YW5nbGUsIGNlbGxSZWN0YW5nbGUpO1xuICAgIH0pO1xuICAgIGlmIChjZWxsKSB7XG4gICAgICAgIHJldHVybiB0YWJsZS5jZWxscy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gY2VsbC5pZCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRpdENlbGwoYm9hcmQ6IFBsYWl0Qm9hcmQsIGNlbGw6IFBsYWl0VGFibGVDZWxsKSB7XG4gICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2VCeUNlbGwoYm9hcmQsIGNlbGwpO1xuICAgIHRleHRNYW5hZ2UgJiYgdGV4dE1hbmFnZS5lZGl0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0TWFuYWdlQnlDZWxsKGJvYXJkOiBQbGFpdEJvYXJkLCBjZWxsOiBQbGFpdFRhYmxlQ2VsbCkge1xuICAgIHJldHVybiBnZXRUZXh0TWFuYWdlKGJvYXJkLCB1bmRlZmluZWQsIGNlbGwpO1xufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29sdW1ucyA9ICh0YWJsZTogUGxhaXRCYXNlVGFibGUsIGNvbHVtbklkOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIsIG9mZnNldDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRhYmxlLmNvbHVtbnMubWFwKGl0ZW0gPT4gKGl0ZW0uaWQgPT09IGNvbHVtbklkID8geyAuLi5pdGVtLCB3aWR0aCB9IDogaXRlbSkpO1xuICAgIGNvbnN0IHBvaW50cyA9IFt0YWJsZS5wb2ludHNbMF0sIFt0YWJsZS5wb2ludHNbMV1bMF0gKyBvZmZzZXQsIHRhYmxlLnBvaW50c1sxXVsxXV1dIGFzIFBvaW50W107XG4gICAgcmV0dXJuIHsgY29sdW1ucywgcG9pbnRzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUm93cyA9ICh0YWJsZTogUGxhaXRCYXNlVGFibGUsIHJvd0lkOiBzdHJpbmcsIGhlaWdodDogbnVtYmVyLCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSB0YWJsZS5yb3dzLm1hcChpdGVtID0+IChpdGVtLmlkID09PSByb3dJZCA/IHsgLi4uaXRlbSwgaGVpZ2h0IH0gOiBpdGVtKSk7XG4gICAgY29uc3QgcG9pbnRzID0gW3RhYmxlLnBvaW50c1swXSwgW3RhYmxlLnBvaW50c1sxXVswXSwgdGFibGUucG9pbnRzWzFdWzFdICsgb2Zmc2V0XV0gYXMgUG9pbnRbXTtcbiAgICByZXR1cm4geyByb3dzLCBwb2ludHMgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDZWxsSWRzQnlSb3dPckNvbHVtbihjZWxsczogUGxhaXRUYWJsZUNlbGxbXSwgb2xkSWQ6IHN0cmluZywgbmV3SWQ6IHN0cmluZywgdHlwZTogJ3JvdycgfCAnY29sdW1uJykge1xuICAgIGNvbnN0IGlkOiAncm93SWQnIHwgJ2NvbHVtbklkJyA9IGAke3R5cGV9SWRgO1xuICAgIGNlbGxzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtW2lkXSA9PT0gb2xkSWQpIHtcbiAgICAgICAgICAgIGl0ZW1baWRdID0gbmV3SWQ7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJvd09yQ29sdW1uSWRzKGVsZW1lbnQ6IFBsYWl0VGFibGUsIHR5cGU6ICdyb3cnIHwgJ2NvbHVtbicpIHtcbiAgICBlbGVtZW50W2Ake3R5cGV9c2BdLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0lkID0gaWRDcmVhdG9yKCk7XG4gICAgICAgIHVwZGF0ZUNlbGxJZHNCeVJvd09yQ29sdW1uKGVsZW1lbnQuY2VsbHMsIGl0ZW0uaWQsIG5ld0lkLCB0eXBlKTtcbiAgICAgICAgaXRlbS5pZCA9IG5ld0lkO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ2VsbElkcyhjZWxsczogUGxhaXRUYWJsZUNlbGxbXSkge1xuICAgIGNlbGxzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0lkID0gaWRDcmVhdG9yKCk7XG4gICAgICAgIGl0ZW0uaWQgPSBuZXdJZDtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbEluY2x1ZGVUZXh0KGNlbGw6IFBsYWl0VGFibGVDZWxsKSB7XG4gICAgcmV0dXJuIGNlbGwudGV4dCAmJiBjZWxsLnRleHRIZWlnaHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsc1JlY3RhbmdsZShib2FyZDogUGxhaXRUYWJsZUJvYXJkLCBlbGVtZW50OiBQbGFpdFRhYmxlLCBjZWxsczogUGxhaXRUYWJsZUNlbGxbXSkge1xuICAgIGNvbnN0IGNlbGxzV2l0aFBvaW50cyA9IGdldENlbGxzV2l0aFBvaW50cyhib2FyZCBhcyBQbGFpdFRhYmxlQm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHBvaW50cyA9IGNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgY29uc3QgY2VsbFdpdGhQb2ludHMgPSBjZWxsc1dpdGhQb2ludHMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGNlbGwuaWQpO1xuICAgICAgICByZXR1cm4gY2VsbFdpdGhQb2ludHMhLnBvaW50cztcbiAgICB9KTtcbiAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cyk7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDZWxsID0gKHJvd0lkOiBzdHJpbmcsIGNvbHVtbklkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgY2VsbDogUGxhaXRUYWJsZUNlbGwgPSB7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgcm93SWQsXG4gICAgICAgIGNvbHVtbklkXG4gICAgfTtcbiAgICBpZiAodGV4dCAhPT0gbnVsbCkge1xuICAgICAgICBjZWxsWyd0ZXh0SGVpZ2h0J10gPSBURVhUX0RFRkFVTFRfSEVJR0hUO1xuICAgICAgICBjZWxsWyd0ZXh0J10gPSB7XG4gICAgICAgICAgICBjaGlsZHJlbjogW3sgdGV4dCB9XSxcbiAgICAgICAgICAgIGFsaWduOiBBbGlnbm1lbnQuY2VudGVyXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBjZWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdGVkVGFibGVDZWxsc0VkaXRvciA9IChib2FyZDogUGxhaXRCb2FyZCk6IEJhc2VFZGl0b3JbXSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGlzU2luZ2xlU2VsZWN0VGFibGUoYm9hcmQpKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxscyA9IGdldFNlbGVjdGVkQ2VsbHMoZWxlbWVudHNbMF0pO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxzRWRpdG9yID0gc2VsZWN0ZWRDZWxscz8ubWFwKGNlbGwgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2VCeUNlbGwoYm9hcmQsIGNlbGwpO1xuICAgICAgICAgICAgcmV0dXJuIHRleHRNYW5hZ2U/LmVkaXRvcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWxlY3RlZENlbGxzRWRpdG9yPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZENlbGxzRWRpdG9yIGFzIEJhc2VFZGl0b3JbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdfQ==
|
package/esm2022/utils/uml.mjs
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { idCreator } from '@plait/core';
|
|
2
|
-
import { DefaultBasicShapeProperty } from '../constants';
|
|
3
|
-
import { UMLSymbols } from '../interfaces';
|
|
4
|
-
import { getMemorizedLatestByPointer } from './memorize';
|
|
5
|
-
import { getDefaultGeometryProperty, getTextShapeProperty } from './geometry';
|
|
6
|
-
import { getDefaultGeometryText } from './common';
|
|
7
|
-
export const createUMLClassOrInterfaceGeometryElement = (board, shape, points) => {
|
|
8
|
-
const memorizedLatest = getMemorizedLatestByPointer(shape);
|
|
9
|
-
const element = {
|
|
10
|
-
id: idCreator(),
|
|
11
|
-
type: 'geometry',
|
|
12
|
-
angle: 0,
|
|
13
|
-
opacity: 1,
|
|
14
|
-
points,
|
|
15
|
-
strokeWidth: DefaultBasicShapeProperty.strokeWidth,
|
|
16
|
-
...memorizedLatest.geometryProperties
|
|
17
|
-
};
|
|
18
|
-
let rows;
|
|
19
|
-
let columns;
|
|
20
|
-
if (shape === UMLSymbols.class) {
|
|
21
|
-
rows = [
|
|
22
|
-
{
|
|
23
|
-
id: idCreator(),
|
|
24
|
-
height: 30
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: idCreator()
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
id: idCreator()
|
|
31
|
-
}
|
|
32
|
-
];
|
|
33
|
-
columns = [
|
|
34
|
-
{
|
|
35
|
-
id: idCreator()
|
|
36
|
-
}
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
rows = [
|
|
41
|
-
{
|
|
42
|
-
id: idCreator(),
|
|
43
|
-
height: 50
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
id: idCreator()
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
columns = [
|
|
50
|
-
{
|
|
51
|
-
id: idCreator()
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
...element,
|
|
57
|
-
shape,
|
|
58
|
-
rows,
|
|
59
|
-
columns,
|
|
60
|
-
cells: buildTableCellsForGeometry(board, rows, columns, shape)
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
const buildTableCellsForGeometry = (board, rows, columns, shape) => {
|
|
64
|
-
const memorizedLatest = getMemorizedLatestByPointer(shape);
|
|
65
|
-
const cellCount = rows.length * columns.length;
|
|
66
|
-
const defaultTexts = getDefaultGeometryProperty(shape)?.texts || [];
|
|
67
|
-
const textHeights = defaultTexts.map((textItem) => {
|
|
68
|
-
return getTextShapeProperty(board, textItem.text || getDefaultGeometryText(board), memorizedLatest.textProperties['font-size'])
|
|
69
|
-
.height;
|
|
70
|
-
});
|
|
71
|
-
return new Array(cellCount).fill('').map((item, index) => {
|
|
72
|
-
const rowIndex = Math.floor(index / columns.length);
|
|
73
|
-
const columnIndex = index % columns.length;
|
|
74
|
-
return {
|
|
75
|
-
id: idCreator(),
|
|
76
|
-
rowId: rows[rowIndex].id,
|
|
77
|
-
columnId: columns[columnIndex].id,
|
|
78
|
-
textHeight: textHeights[index],
|
|
79
|
-
text: {
|
|
80
|
-
children: [
|
|
81
|
-
{
|
|
82
|
-
text: defaultTexts[index].text
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
align: defaultTexts[index].align
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdXRpbHMvdW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQWtCLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFBd0IsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFxQixFQUFFLE1BQXNCLEVBQUUsRUFBRTtJQUN6SCxNQUFNLGVBQWUsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxNQUFNLE9BQU8sR0FBRztRQUNaLEVBQUUsRUFBRSxTQUFTLEVBQUU7UUFDZixJQUFJLEVBQUUsVUFBVTtRQUNoQixLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTTtRQUNOLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXO1FBQ2xELEdBQUksZUFBZSxDQUFDLGtCQUEyQztLQUNsRSxDQUFDO0lBQ0YsSUFBSSxJQUF1QyxDQUFDO0lBQzVDLElBQUksT0FBMEMsQ0FBQztJQUMvQyxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxHQUFHO1lBQ0g7Z0JBQ0ksRUFBRSxFQUFFLFNBQVMsRUFBRTtnQkFDZixNQUFNLEVBQUUsRUFBRTthQUNiO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLFNBQVMsRUFBRTthQUNsQjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxTQUFTLEVBQUU7YUFDbEI7U0FDSixDQUFDO1FBQ0YsT0FBTyxHQUFHO1lBQ047Z0JBQ0ksRUFBRSxFQUFFLFNBQVMsRUFBRTthQUNsQjtTQUNKLENBQUM7SUFDTixDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksR0FBRztZQUNIO2dCQUNJLEVBQUUsRUFBRSxTQUFTLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLEVBQUU7YUFDYjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxTQUFTLEVBQUU7YUFDbEI7U0FDSixDQUFDO1FBQ0YsT0FBTyxHQUFHO1lBQ047Z0JBQ0ksRUFBRSxFQUFFLFNBQVMsRUFBRTthQUNsQjtTQUNKLENBQUM7SUFDTixDQUFDO0lBQ0QsT0FBTztRQUNILEdBQUcsT0FBTztRQUNWLEtBQUs7UUFDTCxJQUFJO1FBQ0osT0FBTztRQUNQLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7S0FDL0IsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLDBCQUEwQixHQUFHLENBQy9CLEtBQWlCLEVBQ2pCLElBR0csRUFDSCxPQUdHLEVBQ0gsS0FBcUIsRUFDTCxFQUFFO0lBQ2xCLE1BQU0sZUFBZSxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxNQUFNLFlBQVksR0FBSSwwQkFBMEIsQ0FBQyxLQUFLLENBQVMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzdFLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUEwQixFQUFFLEVBQUU7UUFDaEUsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzFILE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDM0MsT0FBTztZQUNILEVBQUUsRUFBRSxTQUFTLEVBQUU7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLFVBQVUsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzlCLElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUU7b0JBQ047d0JBQ0ksSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO3FCQUNqQztpQkFDSjtnQkFDRCxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUs7YUFDbkM7U0FDSixDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgaWRDcmVhdG9yIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBHZW9tZXRyeVNoYXBlcywgVU1MU3ltYm9scywgUGxhaXRDb21tb25HZW9tZXRyeSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0TWVtb3JpemVkTGF0ZXN0QnlQb2ludGVyIH0gZnJvbSAnLi9tZW1vcml6ZSc7XG5pbXBvcnQgeyBHZW9tZXRyeVN0eWxlT3B0aW9ucywgZ2V0RGVmYXVsdEdlb21ldHJ5UHJvcGVydHksIGdldFRleHRTaGFwZVByb3BlcnR5IH0gZnJvbSAnLi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBQbGFpdFRhYmxlQ2VsbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEdlb21ldHJ5VGV4dCB9IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVVNTENsYXNzT3JJbnRlcmZhY2VHZW9tZXRyeUVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNoYXBlOiBHZW9tZXRyeVNoYXBlcywgcG9pbnRzOiBbUG9pbnQsIFBvaW50XSkgPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihzaGFwZSk7XG4gICAgY29uc3QgZWxlbWVudCA9IHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgICAgICBhbmdsZTogMCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICBzdHJva2VXaWR0aDogRGVmYXVsdEJhc2ljU2hhcGVQcm9wZXJ0eS5zdHJva2VXaWR0aCxcbiAgICAgICAgLi4uKG1lbW9yaXplZExhdGVzdC5nZW9tZXRyeVByb3BlcnRpZXMgYXMgR2VvbWV0cnlTdHlsZU9wdGlvbnMpXG4gICAgfTtcbiAgICBsZXQgcm93czogeyBpZDogc3RyaW5nOyBoZWlnaHQ/OiBudW1iZXIgfVtdO1xuICAgIGxldCBjb2x1bW5zOiB7IGlkOiBzdHJpbmc7IGhlaWdodD86IG51bWJlciB9W107XG4gICAgaWYgKHNoYXBlID09PSBVTUxTeW1ib2xzLmNsYXNzKSB7XG4gICAgICAgIHJvd3MgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMzBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBpZENyZWF0b3IoKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICBjb2x1bW5zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBpZENyZWF0b3IoKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvd3MgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICAgICAgICAgIGhlaWdodDogNTBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIGNvbHVtbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGlkQ3JlYXRvcigpXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgIHNoYXBlLFxuICAgICAgICByb3dzLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBjZWxsczogYnVpbGRUYWJsZUNlbGxzRm9yR2VvbWV0cnkoYm9hcmQsIHJvd3MsIGNvbHVtbnMsIHNoYXBlKVxuICAgIH0gYXMgdW5rbm93biBhcyBQbGFpdENvbW1vbkdlb21ldHJ5O1xufTtcblxuY29uc3QgYnVpbGRUYWJsZUNlbGxzRm9yR2VvbWV0cnkgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcm93czoge1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgfVtdLFxuICAgIGNvbHVtbnM6IHtcbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIH1bXSxcbiAgICBzaGFwZTogR2VvbWV0cnlTaGFwZXNcbik6IFBsYWl0VGFibGVDZWxsW10gPT4ge1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldE1lbW9yaXplZExhdGVzdEJ5UG9pbnRlcihzaGFwZSk7XG4gICAgY29uc3QgY2VsbENvdW50ID0gcm93cy5sZW5ndGggKiBjb2x1bW5zLmxlbmd0aDtcbiAgICBjb25zdCBkZWZhdWx0VGV4dHMgPSAoZ2V0RGVmYXVsdEdlb21ldHJ5UHJvcGVydHkoc2hhcGUpIGFzIGFueSk/LnRleHRzIHx8IFtdO1xuICAgIGNvbnN0IHRleHRIZWlnaHRzID0gZGVmYXVsdFRleHRzLm1hcCgodGV4dEl0ZW06IHsgdGV4dDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGdldFRleHRTaGFwZVByb3BlcnR5KGJvYXJkLCB0ZXh0SXRlbS50ZXh0IHx8IGdldERlZmF1bHRHZW9tZXRyeVRleHQoYm9hcmQpLCBtZW1vcml6ZWRMYXRlc3QudGV4dFByb3BlcnRpZXNbJ2ZvbnQtc2l6ZSddKVxuICAgICAgICAgICAgLmhlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IEFycmF5KGNlbGxDb3VudCkuZmlsbCgnJykubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyBjb2x1bW5zLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gaW5kZXggJSBjb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgICAgIHJvd0lkOiByb3dzW3Jvd0luZGV4XS5pZCxcbiAgICAgICAgICAgIGNvbHVtbklkOiBjb2x1bW5zW2NvbHVtbkluZGV4XS5pZCxcbiAgICAgICAgICAgIHRleHRIZWlnaHQ6IHRleHRIZWlnaHRzW2luZGV4XSxcbiAgICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBkZWZhdWx0VGV4dHNbaW5kZXhdLnRleHRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYWxpZ246IGRlZmF1bHRUZXh0c1tpbmRleF0uYWxpZ25cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcbn07XG4iXX0=
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, catmullRomFitting, createG, drawLinearPath, idCreator, setStrokeLinecap } from '@plait/core';
|
|
2
|
-
import { VectorLineShape } from '../interfaces';
|
|
3
|
-
import { getLineMemorizedLatest } from './memorize';
|
|
4
|
-
import { DefaultLineStyle } from '../constants/line';
|
|
5
|
-
import { alignPoints } from './arrow-line';
|
|
6
|
-
import { getStrokeWidthByElement } from './common';
|
|
7
|
-
import { getFillByElement, getStrokeColorByElement, getStrokeStyleByElement } from './style';
|
|
8
|
-
import { VectorLineShapeGenerator } from '../generators/vector-line-generator';
|
|
9
|
-
import { pointsOnBezierCurves } from 'points-on-curve';
|
|
10
|
-
import { getStrokeLineDash, StrokeStyle } from '@plait/common';
|
|
11
|
-
export const getVectorLinePoints = (board, element) => {
|
|
12
|
-
switch (element.shape) {
|
|
13
|
-
case VectorLineShape.straight: {
|
|
14
|
-
return element.points;
|
|
15
|
-
}
|
|
16
|
-
case VectorLineShape.curve: {
|
|
17
|
-
if (element.points.length === 2) {
|
|
18
|
-
return pointsOnBezierCurves(element.points);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
let dataPoints = element.points;
|
|
22
|
-
const points = catmullRomFitting(dataPoints);
|
|
23
|
-
return pointsOnBezierCurves(points);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
default:
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
export const createVectorLineElement = (shape, points, options) => {
|
|
31
|
-
return {
|
|
32
|
-
id: idCreator(),
|
|
33
|
-
type: 'vector-line',
|
|
34
|
-
shape,
|
|
35
|
-
opacity: 1,
|
|
36
|
-
points,
|
|
37
|
-
...options
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
export const vectorLineCreating = (board, lineShape, points, movingPoint, lineShapeG) => {
|
|
41
|
-
const lineGenerator = new VectorLineShapeGenerator(board);
|
|
42
|
-
const memorizedLatest = getLineMemorizedLatest();
|
|
43
|
-
const temporaryLineElement = createVectorLineElement(lineShape, [...points, movingPoint], {
|
|
44
|
-
strokeWidth: DefaultLineStyle.strokeWidth,
|
|
45
|
-
...memorizedLatest
|
|
46
|
-
});
|
|
47
|
-
const otherPoint = points[points.length - 1];
|
|
48
|
-
temporaryLineElement.points[temporaryLineElement.points.length - 1] = alignPoints(otherPoint, movingPoint);
|
|
49
|
-
lineGenerator.processDrawing(temporaryLineElement, lineShapeG);
|
|
50
|
-
PlaitBoard.getElementTopHost(board).append(lineShapeG);
|
|
51
|
-
return temporaryLineElement;
|
|
52
|
-
};
|
|
53
|
-
export const drawVectorLine = (board, element) => {
|
|
54
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
55
|
-
const strokeColor = getStrokeColorByElement(board, element);
|
|
56
|
-
const strokeStyle = getStrokeStyleByElement(board, element);
|
|
57
|
-
const strokeLineDash = getStrokeLineDash(strokeStyle, strokeWidth);
|
|
58
|
-
const fill = getFillByElement(board, element);
|
|
59
|
-
const options = { stroke: strokeColor, strokeWidth, strokeLineDash, fill };
|
|
60
|
-
const lineG = createG();
|
|
61
|
-
let points = getVectorLinePoints(board, element);
|
|
62
|
-
const line = drawLinearPath(points, options);
|
|
63
|
-
const id = idCreator();
|
|
64
|
-
line.setAttribute('mask', `url(#${id})`);
|
|
65
|
-
if (element.strokeStyle === StrokeStyle.dotted) {
|
|
66
|
-
setStrokeLinecap(line, 'round');
|
|
67
|
-
}
|
|
68
|
-
lineG.appendChild(line);
|
|
69
|
-
return lineG;
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy91dGlscy92ZWN0b3ItbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFTLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pILE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBd0IsRUFBRSxFQUFFO0lBQy9FLFFBQVEsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzFCLENBQUM7UUFDRCxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksT0FBTyxD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Q0FBQztJQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGNhdG11bGxSb21GaXR0aW5nLCBjcmVhdGVHLCBkcmF3TGluZWFyUGF0aCwgaWRDcmVhdG9yLCBzZXRTdHJva2VMaW5lY2FwIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRWZWN0b3JMaW5lLCBWZWN0b3JMaW5lU2hhcGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldExpbmVNZW1vcml6ZWRMYXRlc3QgfSBmcm9tICcuL21lbW9yaXplJztcbmltcG9ydCB7IERlZmF1bHRMaW5lU3R5bGUgfSBmcm9tICcuLi9jb25zdGFudHMvbGluZSc7XG5pbXBvcnQgeyBhbGlnblBvaW50cyB9IGZyb20gJy4vYXJyb3ctbGluZSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGdldEZpbGxCeUVsZW1lbnQsIGdldFN0cm9rZUNvbG9yQnlFbGVtZW50LCBnZXRTdHJva2VTdHlsZUJ5RWxlbWVudCB9IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IHsgVmVjdG9yTGluZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi4vZ2VuZXJhdG9ycy92ZWN0b3ItbGluZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlTGluZURhc2gsIFN0cm9rZVN0eWxlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBnZXRWZWN0b3JMaW5lUG9pbnRzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBQbGFpdFZlY3RvckxpbmUpID0+IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQuc2hhcGUpIHtcbiAgICAgICAgY2FzZSBWZWN0b3JMaW5lU2hhcGUuc3RyYWlnaHQ6IHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnBvaW50cztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFZlY3RvckxpbmVTaGFwZS5jdXJ2ZToge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQucG9pbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwb2ludHNPbkJlemllckN1cnZlcyhlbGVtZW50LnBvaW50cykgYXMgUG9pbnRbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFQb2ludHMgPSBlbGVtZW50LnBvaW50cztcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBjYXRtdWxsUm9tRml0dGluZyhkYXRhUG9pbnRzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9pbnRzT25CZXppZXJDdXJ2ZXMocG9pbnRzKSBhcyBQb2ludFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVmVjdG9yTGluZUVsZW1lbnQgPSAoXG4gICAgc2hhcGU6IFZlY3RvckxpbmVTaGFwZSxcbiAgICBwb2ludHM6IFBvaW50W10sXG4gICAgb3B0aW9ucz86IFBpY2s8UGxhaXRWZWN0b3JMaW5lLCAnc3Ryb2tlQ29sb3InIHwgJ3N0cm9rZVdpZHRoJyB8ICdmaWxsJz5cbik6IFBsYWl0VmVjdG9yTGluZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkQ3JlYXRvcigpLFxuICAgICAgICB0eXBlOiAndmVjdG9yLWxpbmUnLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgcG9pbnRzLFxuICAgICAgICAuLi5vcHRpb25zXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB2ZWN0b3JMaW5lQ3JlYXRpbmcgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbGluZVNoYXBlOiBWZWN0b3JMaW5lU2hhcGUsXG4gICAgcG9pbnRzOiBQb2ludFtdLFxuICAgIG1vdmluZ1BvaW50OiBQb2ludCxcbiAgICBsaW5lU2hhcGVHOiBTVkdHRWxlbWVudFxuKSA9PiB7XG4gICAgY29uc3QgbGluZUdlbmVyYXRvciA9IG5ldyBWZWN0b3JMaW5lU2hhcGVHZW5lcmF0b3IoYm9hcmQpO1xuICAgIGNvbnN0IG1lbW9yaXplZExhdGVzdCA9IGdldExpbmVNZW1vcml6ZWRMYXRlc3QoKTtcblxuICAgIGNvbnN0IHRlbXBvcmFyeUxpbmVFbGVtZW50ID0gY3JlYXRlVmVjdG9yTGluZUVsZW1lbnQobGluZVNoYXBlLCBbLi4ucG9pbnRzLCBtb3ZpbmdQb2ludF0sIHtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IERlZmF1bHRMaW5lU3R5bGUuc3Ryb2tlV2lkdGgsXG4gICAgICAgIC4uLm1lbW9yaXplZExhdGVzdFxuICAgIH0pO1xuICAgIGNvbnN0IG90aGVyUG9pbnQgPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIHRlbXBvcmFyeUxpbmVFbGVtZW50LnBvaW50c1t0ZW1wb3JhcnlMaW5lRWxlbWVudC5wb2ludHMubGVuZ3RoIC0gMV0gPSBhbGlnblBvaW50cyhvdGhlclBvaW50LCBtb3ZpbmdQb2ludCk7XG4gICAgbGluZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0ZW1wb3JhcnlMaW5lRWxlbWVudCwgbGluZVNoYXBlRyk7XG4gICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50VG9wSG9zdChib2FyZCkuYXBwZW5kKGxpbmVTaGFwZUcpO1xuICAgIHJldHVybiB0ZW1wb3JhcnlMaW5lRWxlbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3VmVjdG9yTGluZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRWZWN0b3JMaW5lKSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IGdldFN0cm9rZUNvbG9yQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VTdHlsZSA9IGdldFN0cm9rZVN0eWxlQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBzdHJva2VMaW5lRGFzaCA9IGdldFN0cm9rZUxpbmVEYXNoKHN0cm9rZVN0eWxlLCBzdHJva2VXaWR0aCk7XG4gICAgY29uc3QgZmlsbCA9IGdldEZpbGxCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0cm9rZTogc3Ryb2tlQ29sb3IsIHN0cm9rZVdpZHRoLCBzdHJva2VMaW5lRGFzaCwgZmlsbCB9O1xuICAgIGNvbnN0IGxpbmVHID0gY3JlYXRlRygpO1xuICAgIGxldCBwb2ludHMgPSBnZXRWZWN0b3JMaW5lUG9pbnRzKGJvYXJkLCBlbGVtZW50KSE7XG4gICAgY29uc3QgbGluZSA9IGRyYXdMaW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyk7XG4gICAgY29uc3QgaWQgPSBpZENyZWF0b3IoKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgnbWFzaycsIGB1cmwoIyR7aWR9KWApO1xuICAgIGlmIChlbGVtZW50LnN0cm9rZVN0eWxlID09PSBTdHJva2VTdHlsZS5kb3R0ZWQpIHtcbiAgICAgICAgc2V0U3Ryb2tlTGluZWNhcChsaW5lLCAncm91bmQnKTtcbiAgICB9XG4gICAgbGluZUcuYXBwZW5kQ2hpbGQobGluZSk7XG4gICAgcmV0dXJuIGxpbmVHO1xufTtcbiJdfQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard } from '@plait/core';
|
|
2
|
-
import { LineActiveGenerator } from './generators/line-active.generator';
|
|
3
|
-
import { CommonElementFlavour } from '@plait/common';
|
|
4
|
-
import { getVectorLinePoints } from './utils';
|
|
5
|
-
import { VectorLineShapeGenerator } from './generators/vector-line-generator';
|
|
6
|
-
export class VectorLineComponent extends CommonElementFlavour {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
}
|
|
10
|
-
initializeGenerator() {
|
|
11
|
-
this.shapeGenerator = new VectorLineShapeGenerator(this.board);
|
|
12
|
-
this.activeGenerator = new LineActiveGenerator(this.board);
|
|
13
|
-
this.getRef().updateActiveSection = () => {
|
|
14
|
-
const linePoints = getVectorLinePoints(this.board, this.element);
|
|
15
|
-
this.activeGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
16
|
-
selected: this.selected,
|
|
17
|
-
linePoints
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
initialize() {
|
|
22
|
-
this.initializeGenerator();
|
|
23
|
-
this.shapeGenerator.processDrawing(this.element, this.getElementG());
|
|
24
|
-
const linePoints = getVectorLinePoints(this.board, this.element);
|
|
25
|
-
this.activeGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
26
|
-
selected: this.selected,
|
|
27
|
-
linePoints
|
|
28
|
-
});
|
|
29
|
-
super.initialize();
|
|
30
|
-
}
|
|
31
|
-
onContextChanged(value, previous) {
|
|
32
|
-
const linePoints = getVectorLinePoints(this.board, this.element);
|
|
33
|
-
if (value.element !== previous.element || value.hasThemeChanged) {
|
|
34
|
-
this.shapeGenerator.processDrawing(this.element, this.getElementG());
|
|
35
|
-
this.activeGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
36
|
-
selected: this.selected,
|
|
37
|
-
linePoints
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
const needUpdate = value.selected !== previous.selected || this.activeGenerator.needUpdate() || value.selected;
|
|
42
|
-
if (needUpdate) {
|
|
43
|
-
this.activeGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
44
|
-
selected: this.selected,
|
|
45
|
-
linePoints
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
destroy() {
|
|
51
|
-
super.destroy();
|
|
52
|
-
this.activeGenerator.destroy();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvdmVjdG9yLWxpbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQStDLE1BQU0sYUFBYSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFOUUsTUFBTSxPQUFPLG1CQUNULFNBQVEsb0JBQWlEO0lBT3pEO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7WUFDckMsTUFBTSxVQUFVLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDcEYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixVQUFVO2FBQ2IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVU7U0FDYixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUNaLEtBQTZELEVBQzdELFFBQWdFO1FBRWhFLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQ2xFLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsVUFBVTthQUNiLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMvRyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3BGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsVUFBVTtpQkFDYixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCwgT25Db250ZXh0Q2hhbmdlZCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0VmVjdG9yTGluZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMaW5lQWN0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL2xpbmUtYWN0aXZlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBDb21tb25FbGVtZW50Rmxhdm91ciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0VmVjdG9yTGluZVBvaW50cyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVmVjdG9yTGluZVNoYXBlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL3ZlY3Rvci1saW5lLWdlbmVyYXRvcic7XG5cbmV4cG9ydCBjbGFzcyBWZWN0b3JMaW5lQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBDb21tb25FbGVtZW50Rmxhdm91cjxQbGFpdFZlY3RvckxpbmUsIFBsYWl0Qm9hcmQ+XG4gICAgaW1wbGVtZW50cyBPbkNvbnRleHRDaGFuZ2VkPFBsYWl0VmVjdG9yTGluZSwgUGxhaXRCb2FyZD5cbntcbiAgICBzaGFwZUdlbmVyYXRvciE6IFZlY3RvckxpbmVTaGFwZUdlbmVyYXRvcjtcblxuICAgIGFjdGl2ZUdlbmVyYXRvciE6IExpbmVBY3RpdmVHZW5lcmF0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplR2VuZXJhdG9yKCkge1xuICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yID0gbmV3IFZlY3RvckxpbmVTaGFwZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgTGluZUFjdGl2ZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS51cGRhdGVBY3RpdmVTZWN0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVBvaW50cyA9IGdldFZlY3RvckxpbmVQb2ludHModGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSE7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIGxpbmVQb2ludHNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgY29uc3QgbGluZVBvaW50cyA9IGdldFZlY3RvckxpbmVQb2ludHModGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSE7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICAgIGxpbmVQb2ludHNcbiAgICAgICAgfSk7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdFZlY3RvckxpbmUsIFBsYWl0Qm9hcmQ+LFxuICAgICAgICBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdFZlY3RvckxpbmUsIFBsYWl0Qm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGxpbmVQb2ludHMgPSBnZXRWZWN0b3JMaW5lUG9pbnRzKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCkhO1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gcHJldmlvdXMuZWxlbWVudCB8fCB2YWx1ZS5oYXNUaGVtZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgICBsaW5lUG9pbnRzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRVcGRhdGUgPSB2YWx1ZS5zZWxlY3RlZCAhPT0gcHJldmlvdXMuc2VsZWN0ZWQgfHwgdGhpcy5hY3RpdmVHZW5lcmF0b3IubmVlZFVwZGF0ZSgpIHx8IHZhbHVlLnNlbGVjdGVkO1xuICAgICAgICAgICAgaWYgKG5lZWRVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgbGluZVBvaW50c1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|