@contrail/document-table 1.0.5-alpha.0 → 1.0.5-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ class TableCopyService {
11
11
  static copy(tableElement, childElements) {
12
12
  const copiedChildElementIds = new Map();
13
13
  const childElementsMap = new Map();
14
- childElements.forEach((element) => {
14
+ childElements.forEach(element => {
15
15
  childElementsMap.set(element.id, element);
16
16
  });
17
17
  const rowIds = [];
@@ -55,16 +55,16 @@ class TableCopyService {
55
55
  columnIds.push(newElement.id);
56
56
  newChildElements.push(newElement);
57
57
  }
58
- const cellElements = childElements.filter((e) => e.type === 'cell');
58
+ const cellElements = childElements.filter(e => e.type === 'cell');
59
59
  if (cellElements.length < tableElement.rowIds.length * tableElement.columnIds.length) {
60
60
  for (let i = 0; i < tableElement.rowIds.length; i++) {
61
61
  for (let j = 0; j < tableElement.columnIds.length; j++) {
62
62
  const rowId = tableElement.rowIds[i];
63
63
  const columnId = tableElement.columnIds[j];
64
- const cellElement = cellElements.find((e) => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
64
+ const cellElement = cellElements.find(e => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
65
65
  if (!cellElement) {
66
- const row = childElements.find((e) => e.id === rowId);
67
- const column = childElements.find((e) => e.id === columnId);
66
+ const row = childElements.find(e => e.id === rowId);
67
+ const column = childElements.find(e => e.id === columnId);
68
68
  cellElements.push((0, table_service_1.createCell)({
69
69
  rowId,
70
70
  columnId,
@@ -110,7 +110,7 @@ class TableCopyService {
110
110
  const tableId = (0, nanoid_1.nanoid)(16);
111
111
  let width = 0, height = 0;
112
112
  let startRow, endRow, startColumn, endColumn;
113
- cells.forEach((cell) => {
113
+ cells.forEach(cell => {
114
114
  const rowIndex = element.rowIds.indexOf(cell.rowId);
115
115
  const columnIndex = element.columnIds.indexOf(cell.columnId);
116
116
  const isNotSet = startRow == undefined;
@@ -124,8 +124,8 @@ class TableCopyService {
124
124
  endColumn = columnIndex;
125
125
  existingCellsMap.set(`${rowIndex}_${columnIndex}`, cell);
126
126
  });
127
- const skipRows = Array.from({ length: endRow - startRow + 1 }, (value, index) => startRow + index).filter((i) => !Array.from(existingCellsMap.keys()).find((v) => v.startsWith(`${i}_`)));
128
- const skipColumns = Array.from({ length: endColumn - startColumn + 1 }, (value, index) => startColumn + index).filter((j) => !Array.from(existingCellsMap.keys()).find((v) => v.endsWith(`_${j}`)));
127
+ const skipRows = Array.from({ length: endRow - startRow + 1 }, (value, index) => startRow + index).filter(i => !Array.from(existingCellsMap.keys()).find(v => v.startsWith(`${i}_`)));
128
+ const skipColumns = Array.from({ length: endColumn - startColumn + 1 }, (value, index) => startColumn + index).filter(j => !Array.from(existingCellsMap.keys()).find(v => v.endsWith(`_${j}`)));
129
129
  for (let i = startRow; i <= endRow; i++) {
130
130
  if (skipRows.indexOf(i) !== -1)
131
131
  continue;
@@ -275,7 +275,8 @@ class TableCopyService {
275
275
  var _a, _b, _c, _d, _e, _f;
276
276
  const fontFamily = `${(_c = (_b = (_a = cellElement.style) === null || _a === void 0 ? void 0 : _a.font) === null || _b === void 0 ? void 0 : _b.family) !== null && _c !== void 0 ? _c : table_constants_1.DEFAULT_TEXT_FONT_FAMILY}`;
277
277
  const fontSize = `${(_f = (_e = (_d = cellElement.style) === null || _d === void 0 ? void 0 : _d.font) === null || _e === void 0 ? void 0 : _e.size) !== null && _f !== void 0 ? _f : table_constants_1.DEFAULT_TEXT_FONT_SIZE}pt`;
278
- const size = table_service_1.TableService.getSize(cellElement.text, `width: ${cellElement.size.width - table_constants_1.TABLE_TEXT_PADDING * 2}px; height: auto; font-family: ${fontFamily}; font-size: ${fontSize};`);
278
+ const size = table_service_1.TableService.getSize(cellElement.text, `width: ${cellElement.size.width -
279
+ table_constants_1.TABLE_TEXT_PADDING * 2}px; height: auto; font-family: ${fontFamily}; font-size: ${fontSize};`);
279
280
  const documentElement = {
280
281
  isTextTool: true,
281
282
  text: cellElement.text,
@@ -33,7 +33,7 @@ class TableMergeService {
33
33
  const rowId = tableElement.rowIds[i];
34
34
  for (let j = columnIndex; j < columnIndex + ((_b = cell.colspan) !== null && _b !== void 0 ? _b : 1); j++) {
35
35
  const columnId = tableElement.columnIds[j];
36
- const mergedCell = childElements.find((e) => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
36
+ const mergedCell = childElements.find(e => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
37
37
  if (mergedCell) {
38
38
  mergedCells.push(mergedCell);
39
39
  }
@@ -45,7 +45,7 @@ class TableMergeService {
45
45
  static isValidRangeToMerge(tableElement, childElements, tableRange) {
46
46
  if (tableRange.singular())
47
47
  return false;
48
- const mergedRanges = TableMergeService.getMergedRanges(tableElement, childElements).filter((range) => range.intersects(tableRange) && !range.within(tableRange));
48
+ const mergedRanges = TableMergeService.getMergedRanges(tableElement, childElements).filter(range => range.intersects(tableRange) && !range.within(tableRange));
49
49
  return mergedRanges.length === 0;
50
50
  }
51
51
  static merge(tableElement, childElements, tableRange) {
@@ -59,7 +59,7 @@ class TableMergeService {
59
59
  tableRange.each((rowIndex, columnIndex) => {
60
60
  const rowId = tableElement.rowIds[rowIndex];
61
61
  const columnId = tableElement.columnIds[columnIndex];
62
- const element = childElements.find((e) => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
62
+ const element = childElements.find(e => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
63
63
  if (element) {
64
64
  const elementUndo = util_1.ObjectUtil.cloneDeep(element);
65
65
  element.colspan = 1;
@@ -67,9 +67,9 @@ class TableMergeService {
67
67
  if (tableRange.isStart(rowIndex, columnIndex)) {
68
68
  firstCell = element;
69
69
  let width = 0;
70
- tableRange.eachColumn((columnIndex) => {
70
+ tableRange.eachColumn(columnIndex => {
71
71
  const columnId = tableElement.columnIds[columnIndex];
72
- const column = childElements.find((e) => e.type === 'column' && e.id === columnId);
72
+ const column = childElements.find(e => e.type === 'column' && e.id === columnId);
73
73
  width = width + column.size.width;
74
74
  });
75
75
  if (colspan > 1) {
@@ -96,7 +96,7 @@ class TableMergeService {
96
96
  }
97
97
  static unmerge(tableElement, childElements, tableRange) {
98
98
  const mergedRanges = TableMergeService.getMergedRanges(tableElement, childElements);
99
- if (!mergedRanges.find((range) => range.equals(tableRange)))
99
+ if (!mergedRanges.find(range => range.equals(tableRange)))
100
100
  throw new Error(table_service_1.TABLE_ERROR.INVALID_RANGE_TO_UNMERGE);
101
101
  const tableUndo = Object.assign(Object.assign({}, (0, table_service_1.tableData)(tableElement)), { size: Object.assign({}, tableElement.size) });
102
102
  const elementsToUpdate = [];
@@ -104,9 +104,9 @@ class TableMergeService {
104
104
  tableRange.each((rowIndex, columnIndex) => {
105
105
  const rowId = tableElement.rowIds[rowIndex];
106
106
  const columnId = tableElement.columnIds[columnIndex];
107
- const element = childElements.find((e) => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
108
- const column = childElements.find((e) => e.type === 'column' && e.id === columnId);
109
- const row = childElements.find((e) => e.type === 'row' && e.id === rowId);
107
+ const element = childElements.find(e => e.type === 'cell' && e.columnId === columnId && e.rowId === rowId);
108
+ const column = childElements.find(e => e.type === 'column' && e.id === columnId);
109
+ const row = childElements.find(e => e.type === 'row' && e.id === rowId);
110
110
  if (element && column && row) {
111
111
  const elementUndo = util_1.ObjectUtil.cloneDeep(element);
112
112
  element.colspan = 1;
@@ -13,23 +13,23 @@ class TablePasteService {
13
13
  }
14
14
  static pasteRowsAndColumns(tableElement, childElements, elementsToPaste, targetRow, targetColumn) {
15
15
  var _a, _b, _c;
16
- const tableToPaste = elementsToPaste.find((e) => e.type === 'table');
17
- const rowsToPaste = elementsToPaste.filter((e) => e.type === 'row');
18
- const columnsToPaste = elementsToPaste.filter((e) => e.type === 'column');
19
- const cellsToPaste = elementsToPaste.filter((e) => e.type === 'cell');
16
+ const tableToPaste = elementsToPaste.find(e => e.type === 'table');
17
+ const rowsToPaste = elementsToPaste.filter(e => e.type === 'row');
18
+ const columnsToPaste = elementsToPaste.filter(e => e.type === 'column');
19
+ const cellsToPaste = elementsToPaste.filter(e => e.type === 'cell');
20
20
  const startRow = targetRow;
21
21
  const endRow = startRow + tableToPaste.rowIds.length - 1;
22
22
  const startColumn = targetColumn;
23
23
  const endColumn = startColumn + tableToPaste.columnIds.length - 1;
24
- const existingCells = childElements.filter((e) => e.type === 'cell');
24
+ const existingCells = childElements.filter(e => e.type === 'cell');
25
25
  const elementsToCreate = [];
26
26
  const elementsToUpdate = [];
27
27
  let existingMergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements);
28
28
  for (let rowIndex = startRow; rowIndex <= endRow; rowIndex++) {
29
29
  const rowToPaste = rowsToPaste[rowIndex - targetRow];
30
30
  let existingRowId = tableElement.rowIds[rowIndex];
31
- let existingRow = childElements.find((e) => e.type === 'row' && e.id === existingRowId) ||
32
- elementsToCreate.find((e) => e.type === 'row' && e.id === existingRowId);
31
+ let existingRow = childElements.find(e => e.type === 'row' && e.id === existingRowId) ||
32
+ elementsToCreate.find(e => e.type === 'row' && e.id === existingRowId);
33
33
  this.log('current row', rowIndex, existingRowId, existingRow);
34
34
  if (!existingRowId) {
35
35
  const [newRow, ...newRowCells] = (_a = table_service_1.TableService.addRow(tableElement, [...existingCells, ...elementsToCreate], rowIndex, rowToPaste.size.height)) === null || _a === void 0 ? void 0 : _a.elementsToCreate;
@@ -46,8 +46,8 @@ class TablePasteService {
46
46
  for (let columnIndex = startColumn; columnIndex <= endColumn; columnIndex++) {
47
47
  const columnToPaste = columnsToPaste[columnIndex - targetColumn];
48
48
  let existingColumnId = tableElement.columnIds[columnIndex];
49
- let existingColumn = childElements.find((e) => e.type === 'column' && e.id === existingColumnId) ||
50
- elementsToCreate.find((e) => e.type === 'column' && e.id === existingColumnId);
49
+ let existingColumn = childElements.find(e => e.type === 'column' && e.id === existingColumnId) ||
50
+ elementsToCreate.find(e => e.type === 'column' && e.id === existingColumnId);
51
51
  this.log('current column', columnIndex, existingColumnId, existingColumn);
52
52
  if (!tableElement.columnIds[columnIndex]) {
53
53
  const [newColumn, ...newColumnCells] = (_b = table_service_1.TableService.addColumn(tableElement, [...existingCells, ...elementsToCreate], columnIndex, columnToPaste.size.width)) === null || _b === void 0 ? void 0 : _b.elementsToCreate;
@@ -58,21 +58,22 @@ class TablePasteService {
58
58
  }
59
59
  if (columnToPaste.size.width > existingColumn.size.width) {
60
60
  const updatedColumn = table_service_1.TableService.resizeColumn(tableElement, childElements, existingColumnId, columnToPaste.size.width).elementsToUpdate[1];
61
- const updatedRowAndCells = table_service_1.TableService.autoFitRows(tableElement, childElements, existingColumnId).elementsToUpdate;
61
+ const updatedRowAndCells = table_service_1.TableService.autoFitRows(tableElement, childElements, existingColumnId)
62
+ .elementsToUpdate;
62
63
  const uniqueUpdatedRowAndCells = (0, documents_1.uniqueElementsToUpdate)(updatedRowAndCells, elementsToUpdate);
63
64
  elementsToUpdate.push(updatedColumn);
64
65
  elementsToUpdate.push(...uniqueUpdatedRowAndCells);
65
66
  this.log('resized column', columnIndex, existingColumnId, existingColumn);
66
67
  this.log('resized column cells and row', uniqueUpdatedRowAndCells, uniqueUpdatedRowAndCells);
67
68
  }
68
- const cellToPaste = cellsToPaste.find((e) => e.rowId === rowToPaste.id && e.columnId === columnToPaste.id);
69
+ const cellToPaste = cellsToPaste.find(e => e.rowId === rowToPaste.id && e.columnId === columnToPaste.id);
69
70
  if (!cellToPaste)
70
71
  continue;
71
72
  const cellRange = new table_range_1.TableRange(rowIndex, rowIndex, columnIndex, columnIndex);
72
- const mergedRange = existingMergedRanges.find((range) => range.intersects(cellRange));
73
+ const mergedRange = existingMergedRanges.find(range => range.intersects(cellRange));
73
74
  const mergedRangeOther = mergedRange && !cellRange.equals(mergedRange.start());
74
75
  if (mergedRange) {
75
- existingMergedRanges = existingMergedRanges.filter((r) => !r.equals(mergedRange));
76
+ existingMergedRanges = existingMergedRanges.filter(r => !r.equals(mergedRange));
76
77
  }
77
78
  if (mergedRangeOther) {
78
79
  const [updatedTable, ...unmergedCellAndRow] = (_c = table_merge_service_1.TableMergeService.unmerge(tableElement, childElements, mergedRange)) === null || _c === void 0 ? void 0 : _c.elementsToUpdate;
@@ -85,15 +86,15 @@ class TablePasteService {
85
86
  return { elementsToCreate, elementsToUpdate };
86
87
  }
87
88
  static pasteTableCells(tableElement, childElements, elementsToPaste, targetRow, targetColumn) {
88
- const tableToPaste = elementsToPaste.find((e) => e.type === 'table');
89
- const rowsToPaste = elementsToPaste.filter((e) => e.type === 'row');
90
- const columnsToPaste = elementsToPaste.filter((e) => e.type === 'column');
91
- const cellsToPaste = elementsToPaste.filter((e) => e.type === 'cell');
89
+ const tableToPaste = elementsToPaste.find(e => e.type === 'table');
90
+ const rowsToPaste = elementsToPaste.filter(e => e.type === 'row');
91
+ const columnsToPaste = elementsToPaste.filter(e => e.type === 'column');
92
+ const cellsToPaste = elementsToPaste.filter(e => e.type === 'cell');
92
93
  const startRow = targetRow;
93
94
  const endRow = startRow + tableToPaste.rowIds.length - 1;
94
95
  const startColumn = targetColumn;
95
96
  const endColumn = startColumn + tableToPaste.columnIds.length - 1;
96
- const existingCells = childElements.filter((e) => e.type === 'cell');
97
+ const existingCells = childElements.filter(e => e.type === 'cell');
97
98
  const tableUndo = util_1.ObjectUtil.cloneDeep(tableElement);
98
99
  const { elementsToUpdate, elementsToCreate } = TablePasteService.pasteRowsAndColumns(tableElement, childElements, elementsToPaste, targetRow, targetColumn);
99
100
  for (let rowIndex = startRow; rowIndex <= endRow; rowIndex++) {
@@ -102,13 +103,13 @@ class TablePasteService {
102
103
  for (let columnIndex = startColumn; columnIndex <= endColumn; columnIndex++) {
103
104
  const columnToPaste = columnsToPaste[columnIndex - targetColumn];
104
105
  const existingColumnId = tableElement.columnIds[columnIndex];
105
- const existingColumn = childElements.find((e) => e.type === 'column' && e.id === existingColumnId) ||
106
- elementsToCreate.find((e) => e.type === 'column' && e.id === existingColumnId);
107
- const cellToPaste = cellsToPaste.find((e) => e.rowId === rowToPaste.id && e.columnId === columnToPaste.id);
106
+ const existingColumn = childElements.find(e => e.type === 'column' && e.id === existingColumnId) ||
107
+ elementsToCreate.find(e => e.type === 'column' && e.id === existingColumnId);
108
+ const cellToPaste = cellsToPaste.find(e => e.rowId === rowToPaste.id && e.columnId === columnToPaste.id);
108
109
  if (!cellToPaste)
109
110
  continue;
110
- const createdCell = elementsToCreate.find((e) => e.type === 'cell' && e.rowId === existingRowId && e.columnId === existingColumnId);
111
- const existingCell = existingCells.find((e) => e.rowId === existingRowId && e.columnId === existingColumnId);
111
+ const createdCell = elementsToCreate.find(e => e.type === 'cell' && e.rowId === existingRowId && e.columnId === existingColumnId);
112
+ const existingCell = existingCells.find(e => e.rowId === existingRowId && e.columnId === existingColumnId);
112
113
  const cell = createdCell !== null && createdCell !== void 0 ? createdCell : existingCell;
113
114
  const cellUndo = util_1.ObjectUtil.cloneDeep(cell);
114
115
  this.log('cell to paste', cellToPaste);
@@ -120,11 +120,11 @@ class TableService {
120
120
  static addColumn(tableElement, childElements, index, optionalWidth) {
121
121
  const prevColumnId = tableElement.columnIds[Math.max(0, index - 1)];
122
122
  const prevColumnCells = TableService.getCellsAtColumn(prevColumnId, tableElement, childElements);
123
- const width = optionalWidth != null ? optionalWidth : childElements.find((e) => e.id === prevColumnId).size.width;
124
- const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter((range) => range.startColumn < index && index <= range.endColumn);
123
+ const width = optionalWidth != null ? optionalWidth : childElements.find(e => e.id === prevColumnId).size.width;
124
+ const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter(range => range.startColumn < index && index <= range.endColumn);
125
125
  const cellsToUpdate = [];
126
126
  if (mergedRanges.length > 0) {
127
- const columnIndexes = [...new Set(mergedRanges.map((range) => range.startColumn))];
127
+ const columnIndexes = [...new Set(mergedRanges.map(range => range.startColumn))];
128
128
  for (const columnIndex of columnIndexes) {
129
129
  const targetColumnId = tableElement.columnIds[columnIndex];
130
130
  const targetCells = this.getCellsAtColumn(targetColumnId, tableElement, childElements);
@@ -208,19 +208,19 @@ class TableService {
208
208
  }
209
209
  static getCellsAtColumn(columnId, tableElement, childElements) {
210
210
  return childElements
211
- .filter((element) => element.type === 'cell' && element.columnId === columnId)
211
+ .filter(element => element.type === 'cell' && element.columnId === columnId)
212
212
  .sort((a, b) => tableElement.rowIds.indexOf(a.rowId) - tableElement.rowIds.indexOf(b.rowId));
213
213
  }
214
214
  static getCellsAtRow(rowId, tableElement, childElements) {
215
215
  return childElements
216
- .filter((element) => element.type === 'cell' && element.rowId === rowId)
216
+ .filter(element => element.type === 'cell' && element.rowId === rowId)
217
217
  .sort((a, b) => tableElement.columnIds.indexOf(a.columnId) - tableElement.columnIds.indexOf(b.columnId));
218
218
  }
219
219
  static addRow(tableElement, childElements, index, optionalHeight) {
220
- const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter((range) => range.startRow < index && index <= range.endRow);
220
+ const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter(range => range.startRow < index && index <= range.endRow);
221
221
  const cellsToUpdate = [];
222
222
  if (mergedRanges.length > 0) {
223
- const rowIndexes = [...new Set(mergedRanges.map((range) => range.startRow))];
223
+ const rowIndexes = [...new Set(mergedRanges.map(range => range.startRow))];
224
224
  for (const rowIndex of rowIndexes) {
225
225
  const targetRowId = tableElement.rowIds[rowIndex];
226
226
  const targetCells = this.getCellsAtRow(targetRowId, tableElement, childElements);
@@ -248,7 +248,7 @@ class TableService {
248
248
  }
249
249
  const prevRowId = tableElement.rowIds[Math.max(0, index - 1)];
250
250
  const prevRowCells = TableService.getCellsAtRow(prevRowId, tableElement, childElements);
251
- const height = optionalHeight != null ? optionalHeight : childElements.find((e) => e.id === prevRowId).size.height;
251
+ const height = optionalHeight != null ? optionalHeight : childElements.find(e => e.id === prevRowId).size.height;
252
252
  const rowId = (0, nanoid_1.nanoid)(16);
253
253
  const row = {
254
254
  id: rowId,
@@ -306,7 +306,7 @@ class TableService {
306
306
  const elementsMap = new Map();
307
307
  for (const range of ranges) {
308
308
  range.each((rowIndex, columnIndex) => {
309
- const cell = childElements.find((e) => e.type === 'cell' &&
309
+ const cell = childElements.find(e => e.type === 'cell' &&
310
310
  e.rowId === tableElement.rowIds[rowIndex] &&
311
311
  e.columnId === tableElement.columnIds[columnIndex]);
312
312
  if (cell && !elementsMap.get(cell.id)) {
@@ -325,13 +325,13 @@ class TableService {
325
325
  if (columnIdsToDelete.length === tableElement.columnIds.length) {
326
326
  return this.deleteTable(tableElement, childElements);
327
327
  }
328
- const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter((range) => columnIndexes.filter((columnIndex) => range.intersectsCol(columnIndex, columnIndex)).length > 0);
329
- const columnsToDelete = columnIdsToDelete.map((columnId) => childElements.find((e) => e.type === 'column' && e.id === columnId));
330
- const cellsToDelete = childElements.filter((e) => e.type === 'cell' && columnIdsToDelete.indexOf(e.columnId) !== -1);
328
+ const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter(range => columnIndexes.filter(columnIndex => range.intersectsCol(columnIndex, columnIndex)).length > 0);
329
+ const columnsToDelete = columnIdsToDelete.map(columnId => childElements.find(e => e.type === 'column' && e.id === columnId));
330
+ const cellsToDelete = childElements.filter(e => e.type === 'cell' && columnIdsToDelete.indexOf(e.columnId) !== -1);
331
331
  let deleteAllowed = true;
332
332
  if (mergedRanges.length > 0) {
333
333
  for (const cell of this.getCellsAtRanges(tableElement, childElements, mergedRanges)) {
334
- if (!cellsToDelete.find((e) => e.id === cell.id)) {
334
+ if (!cellsToDelete.find(e => e.id === cell.id)) {
335
335
  deleteAllowed = false;
336
336
  break;
337
337
  }
@@ -347,7 +347,7 @@ class TableService {
347
347
  size: Object.assign({}, tableElement.size),
348
348
  columnIds: [...tableElement.columnIds],
349
349
  };
350
- tableElement.columnIds = tableElement.columnIds.filter((id) => columnIdsToDelete.indexOf(id) === -1);
350
+ tableElement.columnIds = tableElement.columnIds.filter(id => columnIdsToDelete.indexOf(id) === -1);
351
351
  tableElement.size.width =
352
352
  tableElement.size.width - columnsToDelete.reduce((totalWidth, element) => totalWidth + element.size.width, 0);
353
353
  return {
@@ -371,13 +371,13 @@ class TableService {
371
371
  if (rowIdsToDelete.length === tableElement.rowIds.length) {
372
372
  return this.deleteTable(tableElement, childElements);
373
373
  }
374
- const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter((range) => rowIndexes.filter((rowIndex) => range.intersectsRow(rowIndex, rowIndex)).length > 0);
375
- const rowsToDelete = rowIdsToDelete.map((rowId) => childElements.find((e) => e.type === 'row' && e.id === rowId));
376
- const cellsToDelete = childElements.filter((e) => e.type === 'cell' && rowIdsToDelete.indexOf(e.rowId) !== -1);
374
+ const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements).filter(range => rowIndexes.filter(rowIndex => range.intersectsRow(rowIndex, rowIndex)).length > 0);
375
+ const rowsToDelete = rowIdsToDelete.map(rowId => childElements.find(e => e.type === 'row' && e.id === rowId));
376
+ const cellsToDelete = childElements.filter(e => e.type === 'cell' && rowIdsToDelete.indexOf(e.rowId) !== -1);
377
377
  let deleteAllowed = true;
378
378
  if (mergedRanges.length > 0) {
379
379
  for (const cell of this.getCellsAtRanges(tableElement, childElements, mergedRanges)) {
380
- if (!cellsToDelete.find((e) => e.id === cell.id)) {
380
+ if (!cellsToDelete.find(e => e.id === cell.id)) {
381
381
  deleteAllowed = false;
382
382
  break;
383
383
  }
@@ -393,7 +393,7 @@ class TableService {
393
393
  size: Object.assign({}, tableElement.size),
394
394
  rowIds: [...tableElement.rowIds],
395
395
  };
396
- tableElement.rowIds = tableElement.rowIds.filter((id) => rowIdsToDelete.indexOf(id) === -1);
396
+ tableElement.rowIds = tableElement.rowIds.filter(id => rowIdsToDelete.indexOf(id) === -1);
397
397
  tableElement.size.height =
398
398
  tableElement.size.height - rowsToDelete.reduce((totalHeight, element) => totalHeight + element.size.height, 0);
399
399
  return {
@@ -415,9 +415,9 @@ class TableService {
415
415
  static move(key, tableElement, childElements, from, to) {
416
416
  const isColumn = key === 'columnIds';
417
417
  const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements);
418
- const fromMergedRanges = mergedRanges.filter((range) => isColumn ? range.cols > 0 && range.intersectsCol(from, from) : range.rows > 0 && range.intersectsRow(from, from));
418
+ const fromMergedRanges = mergedRanges.filter(range => isColumn ? range.cols > 0 && range.intersectsCol(from, from) : range.rows > 0 && range.intersectsRow(from, from));
419
419
  const indexIncrement = from < to ? 1 : 0;
420
- const toMergedRanges = mergedRanges.filter((range) => isColumn
420
+ const toMergedRanges = mergedRanges.filter(range => isColumn
421
421
  ? range.startColumn - indexIncrement < to && to <= range.endColumn - indexIncrement
422
422
  : range.startRow - indexIncrement < to && to <= range.endRow - indexIncrement);
423
423
  if (fromMergedRanges.length > 0 || toMergedRanges.length > 0) {
@@ -435,12 +435,12 @@ class TableService {
435
435
  };
436
436
  }
437
437
  static resizeRow(tableElement, childElements, rowId, height) {
438
- const row = childElements.find((e) => e.type === 'row' && e.id === rowId);
438
+ const row = childElements.find(e => e.type === 'row' && e.id === rowId);
439
439
  const rowUndo = Object.assign(Object.assign({}, tableData(row)), { size: Object.assign({}, row.size) });
440
440
  const tableUndo = Object.assign(Object.assign({}, tableData(tableElement)), { size: Object.assign({}, tableElement.size) });
441
441
  row.size.height = height;
442
442
  tableElement.size.height = childElements
443
- .filter((e) => e.type === 'row')
443
+ .filter(e => e.type === 'row')
444
444
  .reduce((acc, row) => acc + row.size.height, 0);
445
445
  return {
446
446
  elementsToUpdate: [
@@ -456,12 +456,12 @@ class TableService {
456
456
  };
457
457
  }
458
458
  static resizeColumn(tableElement, childElements, columnId, width) {
459
- const column = childElements.find((e) => e.type === 'column' && e.id === columnId);
459
+ const column = childElements.find(e => e.type === 'column' && e.id === columnId);
460
460
  const columnUndo = Object.assign(Object.assign({}, tableData(column)), { size: Object.assign({}, column.size) });
461
461
  const tableUndo = Object.assign(Object.assign({}, tableData(tableElement)), { size: Object.assign({}, tableElement.size) });
462
462
  column.size.width = width;
463
463
  tableElement.size.width = childElements
464
- .filter((e) => e.type === 'column')
464
+ .filter(e => e.type === 'column')
465
465
  .reduce((acc, column) => acc + column.size.width, 0);
466
466
  return {
467
467
  elementsToUpdate: [
@@ -479,7 +479,7 @@ class TableService {
479
479
  static getColumns(tableElement, childElements) {
480
480
  const columns = [];
481
481
  for (const columnId of tableElement.columnIds) {
482
- const column = childElements.find((e) => e.type === 'column' && e.id === columnId);
482
+ const column = childElements.find(e => e.type === 'column' && e.id === columnId);
483
483
  if (!column)
484
484
  throw new Error(TABLE_ERROR.INVALID_TABLE);
485
485
  columns.push(column);
@@ -500,7 +500,7 @@ class TableService {
500
500
  static getRows(tableElement, childElements) {
501
501
  const rows = [];
502
502
  for (const rowId of tableElement.rowIds) {
503
- const row = childElements.find((e) => e.type === 'row' && e.id === rowId);
503
+ const row = childElements.find(e => e.type === 'row' && e.id === rowId);
504
504
  if (!row)
505
505
  throw new Error(TABLE_ERROR.INVALID_TABLE);
506
506
  rows.push(row);
@@ -526,12 +526,12 @@ class TableService {
526
526
  throw new Error(TABLE_ERROR.INVALID_TABLE);
527
527
  const cellRange = new table_range_1.TableRange(rowIndex, rowIndex, columnIndex, columnIndex);
528
528
  const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements);
529
- const mergedRange = mergedRanges.find((range) => cellRange.within(range));
529
+ const mergedRange = mergedRanges.find(range => cellRange.within(range));
530
530
  if (mergedRange) {
531
531
  const mergedRangeStart = mergedRange && cellRange.equals(mergedRange.start());
532
532
  const mergedCell = mergedRangeStart
533
533
  ? cell
534
- : childElements.find((e) => e.type === 'cell' &&
534
+ : childElements.find(e => e.type === 'cell' &&
535
535
  e.rowId === tableElement.rowIds[mergedRange.startRow] &&
536
536
  e.columnId === tableElement.columnIds[mergedRange.startColumn]);
537
537
  height =
@@ -544,20 +544,20 @@ class TableService {
544
544
  var _a;
545
545
  const elementsToUpdate = [];
546
546
  const columnIndex = tableElement.columnIds.indexOf(columnId);
547
- const column = childElements.find((e) => e.type === 'column' && e.id === columnId);
547
+ const column = childElements.find(e => e.type === 'column' && e.id === columnId);
548
548
  const mergedRanges = table_merge_service_1.TableMergeService.getMergedRanges(tableElement, childElements);
549
549
  for (const [rowIndex, rowId] of tableElement.rowIds.entries()) {
550
- const row = childElements.find((e) => e.type === 'row' && e.id === rowId);
551
- const cell = childElements.find((e) => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
550
+ const row = childElements.find(e => e.type === 'row' && e.id === rowId);
551
+ const cell = childElements.find(e => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
552
552
  if (!row || !cell)
553
553
  continue;
554
554
  const cellUndo = util_1.ObjectUtil.cloneDeep(cell);
555
555
  const cellRange = new table_range_1.TableRange(rowIndex, rowIndex, columnIndex, columnIndex);
556
- const mergedRange = mergedRanges.find((range) => cellRange.within(range));
556
+ const mergedRange = mergedRanges.find(range => cellRange.within(range));
557
557
  const mergedRangeStart = mergedRange && cellRange.equals(mergedRange.start());
558
558
  const mergedRangeOther = mergedRange && !cellRange.equals(mergedRange.start());
559
559
  if (mergedRangeOther) {
560
- const mergedCell = childElements.find((e) => e.type === 'cell' &&
560
+ const mergedCell = childElements.find(e => e.type === 'cell' &&
561
561
  e.rowId === tableElement.rowIds[mergedRange.startRow] &&
562
562
  e.columnId === tableElement.columnIds[mergedRange.startColumn]);
563
563
  if (rowIndex === mergedRange.endRow && columnIndex !== mergedRange.startColumn) {
@@ -616,13 +616,13 @@ class TableService {
616
616
  return { width, height };
617
617
  }
618
618
  static getTableChildElements(tableId, elements) {
619
- return elements.filter((e) => e.tableId === tableId && ['cell', 'column', 'row'].indexOf(e.type) !== -1);
619
+ return elements.filter(e => e.tableId === tableId && ['cell', 'column', 'row'].indexOf(e.type) !== -1);
620
620
  }
621
621
  static updateCellText(tableElement, childElements, rowIndex, columnIndex, text) {
622
622
  const rowId = tableElement.rowIds[rowIndex];
623
623
  const columnId = tableElement.columnIds[columnIndex];
624
- const cell = childElements.find((e) => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
625
- const row = childElements.find((e) => e.type === 'row' && e.id === rowId);
624
+ const cell = childElements.find(e => e.type === 'cell' && e.rowId === rowId && e.columnId === columnId);
625
+ const row = childElements.find(e => e.type === 'row' && e.id === rowId);
626
626
  if (!rowId || !columnId || !cell || !row) {
627
627
  throw new Error(TABLE_ERROR.INVALID_TABLE);
628
628
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrail/document-table",
3
- "version": "1.0.5-alpha.0",
3
+ "version": "1.0.5-alpha.1",
4
4
  "description": "Library for document tables",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -38,10 +38,10 @@
38
38
  "testEnvironment": "node"
39
39
  },
40
40
  "dependencies": {
41
- "@contrail/actions": "^1.0.17-alpha.0",
42
- "@contrail/documents": "^1.0.109",
43
- "@contrail/types": "^3.1.2-alpha.0",
44
- "@contrail/util": "^1.1.17-alpha.0",
41
+ "@contrail/actions": "^1.0.17-alpha.2",
42
+ "@contrail/documents": "^1.2.9-alpha.0",
43
+ "@contrail/types": "^3.1.2-alpha.1",
44
+ "@contrail/util": "^1.1.17-alpha.2",
45
45
  "reflect-metadata": "^0.1.13"
46
46
  }
47
47
  }