@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,164 +0,0 @@
|
|
|
1
|
-
import { idCreator, PlaitBoard, RectangleClient, Transforms } from '@plait/core';
|
|
2
|
-
import { PlaitDrawElement } from '../interfaces';
|
|
3
|
-
import { getCellWithPoints } from '../utils/table';
|
|
4
|
-
import { getSwimlaneCount } from '../utils/swimlane';
|
|
5
|
-
import { Alignment } from '@plait/common';
|
|
6
|
-
export const updateSwimlaneCount = (board, swimlane, count) => {
|
|
7
|
-
if (count > 0 && PlaitDrawElement.isSwimlane(swimlane)) {
|
|
8
|
-
const currentCount = getSwimlaneCount(swimlane);
|
|
9
|
-
if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
|
|
10
|
-
if (count > currentCount) {
|
|
11
|
-
addSwimlaneRow(board, swimlane, swimlane.rows.length, count - currentCount);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
const deleteIndex = swimlane.rows.length - (currentCount - count);
|
|
15
|
-
removeSwimlaneRow(board, swimlane, deleteIndex, currentCount - count);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
|
|
19
|
-
if (count > currentCount) {
|
|
20
|
-
addSwimlaneColumn(board, swimlane, swimlane.columns.length, count - currentCount);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const deleteIndex = swimlane.columns.length - (currentCount - count);
|
|
24
|
-
removeSwimlaneColumn(board, swimlane, deleteIndex, currentCount - count);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
export const addSwimlaneRow = (board, swimlane, index, count = 1) => {
|
|
30
|
-
if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
|
|
31
|
-
const newRows = [...swimlane.rows];
|
|
32
|
-
const addRows = [];
|
|
33
|
-
for (let i = 0; i < count; i++) {
|
|
34
|
-
addRows.push({ id: idCreator() });
|
|
35
|
-
}
|
|
36
|
-
newRows.splice(index, 0, ...addRows);
|
|
37
|
-
const newCells = [...swimlane.cells];
|
|
38
|
-
addRows.forEach(item => {
|
|
39
|
-
newCells.push(...createNewSwimlaneCells(swimlane, item.id, 'column'));
|
|
40
|
-
});
|
|
41
|
-
const lastCellPoints = getCellWithPoints(board, swimlane, swimlane.cells[swimlane.cells.length - 1].id).points;
|
|
42
|
-
const lastRowHeight = RectangleClient.getRectangleByPoints(lastCellPoints).height;
|
|
43
|
-
const newPoints = [swimlane.points[0], [swimlane.points[1][0], swimlane.points[1][1] + lastRowHeight * count]];
|
|
44
|
-
updateSwimlane(board, swimlane, swimlane.columns, newRows, newCells, newPoints);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
export const addSwimlaneColumn = (board, swimlane, index, count = 1) => {
|
|
48
|
-
if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
|
|
49
|
-
const newColumns = [...swimlane.columns];
|
|
50
|
-
const addColumns = [];
|
|
51
|
-
for (let i = 0; i < count; i++) {
|
|
52
|
-
addColumns.push({ id: idCreator() });
|
|
53
|
-
}
|
|
54
|
-
newColumns.splice(index, 0, ...addColumns);
|
|
55
|
-
const newCells = [...swimlane.cells];
|
|
56
|
-
addColumns.forEach(item => {
|
|
57
|
-
newCells.push(...createNewSwimlaneCells(swimlane, item.id, 'row'));
|
|
58
|
-
});
|
|
59
|
-
const lastCellPoints = getCellWithPoints(board, swimlane, swimlane.cells[swimlane.cells.length - 1].id).points;
|
|
60
|
-
const lastColumnWidth = RectangleClient.getRectangleByPoints(lastCellPoints).width;
|
|
61
|
-
const newPoints = [swimlane.points[0], [swimlane.points[1][0] + lastColumnWidth * count, swimlane.points[1][1]]];
|
|
62
|
-
updateSwimlane(board, swimlane, newColumns, swimlane.rows, newCells, newPoints);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
export const removeSwimlaneRow = (board, swimlane, index, count = 1) => {
|
|
66
|
-
if (PlaitDrawElement.isHorizontalSwimlane(swimlane)) {
|
|
67
|
-
if (count > swimlane.rows.length) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const newRows = [...swimlane.rows];
|
|
71
|
-
newRows.splice(index, count);
|
|
72
|
-
if (newRows.length === 0) {
|
|
73
|
-
const path = PlaitBoard.findPath(board, swimlane);
|
|
74
|
-
Transforms.removeNode(board, path);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
let newCells = [...swimlane.cells];
|
|
78
|
-
const removeRows = [];
|
|
79
|
-
for (let i = index; i < count + index; i++) {
|
|
80
|
-
const removeRow = swimlane.rows[i];
|
|
81
|
-
removeRows.push(removeRow);
|
|
82
|
-
newCells = newCells.filter(item => item.rowId !== removeRow.id);
|
|
83
|
-
}
|
|
84
|
-
let removeRowHeight = 0;
|
|
85
|
-
removeRows.forEach(row => {
|
|
86
|
-
if (!row.height) {
|
|
87
|
-
const rowCell = swimlane.cells.find(item => item.rowId === row.id);
|
|
88
|
-
const cellPoints = getCellWithPoints(board, swimlane, rowCell.id).points;
|
|
89
|
-
removeRowHeight += RectangleClient.getRectangleByPoints(cellPoints).height;
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
removeRowHeight += row.height;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
const newPoints = [swimlane.points[0], [swimlane.points[1][0], swimlane.points[1][1] - removeRowHeight]];
|
|
96
|
-
updateSwimlane(board, swimlane, swimlane.columns, newRows, newCells, newPoints);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
export const removeSwimlaneColumn = (board, swimlane, index, count = 1) => {
|
|
101
|
-
if (PlaitDrawElement.isVerticalSwimlane(swimlane)) {
|
|
102
|
-
if (count > swimlane.columns.length) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const newColumns = [...swimlane.columns];
|
|
106
|
-
newColumns.splice(index, count);
|
|
107
|
-
if (newColumns.length === 0) {
|
|
108
|
-
const path = PlaitBoard.findPath(board, swimlane);
|
|
109
|
-
Transforms.removeNode(board, path);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
let newCells = [...swimlane.cells];
|
|
113
|
-
const removeColumns = [];
|
|
114
|
-
for (let i = index; i < count + index; i++) {
|
|
115
|
-
const removeColumn = swimlane.columns[i];
|
|
116
|
-
removeColumns.push(removeColumn);
|
|
117
|
-
newCells = newCells.filter(item => item.columnId !== removeColumn.id);
|
|
118
|
-
}
|
|
119
|
-
let removeColumnWidth = 0;
|
|
120
|
-
removeColumns.forEach(column => {
|
|
121
|
-
if (!column.width) {
|
|
122
|
-
const rowCell = swimlane.cells.find(item => item.columnId === column.id);
|
|
123
|
-
const cellPoints = getCellWithPoints(board, swimlane, rowCell.id).points;
|
|
124
|
-
removeColumnWidth += RectangleClient.getRectangleByPoints(cellPoints).width;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
removeColumnWidth += column.width;
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
const newPoints = [swimlane.points[0], [swimlane.points[1][0] - removeColumnWidth, swimlane.points[1][1]]];
|
|
131
|
-
updateSwimlane(board, swimlane, newColumns, swimlane.rows, newCells, newPoints);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
const createNewSwimlaneCells = (swimlane, newId, type) => {
|
|
136
|
-
const cells = swimlane[`${type}s`].map(item => ({
|
|
137
|
-
id: idCreator(),
|
|
138
|
-
rowId: type === 'row' ? item.id : newId,
|
|
139
|
-
columnId: type === 'row' ? newId : item.id
|
|
140
|
-
}));
|
|
141
|
-
if (swimlane.header) {
|
|
142
|
-
cells.shift();
|
|
143
|
-
}
|
|
144
|
-
cells[0] = {
|
|
145
|
-
...cells[0],
|
|
146
|
-
text: {
|
|
147
|
-
children: [{ text: swimlane.header ? 'Lane' : 'New Swimlane' }],
|
|
148
|
-
align: Alignment.center,
|
|
149
|
-
direction: type === 'row' ? undefined : 'vertical'
|
|
150
|
-
},
|
|
151
|
-
textHeight: 20
|
|
152
|
-
};
|
|
153
|
-
return cells;
|
|
154
|
-
};
|
|
155
|
-
const updateSwimlane = (board, swimlane, newColumns, newRows, newCells, newPoints) => {
|
|
156
|
-
const path = PlaitBoard.findPath(board, swimlane);
|
|
157
|
-
Transforms.setNode(board, {
|
|
158
|
-
columns: newColumns,
|
|
159
|
-
rows: newRows,
|
|
160
|
-
cells: newCells,
|
|
161
|
-
points: newPoints
|
|
162
|
-
}, path);
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpbWxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL3N3aW1sYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVEsVUFBVSxFQUFTLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQzdGLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQztZQUNoRixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ2xFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFR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QUNMO1FBQ0ksT0FBTyxFQUFFLFVBQVU7UUFDbkIsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsUUFBUTtRQUNmLE1BQU0sRUFBRSxTQUFTO0tBQ3BCLEVBQ0QsSUFBSSxDQUNQLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIFBhdGgsIFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdERyYXdFbGVtZW50LCBQbGFpdFN3aW1sYW5lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdEJhc2VUYWJsZSwgUGxhaXRUYWJsZUNlbGwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlJztcbmltcG9ydCB7IGdldENlbGxXaXRoUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvdGFibGUnO1xuaW1wb3J0IHsgZ2V0U3dpbWxhbmVDb3VudCB9IGZyb20gJy4uL3V0aWxzL3N3aW1sYW5lJztcbmltcG9ydCB7IEFsaWdubWVudCB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlU3dpbWxhbmVDb3VudCA9IChib2FyZDogUGxhaXRCb2FyZCwgc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIGNvdW50OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY291bnQgPiAwICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNTd2ltbGFuZShzd2ltbGFuZSkpIHtcbiAgICAgICAgY29uc3QgY3VycmVudENvdW50ID0gZ2V0U3dpbWxhbmVDb3VudChzd2ltbGFuZSk7XG4gICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSG9yaXpvbnRhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ID4gY3VycmVudENvdW50KSB7XG4gICAgICAgICAgICAgICAgYWRkU3dpbWxhbmVSb3coYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5yb3dzLmxlbmd0aCwgY291bnQgLSBjdXJyZW50Q291bnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxldGVJbmRleCA9IHN3aW1sYW5lLnJvd3MubGVuZ3RoIC0gKGN1cnJlbnRDb3VudCAtIGNvdW50KTtcbiAgICAgICAgICAgICAgICByZW1vdmVTd2ltbGFuZVJvdyhib2FyZCwgc3dpbWxhbmUsIGRlbGV0ZUluZGV4LCBjdXJyZW50Q291bnQgLSBjb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNWZXJ0aWNhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ID4gY3VycmVudENvdW50KSB7XG4gICAgICAgICAgICAgICAgYWRkU3dpbWxhbmVDb2x1bW4oYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5jb2x1bW5zLmxlbmd0aCwgY291bnQgLSBjdXJyZW50Q291bnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxldGVJbmRleCA9IHN3aW1sYW5lLmNvbHVtbnMubGVuZ3RoIC0gKGN1cnJlbnRDb3VudCAtIGNvdW50KTtcbiAgICAgICAgICAgICAgICByZW1vdmVTd2ltbGFuZUNvbHVtbihib2FyZCwgc3dpbWxhbmUsIGRlbGV0ZUluZGV4LCBjdXJyZW50Q291bnQgLSBjb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkU3dpbWxhbmVSb3cgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lLCBpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyID0gMSkgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzSG9yaXpvbnRhbFN3aW1sYW5lKHN3aW1sYW5lKSkge1xuICAgICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnN3aW1sYW5lLnJvd3NdO1xuICAgICAgICBjb25zdCBhZGRSb3dzOiB7IGlkOiBzdHJpbmcgfVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgYWRkUm93cy5wdXNoKHsgaWQ6IGlkQ3JlYXRvcigpIH0pO1xuICAgICAgICB9XG4gICAgICAgIG5ld1Jvd3Muc3BsaWNlKGluZGV4LCAwLCAuLi5hZGRSb3dzKTtcbiAgICAgICAgY29uc3QgbmV3Q2VsbHMgPSBbLi4uc3dpbWxhbmUuY2VsbHNdO1xuICAgICAgICBhZGRSb3dzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBuZXdDZWxscy5wdXNoKC4uLmNyZWF0ZU5ld1N3aW1sYW5lQ2VsbHMoc3dpbWxhbmUsIGl0ZW0uaWQsICdjb2x1bW4nKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsYXN0Q2VsbFBvaW50cyA9IGdldENlbGxXaXRoUG9pbnRzKGJvYXJkLCBzd2ltbGFuZSwgc3dpbWxhbmUuY2VsbHNbc3dpbWxhbmUuY2VsbHMubGVuZ3RoIC0gMV0uaWQpLnBvaW50cztcbiAgICAgICAgY29uc3QgbGFzdFJvd0hlaWdodCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhsYXN0Q2VsbFBvaW50cykuaGVpZ2h0O1xuICAgICAgICBjb25zdCBuZXdQb2ludHM6IFBvaW50W10gPSBbc3dpbWxhbmUucG9pbnRzWzBdLCBbc3dpbWxhbmUucG9pbnRzWzFdWzBdLCBzd2ltbGFuZS5wb2ludHNbMV1bMV0gKyBsYXN0Um93SGVpZ2h0ICogY291bnRdXTtcbiAgICAgICAgdXBkYXRlU3dpbWxhbmUoYm9hcmQsIHN3aW1sYW5lLCBzd2ltbGFuZS5jb2x1bW5zLCBuZXdSb3dzLCBuZXdDZWxscywgbmV3UG9pbnRzKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkU3dpbWxhbmVDb2x1bW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lLCBpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyID0gMSkgPT4ge1xuICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzVmVydGljYWxTd2ltbGFuZShzd2ltbGFuZSkpIHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5zd2ltbGFuZS5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgYWRkQ29sdW1uczogeyBpZDogc3RyaW5nIH1bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGFkZENvbHVtbnMucHVzaCh7IGlkOiBpZENyZWF0b3IoKSB9KTtcbiAgICAgICAgfVxuICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShpbmRleCwgMCwgLi4uYWRkQ29sdW1ucyk7XG4gICAgICAgIGNvbnN0IG5ld0NlbGxzID0gWy4uLnN3aW1sYW5lLmNlbGxzXTtcbiAgICAgICAgYWRkQ29sdW1ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgbmV3Q2VsbHMucHVzaCguLi5jcmVhdGVOZXdTd2ltbGFuZUNlbGxzKHN3aW1sYW5lLCBpdGVtLmlkLCAncm93JykpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGFzdENlbGxQb2ludHMgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNlbGxzW3N3aW1sYW5lLmNlbGxzLmxlbmd0aCAtIDFdLmlkKS5wb2ludHM7XG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5XaWR0aCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhsYXN0Q2VsbFBvaW50cykud2lkdGg7XG4gICAgICAgIGNvbnN0IG5ld1BvaW50czogUG9pbnRbXSA9IFtzd2ltbGFuZS5wb2ludHNbMF0sIFtzd2ltbGFuZS5wb2ludHNbMV1bMF0gKyBsYXN0Q29sdW1uV2lkdGggKiBjb3VudCwgc3dpbWxhbmUucG9pbnRzWzFdWzFdXV07XG4gICAgICAgIHVwZGF0ZVN3aW1sYW5lKGJvYXJkLCBzd2ltbGFuZSwgbmV3Q29sdW1ucywgc3dpbWxhbmUucm93cywgbmV3Q2VsbHMsIG5ld1BvaW50cyk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVN3aW1sYW5lUm93ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlciA9IDEpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0hvcml6b250YWxTd2ltbGFuZShzd2ltbGFuZSkpIHtcbiAgICAgICAgaWYgKGNvdW50ID4gc3dpbWxhbmUucm93cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnN3aW1sYW5lLnJvd3NdO1xuICAgICAgICBuZXdSb3dzLnNwbGljZShpbmRleCwgY291bnQpO1xuICAgICAgICBpZiAobmV3Um93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBzd2ltbGFuZSk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGUoYm9hcmQsIHBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld0NlbGxzID0gWy4uLnN3aW1sYW5lLmNlbGxzXTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZVJvd3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGNvdW50ICsgaW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZVJvdyA9IHN3aW1sYW5lLnJvd3NbaV07XG4gICAgICAgICAgICAgICAgcmVtb3ZlUm93cy5wdXNoKHJlbW92ZVJvdyk7XG4gICAgICAgICAgICAgICAgbmV3Q2VsbHMgPSBuZXdDZWxscy5maWx0ZXIoaXRlbSA9PiBpdGVtLnJvd0lkICE9PSByZW1vdmVSb3cuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlbW92ZVJvd0hlaWdodCA9IDA7XG4gICAgICAgICAgICByZW1vdmVSb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93Q2VsbCA9IHN3aW1sYW5lLmNlbGxzLmZpbmQoaXRlbSA9PiBpdGVtLnJvd0lkID09PSByb3cuaWQpITtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbFBvaW50cyA9IGdldENlbGxXaXRoUG9pbnRzKGJvYXJkLCBzd2ltbGFuZSwgcm93Q2VsbC5pZCkucG9pbnRzO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVSb3dIZWlnaHQgKz0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKGNlbGxQb2ludHMpLmhlaWdodDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVSb3dIZWlnaHQgKz0gcm93LmhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgbmV3UG9pbnRzOiBQb2ludFtdID0gW3N3aW1sYW5lLnBvaW50c1swXSwgW3N3aW1sYW5lLnBvaW50c1sxXVswXSwgc3dpbWxhbmUucG9pbnRzWzFdWzFdIC0gcmVtb3ZlUm93SGVpZ2h0XV07XG4gICAgICAgICAgICB1cGRhdGVTd2ltbGFuZShib2FyZCwgc3dpbWxhbmUsIHN3aW1sYW5lLmNvbHVtbnMsIG5ld1Jvd3MsIG5ld0NlbGxzLCBuZXdQb2ludHMpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVN3aW1sYW5lQ29sdW1uID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzd2ltbGFuZTogUGxhaXRTd2ltbGFuZSwgaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlciA9IDEpID0+IHtcbiAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc1ZlcnRpY2FsU3dpbWxhbmUoc3dpbWxhbmUpKSB7XG4gICAgICAgIGlmIChjb3VudCA+IHN3aW1sYW5lLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5zd2ltbGFuZS5jb2x1bW5zXTtcbiAgICAgICAgbmV3Q29sdW1ucy5zcGxpY2UoaW5kZXgsIGNvdW50KTtcbiAgICAgICAgaWYgKG5ld0NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc3dpbWxhbmUpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlKGJvYXJkLCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXdDZWxscyA9IFsuLi5zd2ltbGFuZS5jZWxsc107XG4gICAgICAgICAgICBjb25zdCByZW1vdmVDb2x1bW5zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCBjb3VudCArIGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVDb2x1bW4gPSBzd2ltbGFuZS5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNvbHVtbnMucHVzaChyZW1vdmVDb2x1bW4pO1xuICAgICAgICAgICAgICAgIG5ld0NlbGxzID0gbmV3Q2VsbHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jb2x1bW5JZCAhPT0gcmVtb3ZlQ29sdW1uLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZW1vdmVDb2x1bW5XaWR0aCA9IDA7XG4gICAgICAgICAgICByZW1vdmVDb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbi53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dDZWxsID0gc3dpbWxhbmUuY2VsbHMuZmluZChpdGVtID0+IGl0ZW0uY29sdW1uSWQgPT09IGNvbHVtbi5pZCkhO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsUG9pbnRzID0gZ2V0Q2VsbFdpdGhQb2ludHMoYm9hcmQsIHN3aW1sYW5lLCByb3dDZWxsLmlkKS5wb2ludHM7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbHVtbldpZHRoICs9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsUG9pbnRzKS53aWR0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDb2x1bW5XaWR0aCArPSBjb2x1bW4ud2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBuZXdQb2ludHM6IFBvaW50W10gPSBbc3dpbWxhbmUucG9pbnRzWzBdLCBbc3dpbWxhbmUucG9pbnRzWzFdWzBdIC0gcmVtb3ZlQ29sdW1uV2lkdGgsIHN3aW1sYW5lLnBvaW50c1sxXVsxXV1dO1xuICAgICAgICAgICAgdXBkYXRlU3dpbWxhbmUoYm9hcmQsIHN3aW1sYW5lLCBuZXdDb2x1bW5zLCBzd2ltbGFuZS5yb3dzLCBuZXdDZWxscywgbmV3UG9pbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IGNyZWF0ZU5ld1N3aW1sYW5lQ2VsbHMgPSAoc3dpbWxhbmU6IFBsYWl0U3dpbWxhbmUsIG5ld0lkOiBzdHJpbmcsIHR5cGU6ICdyb3cnIHwgJ2NvbHVtbicpOiBQbGFpdFRhYmxlQ2VsbFtdID0+IHtcbiAgICBjb25zdCBjZWxsczogUGxhaXRUYWJsZUNlbGxbXSA9IHN3aW1sYW5lW2Ake3R5cGV9c2BdLm1hcChpdGVtID0+ICh7XG4gICAgICAgIGlkOiBpZENyZWF0b3IoKSxcbiAgICAgICAgcm93SWQ6IHR5cGUgPT09ICdyb3cnID8gaXRlbS5pZCA6IG5ld0lkLFxuICAgICAgICBjb2x1bW5JZDogdHlwZSA9PT0gJ3JvdycgPyBuZXdJZCA6IGl0ZW0uaWRcbiAgICB9KSk7XG4gICAgaWYgKHN3aW1sYW5lLmhlYWRlcikge1xuICAgICAgICBjZWxscy5zaGlmdCgpO1xuICAgIH1cbiAgICBjZWxsc1swXSA9IHtcbiAgICAgICAgLi4uY2VsbHNbMF0sXG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0ZXh0OiBzd2ltbGFuZS5oZWFkZXIgPyAnTGFuZScgOiAnTmV3IFN3aW1sYW5lJyB9XSxcbiAgICAgICAgICAgIGFsaWduOiBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0eXBlID09PSAncm93JyA/IHVuZGVmaW5lZCA6ICd2ZXJ0aWNhbCdcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dEhlaWdodDogMjBcbiAgICB9O1xuICAgIHJldHVybiBjZWxscztcbn07XG5cbmNvbnN0IHVwZGF0ZVN3aW1sYW5lID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHN3aW1sYW5lOiBQbGFpdFN3aW1sYW5lLFxuICAgIG5ld0NvbHVtbnM6IHsgaWQ6IHN0cmluZzsgd2lkdGg/OiBudW1iZXIgfVtdLFxuICAgIG5ld1Jvd3M6IHsgaWQ6IHN0cmluZzsgaGVpZ2h0PzogbnVtYmVyIH1bXSxcbiAgICBuZXdDZWxsczogUGxhaXRUYWJsZUNlbGxbXSxcbiAgICBuZXdQb2ludHM6IFBvaW50W11cbikgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBzd2ltbGFuZSk7XG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICBib2FyZCxcbiAgICAgICAge1xuICAgICAgICAgICAgY29sdW1uczogbmV3Q29sdW1ucyxcbiAgICAgICAgICAgIHJvd3M6IG5ld1Jvd3MsXG4gICAgICAgICAgICBjZWxsczogbmV3Q2VsbHMsXG4gICAgICAgICAgICBwb2ludHM6IG5ld1BvaW50c1xuICAgICAgICB9LFxuICAgICAgICBwYXRoXG4gICAgKTtcbn07XG4iXX0=
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { PlaitNode, RectangleClient, Transforms } from '@plait/core';
|
|
2
|
-
import { ShapeDefaultSpace } from '../constants';
|
|
3
|
-
import { PlaitTableElement } from '../interfaces/table';
|
|
4
|
-
import { getCellWithPoints, updateColumns, updateRows } from '../utils/table';
|
|
5
|
-
export const setTableText = (board, path, cellId, text, textHeight) => {
|
|
6
|
-
const table = PlaitNode.get(board, path);
|
|
7
|
-
const cell = getCellWithPoints(board, table, cellId);
|
|
8
|
-
const cellIndex = table.cells.findIndex(item => item.id === cell.id);
|
|
9
|
-
let rows = [...table.rows];
|
|
10
|
-
let columns = [...table.columns];
|
|
11
|
-
let cells = [...table.cells];
|
|
12
|
-
let points = [...table.points];
|
|
13
|
-
const { width: cellWidth, height: cellHeight } = RectangleClient.getRectangleByPoints(cell.points);
|
|
14
|
-
const defaultSpace = ShapeDefaultSpace.rectangleAndText;
|
|
15
|
-
if (PlaitTableElement.isVerticalText(cell)) {
|
|
16
|
-
const columnIdx = table.columns.findIndex(column => column.id === cell.columnId);
|
|
17
|
-
if (textHeight > cellWidth) {
|
|
18
|
-
const newColumnWidth = textHeight + defaultSpace * 2;
|
|
19
|
-
const offset = newColumnWidth - cellWidth;
|
|
20
|
-
const result = updateColumns(table, table.columns[columnIdx].id, newColumnWidth, offset);
|
|
21
|
-
points = result.points;
|
|
22
|
-
columns = result.columns;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
const rowIdx = table.rows.findIndex(row => row.id === cell.rowId);
|
|
27
|
-
const tableRow = table.rows[rowIdx];
|
|
28
|
-
const compareHeight = tableRow.height ?? Math.max(cellHeight, cell.textHeight || 0);
|
|
29
|
-
if (textHeight > compareHeight) {
|
|
30
|
-
const newRowHeight = textHeight + defaultSpace * 2;
|
|
31
|
-
const offset = newRowHeight - compareHeight;
|
|
32
|
-
const result = updateRows(table, table.rows[rowIdx].id, newRowHeight, offset);
|
|
33
|
-
points = result.points;
|
|
34
|
-
rows = result.rows;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
cells[cellIndex] = {
|
|
38
|
-
...cells[cellIndex],
|
|
39
|
-
textHeight: textHeight,
|
|
40
|
-
text
|
|
41
|
-
};
|
|
42
|
-
Transforms.setNode(board, { rows, columns, cells, points }, path);
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3RyYW5zZm9ybXMvdGFibGUtdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRCxPQUFPLEVBQWtDLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLElBQVUsRUFBRSxNQUFjLEVBQUUsSUFBYSxFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQW1CLENBQUM7SUFDM0QsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxJQUFJLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkcsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7SUFDeEQsSUFBSSxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBc0IsQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFJLFVBQVUsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxVQUFVLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUNyRCxNQUFNLE1BQU0sR0FBRyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQzFDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDN0IsTUFBTSxZQUFZLEdBQUcsVUFBVSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsWUFBWSxHQUFHLGFBQWEsQ0FBQztZQUM1QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5RSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN2QixJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRztRQUNmLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNuQixVQUFVLEVBQUUsVUFBVTtRQUN0QixJQUFJO0tBQ1AsQ0FBQztJQUVGLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXROb2RlLCBSZWN0YW5nbGVDbGllbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBTaGFwZURlZmF1bHRTcGFjZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgUGxhaXRCYXNlVGFibGUsIFBsYWl0VGFibGVDZWxsLCBQbGFpdFRhYmxlRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUnO1xuaW1wb3J0IHsgZ2V0Q2VsbFdpdGhQb2ludHMsIHVwZGF0ZUNvbHVtbnMsIHVwZGF0ZVJvd3MgfSBmcm9tICcuLi91dGlscy90YWJsZSc7XG5cbmV4cG9ydCBjb25zdCBzZXRUYWJsZVRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgsIGNlbGxJZDogc3RyaW5nLCB0ZXh0OiBFbGVtZW50LCB0ZXh0SGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpIGFzIFBsYWl0QmFzZVRhYmxlO1xuICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsV2l0aFBvaW50cyhib2FyZCwgdGFibGUsIGNlbGxJZCk7XG4gICAgY29uc3QgY2VsbEluZGV4ID0gdGFibGUuY2VsbHMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gY2VsbC5pZCk7XG4gICAgbGV0IHJvd3MgPSBbLi4udGFibGUucm93c107XG4gICAgbGV0IGNvbHVtbnMgPSBbLi4udGFibGUuY29sdW1uc107XG4gICAgbGV0IGNlbGxzID0gWy4uLnRhYmxlLmNlbGxzXTtcbiAgICBsZXQgcG9pbnRzID0gWy4uLnRhYmxlLnBvaW50c107XG4gICAgY29uc3QgeyB3aWR0aDogY2VsbFdpZHRoLCBoZWlnaHQ6IGNlbGxIZWlnaHQgfSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhjZWxsLnBvaW50cyk7XG4gICAgY29uc3QgZGVmYXVsdFNwYWNlID0gU2hhcGVEZWZhdWx0U3BhY2UucmVjdGFuZ2xlQW5kVGV4dDtcbiAgICBpZiAoUGxhaXRUYWJsZUVsZW1lbnQuaXNWZXJ0aWNhbFRleHQoY2VsbCBhcyBQbGFpdFRhYmxlQ2VsbCkpIHtcbiAgICAgICAgY29uc3QgY29sdW1uSWR4ID0gdGFibGUuY29sdW1ucy5maW5kSW5kZXgoY29sdW1uID0+IGNvbHVtbi5pZCA9PT0gY2VsbC5jb2x1bW5JZCk7XG4gICAgICAgIGlmICh0ZXh0SGVpZ2h0ID4gY2VsbFdpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb2x1bW5XaWR0aCA9IHRleHRIZWlnaHQgKyBkZWZhdWx0U3BhY2UgKiAyO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbmV3Q29sdW1uV2lkdGggLSBjZWxsV2lkdGg7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB1cGRhdGVDb2x1bW5zKHRhYmxlLCB0YWJsZS5jb2x1bW5zW2NvbHVtbklkeF0uaWQsIG5ld0NvbHVtbldpZHRoLCBvZmZzZXQpO1xuICAgICAgICAgICAgcG9pbnRzID0gcmVzdWx0LnBvaW50cztcbiAgICAgICAgICAgIGNvbHVtbnMgPSByZXN1bHQuY29sdW1ucztcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJvd0lkeCA9IHRhYmxlLnJvd3MuZmluZEluZGV4KHJvdyA9PiByb3cuaWQgPT09IGNlbGwucm93SWQpO1xuICAgICAgICBjb25zdCB0YWJsZVJvdyA9IHRhYmxlLnJvd3Nbcm93SWR4XTtcbiAgICAgICAgY29uc3QgY29tcGFyZUhlaWdodCA9IHRhYmxlUm93LmhlaWdodCA/PyBNYXRoLm1heChjZWxsSGVpZ2h0LCBjZWxsLnRleHRIZWlnaHQgfHwgMCk7XG4gICAgICAgIGlmICh0ZXh0SGVpZ2h0ID4gY29tcGFyZUhlaWdodCkge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93SGVpZ2h0ID0gdGV4dEhlaWdodCArIGRlZmF1bHRTcGFjZSAqIDI7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBuZXdSb3dIZWlnaHQgLSBjb21wYXJlSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdXBkYXRlUm93cyh0YWJsZSwgdGFibGUucm93c1tyb3dJZHhdLmlkLCBuZXdSb3dIZWlnaHQsIG9mZnNldCk7XG4gICAgICAgICAgICBwb2ludHMgPSByZXN1bHQucG9pbnRzO1xuICAgICAgICAgICAgcm93cyA9IHJlc3VsdC5yb3dzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNlbGxzW2NlbGxJbmRleF0gPSB7XG4gICAgICAgIC4uLmNlbGxzW2NlbGxJbmRleF0sXG4gICAgICAgIHRleHRIZWlnaHQ6IHRleHRIZWlnaHQsXG4gICAgICAgIHRleHRcbiAgICB9O1xuXG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHJvd3MsIGNvbHVtbnMsIGNlbGxzLCBwb2ludHMgfSwgcGF0aCk7XG59O1xuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Transforms } from '@plait/core';
|
|
2
|
-
import { getSelectedCells } from '../utils';
|
|
3
|
-
export const setTableFill = (board, element, fill, path) => {
|
|
4
|
-
const selectedCells = getSelectedCells(element);
|
|
5
|
-
let newCells = element.cells;
|
|
6
|
-
if (selectedCells?.length) {
|
|
7
|
-
newCells = element.cells.map(cell => {
|
|
8
|
-
if (selectedCells.map(item => item.id).includes(cell.id)) {
|
|
9
|
-
return getNewCell(cell, fill);
|
|
10
|
-
}
|
|
11
|
-
return cell;
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
newCells = element.cells.map(cell => {
|
|
16
|
-
if (cell.text && cell.textHeight) {
|
|
17
|
-
return getNewCell(cell, fill);
|
|
18
|
-
}
|
|
19
|
-
return cell;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
Transforms.setNode(board, { cells: newCells }, path);
|
|
23
|
-
};
|
|
24
|
-
const getNewCell = (cell, fill) => {
|
|
25
|
-
const newCell = {
|
|
26
|
-
...cell
|
|
27
|
-
};
|
|
28
|
-
if (fill) {
|
|
29
|
-
newCell.fill = fill;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
delete newCell.fill;
|
|
33
|
-
}
|
|
34
|
-
return newCell;
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXVCLEVBQUUsSUFBbUIsRUFBRSxJQUFVLEVBQUUsRUFBRTtJQUN4RyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzdCLElBQUksYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztTQUFNLENBQUM7UUFDSixRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQW9CLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQzdELE1BQU0sT0FBTyxHQUFHO1FBQ1osR0FBRyxJQUFJO0tBQ1YsQ0FBQztJQUNGLElBQUksSUFBSSxFQUFFLENBQUM7UUFDUCxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgVHJhbnNmb3JtcyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0QmFzZVRhYmxlLCBQbGFpdFRhYmxlQ2VsbCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRDZWxscyB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IHNldFRhYmxlRmlsbCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRCYXNlVGFibGUsIGZpbGw6IHN0cmluZyB8IG51bGwsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZENlbGxzID0gZ2V0U2VsZWN0ZWRDZWxscyhlbGVtZW50KTtcbiAgICBsZXQgbmV3Q2VsbHMgPSBlbGVtZW50LmNlbGxzO1xuICAgIGlmIChzZWxlY3RlZENlbGxzPy5sZW5ndGgpIHtcbiAgICAgICAgbmV3Q2VsbHMgPSBlbGVtZW50LmNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZENlbGxzLm1hcChpdGVtID0+IGl0ZW0uaWQpLmluY2x1ZGVzKGNlbGwuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE5ld0NlbGwoY2VsbCwgZmlsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q2VsbHMgPSBlbGVtZW50LmNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgIGlmIChjZWxsLnRleHQgJiYgY2VsbC50ZXh0SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE5ld0NlbGwoY2VsbCwgZmlsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBjZWxsczogbmV3Q2VsbHMgfSwgcGF0aCk7XG59O1xuXG5jb25zdCBnZXROZXdDZWxsID0gKGNlbGw6IFBsYWl0VGFibGVDZWxsLCBmaWxsOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgY29uc3QgbmV3Q2VsbCA9IHtcbiAgICAgICAgLi4uY2VsbFxuICAgIH07XG4gICAgaWYgKGZpbGwpIHtcbiAgICAgICAgbmV3Q2VsbC5maWxsID0gZmlsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgbmV3Q2VsbC5maWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Q2VsbDtcbn07XG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { PlaitBoard, Transforms } from '@plait/core';
|
|
2
|
-
import { getSelectedVectorLineElements } from '../utils';
|
|
3
|
-
export const setVectorLineShape = (board, newProperties) => {
|
|
4
|
-
const elements = getSelectedVectorLineElements(board);
|
|
5
|
-
elements.map(element => {
|
|
6
|
-
if (element.shape === newProperties.shape) {
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
const path = PlaitBoard.findPath(board, element);
|
|
10
|
-
Transforms.setNode(board, { ...newProperties }, path);
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy90cmFuc2Zvcm1zL3ZlY3Rvci1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsYUFBdUMsRUFBRSxFQUFFO0lBQzdGLE1BQU0sUUFBUSxHQUFHLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbkIsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdFZlY3RvckxpbmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgc2V0VmVjdG9yTGluZVNoYXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0VmVjdG9yTGluZT4pID0+IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGdldFNlbGVjdGVkVmVjdG9yTGluZUVsZW1lbnRzKGJvYXJkKTtcbiAgICBlbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnNoYXBlID09PSBuZXdQcm9wZXJ0aWVzLnNoYXBlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgLi4ubmV3UHJvcGVydGllcyB9LCBwYXRoKTtcbiAgICB9KTtcbn07XG4iXX0=
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { arrowPoints, createG, createPath, distanceBetweenPointAndPoint, drawLinearPath, rotate } from '@plait/core';
|
|
2
|
-
import { ArrowLineMarkerType, PlaitArrowLine } from '../../interfaces';
|
|
3
|
-
import { getExtendPoint, getUnitVectorByPointAndPoint } from '@plait/common';
|
|
4
|
-
import { getStrokeWidthByElement } from '../common';
|
|
5
|
-
const ARROW_LENGTH = 20;
|
|
6
|
-
export const drawArrowLineArrow = (element, points, options) => {
|
|
7
|
-
const arrowG = createG();
|
|
8
|
-
if (PlaitArrowLine.isSourceMark(element, ArrowLineMarkerType.none) && PlaitArrowLine.isTargetMark(element, ArrowLineMarkerType.none)) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
12
|
-
const offset = (strokeWidth * strokeWidth) / 3;
|
|
13
|
-
if (points.length === 1) {
|
|
14
|
-
points = [points[0], [points[0][0] + 0.1, points[0][1]]];
|
|
15
|
-
}
|
|
16
|
-
if (!PlaitArrowLine.isSourceMark(element, ArrowLineMarkerType.none)) {
|
|
17
|
-
const source = getExtendPoint(points[0], points[1], ARROW_LENGTH + offset);
|
|
18
|
-
const sourceArrow = getArrow(element, { marker: element.source.marker, source, target: points[0], isSource: true }, options);
|
|
19
|
-
sourceArrow && arrowG.appendChild(sourceArrow);
|
|
20
|
-
}
|
|
21
|
-
if (!PlaitArrowLine.isTargetMark(element, ArrowLineMarkerType.none)) {
|
|
22
|
-
const source = getExtendPoint(points[points.length - 1], points[points.length - 2], ARROW_LENGTH + offset);
|
|
23
|
-
const arrow = getArrow(element, { marker: element.target.marker, source, target: points[points.length - 1], isSource: false }, options);
|
|
24
|
-
arrow && arrowG.appendChild(arrow);
|
|
25
|
-
}
|
|
26
|
-
return arrowG;
|
|
27
|
-
};
|
|
28
|
-
const getArrow = (element, arrowOptions, options) => {
|
|
29
|
-
const { marker, target, source, isSource } = arrowOptions;
|
|
30
|
-
let targetArrow;
|
|
31
|
-
switch (marker) {
|
|
32
|
-
case ArrowLineMarkerType.openTriangle: {
|
|
33
|
-
targetArrow = drawOpenTriangle(element, source, target, options);
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
case ArrowLineMarkerType.solidTriangle: {
|
|
37
|
-
targetArrow = drawSolidTriangle(source, target, options);
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
case ArrowLineMarkerType.arrow: {
|
|
41
|
-
targetArrow = drawArrow(element, source, target, options);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case ArrowLineMarkerType.sharpArrow: {
|
|
45
|
-
targetArrow = drawSharpArrow(source, target, options);
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case ArrowLineMarkerType.oneSideUp: {
|
|
49
|
-
targetArrow = drawOneSideArrow(source, target, isSource ? 'down' : 'up', options);
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
case ArrowLineMarkerType.oneSideDown: {
|
|
53
|
-
targetArrow = drawOneSideArrow(source, target, isSource ? 'up' : 'down', options);
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
case ArrowLineMarkerType.hollowTriangle: {
|
|
57
|
-
targetArrow = drawHollowTriangleArrow(source, target, options);
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case ArrowLineMarkerType.singleSlash: {
|
|
61
|
-
targetArrow = drawSingleSlash(source, target, isSource, options);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return targetArrow;
|
|
66
|
-
};
|
|
67
|
-
const drawSharpArrow = (source, target, options) => {
|
|
68
|
-
const startPoint = target;
|
|
69
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 20);
|
|
70
|
-
const g = createG();
|
|
71
|
-
const path = createPath();
|
|
72
|
-
let polylinePath = `M${pointRight[0]},${pointRight[1]}A25,25,20,0,1,${pointLeft[0]},${pointLeft[1]}L${startPoint[0]},${startPoint[1]}Z`;
|
|
73
|
-
path.setAttribute('d', polylinePath);
|
|
74
|
-
path.setAttribute('stroke', `${options?.stroke}`);
|
|
75
|
-
path.setAttribute('stroke-width', `${options?.strokeWidth}`);
|
|
76
|
-
path.setAttribute('fill', `${options?.stroke}`);
|
|
77
|
-
g.appendChild(path);
|
|
78
|
-
return g;
|
|
79
|
-
};
|
|
80
|
-
const drawArrow = (element, source, target, options) => {
|
|
81
|
-
const unitVector = getUnitVectorByPointAndPoint(source, target);
|
|
82
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
83
|
-
const endPoint = [target[0] + (strokeWidth * unitVector[0]) / 2, target[1] + (strokeWidth * unitVector[1]) / 2];
|
|
84
|
-
const distance = distanceBetweenPointAndPoint(...source, ...endPoint);
|
|
85
|
-
const middlePoint = [
|
|
86
|
-
endPoint[0] - (((distance * 3) / 5 + strokeWidth) / 2) * unitVector[0],
|
|
87
|
-
endPoint[1] - (((distance * 3) / 5 + strokeWidth) / 2) * unitVector[1]
|
|
88
|
-
];
|
|
89
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 30);
|
|
90
|
-
const arrowG = drawLinearPath([pointLeft, endPoint, pointRight, middlePoint], { ...options, fill: options.stroke }, true);
|
|
91
|
-
const path = arrowG.querySelector('path');
|
|
92
|
-
path.setAttribute('stroke-linejoin', 'round');
|
|
93
|
-
return arrowG;
|
|
94
|
-
};
|
|
95
|
-
const drawSolidTriangle = (source, target, options) => {
|
|
96
|
-
const endPoint = target;
|
|
97
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 30);
|
|
98
|
-
return drawLinearPath([pointLeft, endPoint, pointRight], { ...options, fill: options.stroke }, true);
|
|
99
|
-
};
|
|
100
|
-
const drawOpenTriangle = (element, source, target, options) => {
|
|
101
|
-
const unitVector = getUnitVectorByPointAndPoint(source, target);
|
|
102
|
-
const strokeWidth = getStrokeWidthByElement(element);
|
|
103
|
-
const endPoint = [target[0] + (strokeWidth * unitVector[0]) / 2, target[1] + (strokeWidth * unitVector[1]) / 2];
|
|
104
|
-
const { pointLeft, pointRight } = arrowPoints(source, endPoint, 40);
|
|
105
|
-
return drawLinearPath([pointLeft, endPoint, pointRight], options);
|
|
106
|
-
};
|
|
107
|
-
const drawOneSideArrow = (source, target, side, options) => {
|
|
108
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 40);
|
|
109
|
-
return drawLinearPath([side === 'up' ? pointRight : pointLeft, target], options);
|
|
110
|
-
};
|
|
111
|
-
const drawSingleSlash = (source, target, isSource, options) => {
|
|
112
|
-
const length = distanceBetweenPointAndPoint(...source, ...target);
|
|
113
|
-
const middlePoint = getExtendPoint(target, source, length / 2);
|
|
114
|
-
const angle = isSource ? 120 : 60;
|
|
115
|
-
const start = rotate(...source, ...middlePoint, (angle * Math.PI) / 180);
|
|
116
|
-
const end = rotate(...target, ...middlePoint, (angle * Math.PI) / 180);
|
|
117
|
-
return drawLinearPath([start, end], options);
|
|
118
|
-
};
|
|
119
|
-
const drawHollowTriangleArrow = (source, target, options) => {
|
|
120
|
-
const { pointLeft, pointRight } = arrowPoints(source, target, 30);
|
|
121
|
-
return drawLinearPath([pointLeft, pointRight, target], { ...options, fill: 'white' }, true);
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3ctbGluZS1hcnJvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3V0aWxzL2Fycm93LWxpbmUvYXJyb3ctbGluZS1hcnJvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRcEQsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBdUIsRUFBRSxNQUFlLEVBQUUsT0FBZ0IsRUFBRSxFQUFFO0lBQzdGLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuSSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FB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LElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCwgYXJyb3dQb2ludHMsIGNyZWF0ZUcsIGNyZWF0ZVBhdGgsIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsIGRyYXdMaW5lYXJQYXRoLCByb3RhdGUgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBcnJvd0xpbmVNYXJrZXJUeXBlLCBQbGFpdEFycm93TGluZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ3JvdWdoanMvYmluL2NvcmUnO1xuaW1wb3J0IHsgZ2V0RXh0ZW5kUG9pbnQsIGdldFVuaXRWZWN0b3JCeVBvaW50QW5kUG9pbnQgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50IH0gZnJvbSAnLi4vY29tbW9uJztcblxuaW50ZXJmYWNlIEFycm93T3B0aW9ucyB7XG4gICAgbWFya2VyOiBBcnJvd0xpbmVNYXJrZXJUeXBlO1xuICAgIHNvdXJjZTogUG9pbnQ7XG4gICAgdGFyZ2V0OiBQb2ludDtcbiAgICBpc1NvdXJjZTogYm9vbGVhbjtcbn1cbmNvbnN0IEFSUk9XX0xFTkdUSCA9IDIwO1xuXG5leHBvcnQgY29uc3QgZHJhd0Fycm93TGluZUFycm93ID0gKGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBwb2ludHM6IFBvaW50W10sIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBhcnJvd0cgPSBjcmVhdGVHKCk7XG4gICAgaWYgKFBsYWl0QXJyb3dMaW5lLmlzU291cmNlTWFyayhlbGVtZW50LCBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUpICYmIFBsYWl0QXJyb3dMaW5lLmlzVGFyZ2V0TWFyayhlbGVtZW50LCBBcnJvd0xpbmVNYXJrZXJUeXBlLm5vbmUpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldCA9IChzdHJva2VXaWR0aCAqIHN0cm9rZVdpZHRoKSAvIDM7XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcG9pbnRzID0gW3BvaW50c1swXSwgW3BvaW50c1swXVswXSArIDAuMSwgcG9pbnRzWzBdWzFdXV07XG4gICAgfVxuXG4gICAgaWYgKCFQbGFpdEFycm93TGluZS5pc1NvdXJjZU1hcmsoZWxlbWVudCwgQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lKSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFeHRlbmRQb2ludChwb2ludHNbMF0sIHBvaW50c1sxXSwgQVJST1dfTEVOR1RIICsgb2Zmc2V0KTtcbiAgICAgICAgY29uc3Qgc291cmNlQXJyb3cgPSBnZXRBcnJvdyhlbGVtZW50LCB7IG1hcmtlcjogZWxlbWVudC5zb3VyY2UubWFya2VyLCBzb3VyY2UsIHRhcmdldDogcG9pbnRzWzBdLCBpc1NvdXJjZTogdHJ1ZSB9LCBvcHRpb25zKTtcbiAgICAgICAgc291cmNlQXJyb3cgJiYgYXJyb3dHLmFwcGVuZENoaWxkKHNvdXJjZUFycm93KTtcbiAgICB9XG4gICAgaWYgKCFQbGFpdEFycm93TGluZS5pc1RhcmdldE1hcmsoZWxlbWVudCwgQXJyb3dMaW5lTWFya2VyVHlwZS5ub25lKSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFeHRlbmRQb2ludChwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDJdLCBBUlJPV19MRU5HVEggKyBvZmZzZXQpO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGdldEFycm93KFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHsgbWFya2VyOiBlbGVtZW50LnRhcmdldC5tYXJrZXIsIHNvdXJjZSwgdGFyZ2V0OiBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLCBpc1NvdXJjZTogZmFsc2UgfSxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcblxuICAgICAgICBhcnJvdyAmJiBhcnJvd0cuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyb3dHO1xufTtcblxuY29uc3QgZ2V0QXJyb3cgPSAoZWxlbWVudDogUGxhaXRBcnJvd0xpbmUsIGFycm93T3B0aW9uczogQXJyb3dPcHRpb25zLCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBtYXJrZXIsIHRhcmdldCwgc291cmNlLCBpc1NvdXJjZSB9ID0gYXJyb3dPcHRpb25zO1xuICAgIGxldCB0YXJnZXRBcnJvdztcbiAgICBzd2l0Y2ggKG1hcmtlcikge1xuICAgICAgICBjYXNlIEFycm93TGluZU1hcmtlclR5cGUub3BlblRyaWFuZ2xlOiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdPcGVuVHJpYW5nbGUoZWxlbWVudCwgc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBcnJvd0xpbmVNYXJrZXJUeXBlLnNvbGlkVHJpYW5nbGU6IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd1NvbGlkVHJpYW5nbGUoc291cmNlLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBcnJvd0xpbmVNYXJrZXJUeXBlLmFycm93OiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdBcnJvdyhlbGVtZW50LCBzb3VyY2UsIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFycm93TGluZU1hcmtlclR5cGUuc2hhcnBBcnJvdzoge1xuICAgICAgICAgICAgdGFyZ2V0QXJyb3cgPSBkcmF3U2hhcnBBcnJvdyhzb3VyY2UsIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFycm93TGluZU1hcmtlclR5cGUub25lU2lkZVVwOiB7XG4gICAgICAgICAgICB0YXJnZXRBcnJvdyA9IGRyYXdPbmVTaWRlQXJyb3coc291cmNlLCB0YXJnZXQsIGlzU291cmNlID8gJ2Rvd24nIDogJ3VwJywgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFycm93TGluZU1hcmtlclR5cGUub25lU2lkZURvd246IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd09uZVNpZGVBcnJvdyhzb3VyY2UsIHRhcmdldCwgaXNTb3VyY2UgPyAndXAnIDogJ2Rvd24nLCBvcHRpb25zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQXJyb3dMaW5lTWFya2VyVHlwZS5ob2xsb3dUcmlhbmdsZToge1xuICAgICAgICAgICAgdGFyZ2V0QXJyb3cgPSBkcmF3SG9sbG93VHJpYW5nbGVBcnJvdyhzb3VyY2UsIHRhcmdldCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFycm93TGluZU1hcmtlclR5cGUuc2luZ2xlU2xhc2g6IHtcbiAgICAgICAgICAgIHRhcmdldEFycm93ID0gZHJhd1NpbmdsZVNsYXNoKHNvdXJjZSwgdGFyZ2V0LCBpc1NvdXJjZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0QXJyb3c7XG59O1xuXG5jb25zdCBkcmF3U2hhcnBBcnJvdyA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRQb2ludDogUG9pbnQgPSB0YXJnZXQ7XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgdGFyZ2V0LCAyMCk7XG4gICAgY29uc3QgZyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aCgpO1xuICAgIGxldCBwb2x5bGluZVBhdGggPSBgTSR7cG9pbnRSaWdodFswXX0sJHtwb2ludFJpZ2h0WzFdfUEyNSwyNSwyMCwwLDEsJHtwb2ludExlZnRbMF19LCR7cG9pbnRMZWZ0WzFdfUwke3N0YXJ0UG9pbnRbMF19LCR7c3RhcnRQb2ludFsxXX1aYDtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnZCcsIHBvbHlsaW5lUGF0aCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAke29wdGlvbnM/LnN0cm9rZX1gKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgYCR7b3B0aW9ucz8uc3Ryb2tlV2lkdGh9YCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBgJHtvcHRpb25zPy5zdHJva2V9YCk7XG4gICAgZy5hcHBlbmRDaGlsZChwYXRoKTtcbiAgICByZXR1cm4gZztcbn07XG5cbmNvbnN0IGRyYXdBcnJvdyA9IChlbGVtZW50OiBQbGFpdEFycm93TGluZSwgc291cmNlOiBQb2ludCwgdGFyZ2V0OiBQb2ludCwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHVuaXRWZWN0b3IgPSBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KHNvdXJjZSwgdGFyZ2V0KTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGVuZFBvaW50OiBQb2ludCA9IFt0YXJnZXRbMF0gKyAoc3Ryb2tlV2lkdGggKiB1bml0VmVjdG9yWzBdKSAvIDIsIHRhcmdldFsxXSArIChzdHJva2VXaWR0aCAqIHVuaXRWZWN0b3JbMV0pIC8gMl07XG4gICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZSwgLi4uZW5kUG9pbnQpO1xuICAgIGNvbnN0IG1pZGRsZVBvaW50OiBQb2ludCA9IFtcbiAgICAgICAgZW5kUG9pbnRbMF0gLSAoKChkaXN0YW5jZSAqIDMpIC8gNSArIHN0cm9rZVdpZHRoKSAvIDIpICogdW5pdFZlY3RvclswXSxcbiAgICAgICAgZW5kUG9pbnRbMV0gLSAoKChkaXN0YW5jZSAqIDMpIC8gNSArIHN0cm9rZVdpZHRoKSAvIDIpICogdW5pdFZlY3RvclsxXVxuICAgIF07XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgZW5kUG9pbnQsIDMwKTtcbiAgICBjb25zdCBhcnJvd0cgPSBkcmF3TGluZWFyUGF0aChbcG9pbnRMZWZ0LCBlbmRQb2ludCwgcG9pbnRSaWdodCwgbWlkZGxlUG9pbnRdLCB7IC4uLm9wdGlvbnMsIGZpbGw6IG9wdGlvbnMuc3Ryb2tlIH0sIHRydWUpO1xuICAgIGNvbnN0IHBhdGggPSBhcnJvd0cucXVlcnlTZWxlY3RvcigncGF0aCcpO1xuICAgIHBhdGghLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWxpbmVqb2luJywgJ3JvdW5kJyk7XG4gICAgcmV0dXJuIGFycm93Rztcbn07XG5cbmNvbnN0IGRyYXdTb2xpZFRyaWFuZ2xlID0gKHNvdXJjZTogUG9pbnQsIHRhcmdldDogUG9pbnQsIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBlbmRQb2ludDogUG9pbnQgPSB0YXJnZXQ7XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgZW5kUG9pbnQsIDMwKTtcbiAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgoW3BvaW50TGVmdCwgZW5kUG9pbnQsIHBvaW50UmlnaHRdLCB7IC4uLm9wdGlvbnMsIGZpbGw6IG9wdGlvbnMuc3Ryb2tlIH0sIHRydWUpO1xufTtcblxuY29uc3QgZHJhd09wZW5UcmlhbmdsZSA9IChlbGVtZW50OiBQbGFpdEFycm93TGluZSwgc291cmNlOiBQb2ludCwgdGFyZ2V0OiBQb2ludCwgb3B0aW9uczogT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHVuaXRWZWN0b3IgPSBnZXRVbml0VmVjdG9yQnlQb2ludEFuZFBvaW50KHNvdXJjZSwgdGFyZ2V0KTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGVuZFBvaW50OiBQb2ludCA9IFt0YXJnZXRbMF0gKyAoc3Ryb2tlV2lkdGggKiB1bml0VmVjdG9yWzBdKSAvIDIsIHRhcmdldFsxXSArIChzdHJva2VXaWR0aCAqIHVuaXRWZWN0b3JbMV0pIC8gMl07XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgZW5kUG9pbnQsIDQwKTtcbiAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgoW3BvaW50TGVmdCwgZW5kUG9pbnQsIHBvaW50UmlnaHRdLCBvcHRpb25zKTtcbn07XG5cbmNvbnN0IGRyYXdPbmVTaWRlQXJyb3cgPSAoc291cmNlOiBQb2ludCwgdGFyZ2V0OiBQb2ludCwgc2lkZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgdGFyZ2V0LCA0MCk7XG4gICAgcmV0dXJuIGRyYXdMaW5lYXJQYXRoKFtzaWRlID09PSAndXAnID8gcG9pbnRSaWdodCA6IHBvaW50TGVmdCwgdGFyZ2V0XSwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCBkcmF3U2luZ2xlU2xhc2ggPSAoc291cmNlOiBQb2ludCwgdGFyZ2V0OiBQb2ludCwgaXNTb3VyY2U6IGJvb2xlYW4sIG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBsZW5ndGggPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KC4uLnNvdXJjZSwgLi4udGFyZ2V0KTtcbiAgICBjb25zdCBtaWRkbGVQb2ludCA9IGdldEV4dGVuZFBvaW50KHRhcmdldCwgc291cmNlLCBsZW5ndGggLyAyKTtcbiAgICBjb25zdCBhbmdsZSA9IGlzU291cmNlID8gMTIwIDogNjA7XG4gICAgY29uc3Qgc3RhcnQgPSByb3RhdGUoLi4uc291cmNlLCAuLi5taWRkbGVQb2ludCwgKGFuZ2xlICogTWF0aC5QSSkgLyAxODApIGFzIFBvaW50O1xuICAgIGNvbnN0IGVuZCA9IHJvdGF0ZSguLi50YXJnZXQsIC4uLm1pZGRsZVBvaW50LCAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MCkgYXMgUG9pbnQ7XG4gICAgcmV0dXJuIGRyYXdMaW5lYXJQYXRoKFtzdGFydCwgZW5kXSwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCBkcmF3SG9sbG93VHJpYW5nbGVBcnJvdyA9IChzb3VyY2U6IFBvaW50LCB0YXJnZXQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludExlZnQsIHBvaW50UmlnaHQgfSA9IGFycm93UG9pbnRzKHNvdXJjZSwgdGFyZ2V0LCAzMCk7XG4gICAgcmV0dXJuIGRyYXdMaW5lYXJQYXRoKFtwb2ludExlZnQsIHBvaW50UmlnaHQsIHRhcmdldF0sIHsgLi4ub3B0aW9ucywgZmlsbDogJ3doaXRlJyB9LCB0cnVlKTtcbn07XG4iXX0=
|