table/utils/structure
@ckeditor/ckeditor5-table/src/utils/structure
Filtering
Functions
-
adjustLastColumnIndex( table, dimensions = { dimensions.firstRow, dimensions.firstColumn, dimensions.lastRow, dimensions.lastColumn } ) → Number
module:table/utils/structure~adjustLastColumnIndex
Returns adjusted last column index if selection covers part of a column with empty slots (spanned by other cells). The
dimensions.lastColumn
is equal to last column index but selection might be bigger.This happens only on rectangular selection so we analyze a case like this:
0 1 2 3 +---+---+---+---+ | a | +---+---+---+---+ | b | c | d | +---+---+---+---+ | e | f | +---+---+---+---+ | g | h | +---+---+---+---+ ^ last column, each cell has colspan = 2, so we need to return 3, not 2
Parameters
table : Element
dimensions : Object
-
Properties
dimensions.firstRow : Number
dimensions.firstColumn : Number
dimensions.lastRow : Number
dimensions.lastColumn : Number
Returns
Number
Adjusted last column index.
-
adjustLastRowIndex( table, dimensions = { dimensions.firstRow, dimensions.firstColumn, dimensions.lastRow, dimensions.lastColumn } ) → Number
module:table/utils/structure~adjustLastRowIndex
Returns adjusted last row index if selection covers part of a row with empty slots (spanned by other cells). The
dimensions.lastRow
is equal to last row index but selection might be bigger.This happens only on rectangular selection so we analyze a case like this:
+---+---+---+---+ 0 | a | b | c | d | + + +---+---+ 1 | | e | f | g | + +---+ +---+ 2 | | h | | i | <- last row, each cell has rowspan = 2, + + + + + so we need to return 3, not 2 3 | | | | | +---+---+---+---+
Parameters
table : Element
dimensions : Object
-
Properties
dimensions.firstRow : Number
dimensions.firstColumn : Number
dimensions.lastRow : Number
dimensions.lastColumn : Number
Returns
Number
Adjusted last row index.
-
cropTableToDimensions( sourceTable, cropDimensions = { cropDimensions.startRow, cropDimensions.startColumn, cropDimensions.endRow, cropDimensions.endColumn }, writer ) → Element
module:table/utils/structure~cropTableToDimensions
Returns a cropped table according to given dimensions. To return a cropped table that starts at first row and first column and end in third row and column:
const croppedTable = cropTableToDimensions( table, { startRow: 1, endRow: 3, startColumn: 1, endColumn: 3 }, writer );
Calling the code above for the table below:
0 1 2 3 4 0 1 2 ┌───┬───┬───┬───┬───┐ 0 │ a │ b │ c │ d │ e │ ├───┴───┤ ├───┴───┤ ┌───┬───┬───┐ 1 │ f │ │ g │ │ │ │ g │ 0 ├───┬───┴───┼───┬───┤ will return: ├───┴───┼───┤ 2 │ h │ i │ j │ k │ │ i │ j │ 1 ├───┤ ├───┤ │ │ ├───┤ 3 │ l │ │ m │ │ │ │ m │ 2 ├───┼───┬───┤ ├───┤ └───────┴───┘ 4 │ n │ o │ p │ │ q │ └───┴───┴───┴───┴───┘
Parameters
sourceTable : Element
cropDimensions : Object
-
Properties
cropDimensions.startRow : Number
cropDimensions.startColumn : Number
cropDimensions.endRow : Number
cropDimensions.endColumn : Number
writer : Writer
Returns
-
getHorizontallyOverlappingCells( table, overlapColumn ) → Array.<TableSlot>
module:table/utils/structure~getHorizontallyOverlappingCells
Returns slot info of cells that starts before and overlaps a given column.
In a table below, passing
overlapColumn = 3
0 1 2 3 4 ┌───────┬───────┬───┐ │ a │ b │ c │ │───┬───┴───────┼───┤ │ d │ e │ f │ ├───┼───┬───────┴───┤ │ g │ h │ i │ ├───┼───┼───┬───────┤ │ j │ k │ l │ m │ ├───┼───┴───┼───┬───┤ │ n │ o │ p │ q │ └───┴───────┴───┴───┘ ^ Overlap column to check
will return slot info for cells: "b", "e", "i".
Parameters
table : Element
The table to check.
overlapColumn : Number
The index of the column to check.
Returns
Array.<TableSlot>
-
getVerticallyOverlappingCells( table, overlapRow, [ startRow ] ) → Array.<TableSlot>
module:table/utils/structure~getVerticallyOverlappingCells
Returns slot info of cells that starts above and overlaps a given row.
In a table below, passing
overlapRow = 3
┌───┬───┬───┬───┬───┐ 0 │ a │ b │ c │ d │ e │ │ ├───┼───┼───┼───┤ 1 │ │ f │ g │ h │ i │ ├───┤ ├───┼───┤ │ 2 │ j │ │ k │ l │ │ │ │ │ ├───┼───┤ 3 │ │ │ │ m │ n │ <- overlap row to check ├───┼───┤ │ ├───│ 4 │ o │ p │ │ │ q │ └───┴───┴───┴───┴───┘
will return slot info for cells: "j", "f", "k".
Parameters
table : Element
The table to check.
overlapRow : Number
The index of the row to check.
[ startRow ] : Number
A row to start analysis. Use it when it is known that the cells above that row will not overlap.
Defaults to
0
Returns
Array.<TableSlot>
-
removeEmptyColumns( table, tableUtils ) → Boolean
module:table/utils/structure~removeEmptyColumns
protected
Removes columns that have no cells anchored.
In table below:
+----+----+----+----+----+----+----+ | 00 | 01 | 03 | 04 | 06 | +----+----+----+----+ +----+ | 10 | 11 | 13 | | 16 | +----+----+----+----+----+----+----+ | 20 | 21 | 23 | 24 | 26 | +----+----+----+----+----+----+----+ ^--- empty ---^
Will remove columns 2 and 5.
Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a column from a table use
TableUtils.removeColumns()
.Parameters
table : Element
tableUtils : TableUtils
Returns
Boolean
True if removed some columns.
-
removeEmptyRows( table, tableUtils ) → Boolean
module:table/utils/structure~removeEmptyRows
protected
Removes rows that have no cells anchored.
In table below:
+----+----+----+ | 00 | 01 | 02 | +----+----+----+ | 10 | 11 | 12 | + + + + | | | | <-- empty +----+----+----+ | 30 | 31 | 32 | +----+----+----+ | 40 | 42 | + + + | | | <-- empty +----+----+----+ | 60 | 61 | 62 | +----+----+----+
Will remove rows 2 and 5.
Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a row from a table use
TableUtils.removeRows()
.Parameters
table : Element
tableUtils : TableUtils
Returns
Boolean
True if removed some rows.
-
removeEmptyRowsColumns( table, tableUtils )
module:table/utils/structure~removeEmptyRowsColumns
protected
Removes rows and columns that have no cells anchored.
In table below:
+----+----+----+----+ | 00 | 02 | +----+----+ + | 10 | | +----+----+----+----+ | 20 | 22 | 23 | + + + + | | | | <-- empty row +----+----+----+----+ ^--- empty column
Will remove row 3 and column 1.
Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a rows from a table use
TableUtils.removeRows()
andTableUtils.removeColumns()
to remove a column.Parameters
table : Element
tableUtils : TableUtils
-
splitHorizontally( tableCell, splitRow, writer ) → Element
module:table/utils/structure~splitHorizontally
Splits the table cell horizontally.
-
splitVertically( tableCell, columnIndex, splitColumn, writer ) → Element
module:table/utils/structure~splitVertically
Splits the table cell vertically.
-
trimTableCellIfNeeded( tableCell, cellRow, cellColumn, limitRow, limitColumn, writer )
module:table/utils/structure~trimTableCellIfNeeded
Adjusts table cell dimensions to not exceed limit row and column.
If table cell width (or height) covers a column (or row) that is after a limit column (or row) this method will trim "colspan" (or "rowspan") attribute so the table cell will fit in a defined limits.
Parameters
Every day, we work hard to keep our documentation complete. Have you spotted an outdated information? Is something missing? Please report it via our issue tracker.