table/utils/structure
@ckeditor/ckeditor5-table/src/utils/structure
Filtering
Functions
-
adjustLastColumnIndex( table, dimensions = { dimensions.firstColumn, dimensions.firstRow, dimensions.lastColumn, dimensions.lastRow } ) → 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.firstColumn : number
dimensions.firstRow : number
dimensions.lastColumn : number
dimensions.lastRow : number
Returns
number
Adjusted last column index.
-
adjustLastRowIndex( table, dimensions = { dimensions.firstColumn, dimensions.firstRow, dimensions.lastColumn, dimensions.lastRow } ) → 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.firstColumn : number
dimensions.firstRow : number
dimensions.lastColumn : number
dimensions.lastRow : number
Returns
number
Adjusted last row index.
-
cropTableToDimensions( sourceTable, cropDimensions = { cropDimensions.endColumn, cropDimensions.endRow, cropDimensions.startColumn, cropDimensions.startRow }, 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.endColumn : number
cropDimensions.endRow : number
cropDimensions.startColumn : number
cropDimensions.startRow : 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
row to start analysis. Use it when it is known that the cells above that row will not overlap. Default value is 0.
Defaults to
0
Returns
Array<TableSlot>
-
internal
removeEmptyColumns( table, tableUtils ) → boolean
module:table/utils/structure~removeEmptyColumns
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.
-
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.
-
internal
removeEmptyRowsColumns( table, tableUtils ) → void
module:table/utils/structure~removeEmptyRowsColumns
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
Returns
void
-
splitHorizontally( tableCell, splitRow, writer ) → Element | null
module:table/utils/structure~splitHorizontally
Splits the table cell horizontally.
Parameters
Returns
Element | null
Created table cell, if any were created.
-
splitVertically( tableCell, columnIndex, splitColumn, writer ) → Element
module:table/utils/structure~splitVertically
-
trimTableCellIfNeeded( tableCell, cellRow, cellColumn, limitRow, limitColumn, writer ) → void
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
tableCell : Element
cellRow : number
cellColumn : number
limitRow : number
limitColumn : number
writer : Writer
Returns
void
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.
With the release of version 42.0.0, we have rewritten much of our documentation to reflect the new import paths and features. We appreciate your feedback to help us ensure its accuracy and completeness.