Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 1x 141x 141x 141x 141x 141x 141x 275x 652x 216x 216x 107x 216x 107x 216x 216x 141x | import { hasSelectionInBlockGroup } from '../selection/hasSelectionInBlockGroup';
import type {
ReadonlyContentModelTable,
TableSelectionCoordinates,
} from 'roosterjs-content-model-types';
/**
* Get selection coordinates of a table. If there is no selection, return null
* @param table The table model to get selection from
*/
export function getSelectedCells(
table: ReadonlyContentModelTable
): TableSelectionCoordinates | null {
let firstRow = -1;
let firstColumn = -1;
let lastRow = -1;
let lastColumn = -1;
let hasSelection = false;
table.rows.forEach((row, rowIndex) =>
row.cells.forEach((cell, colIndex) => {
if (hasSelectionInBlockGroup(cell)) {
hasSelection = true;
if (firstRow < 0) {
firstRow = rowIndex;
}
if (firstColumn < 0) {
firstColumn = colIndex;
}
lastRow = Math.max(lastRow, rowIndex);
lastColumn = Math.max(lastColumn, colIndex);
}
})
);
return hasSelection ? { firstRow, firstColumn, lastRow, lastColumn } : null;
}
|