diff --git a/packages/ckeditor5-table/src/commands/insertcolumncommand.js b/packages/ckeditor5-table/src/commands/insertcolumncommand.js index 8f79dc03023..ab27c7cdbb8 100644 --- a/packages/ckeditor5-table/src/commands/insertcolumncommand.js +++ b/packages/ckeditor5-table/src/commands/insertcolumncommand.js @@ -9,6 +9,7 @@ import Command from '@ckeditor/ckeditor5-core/src/command'; import { findAncestor } from './utils'; +import { getColumnIndexes, getSelectionAffectedTableCells } from '../utils'; /** * The insert column command. @@ -72,16 +73,11 @@ export default class InsertColumnCommand extends Command { const tableUtils = editor.plugins.get( 'TableUtils' ); const insertBefore = this.order === 'left'; - const referencePosition = insertBefore ? selection.getFirstPosition() : selection.getLastPosition(); - const referenceRange = insertBefore ? selection.getFirstRange() : selection.getLastRange(); + const affectedTableCells = getSelectionAffectedTableCells( selection ); + const columnIndexes = getColumnIndexes( affectedTableCells ); - const containedElement = referenceRange.getContainedElement(); - const isTableCell = containedElement && containedElement.is( 'tableCell' ); - - const tableCell = isTableCell ? containedElement : findAncestor( 'tableCell', referencePosition ); - const table = findAncestor( 'table', tableCell ); - - const { column } = tableUtils.getCellLocation( tableCell ); + const column = insertBefore ? columnIndexes.first : columnIndexes.last; + const table = findAncestor( 'table', affectedTableCells[ 0 ] ); tableUtils.insertColumns( table, { columns: 1, at: insertBefore ? column : column + 1 } ); } diff --git a/packages/ckeditor5-table/src/commands/insertrowcommand.js b/packages/ckeditor5-table/src/commands/insertrowcommand.js index 130e958b446..623ece4da5f 100644 --- a/packages/ckeditor5-table/src/commands/insertrowcommand.js +++ b/packages/ckeditor5-table/src/commands/insertrowcommand.js @@ -9,6 +9,7 @@ import Command from '@ckeditor/ckeditor5-core/src/command'; import { findAncestor } from './utils'; +import { getRowIndexes, getSelectionAffectedTableCells } from '../utils'; /** * The insert row command. @@ -71,18 +72,12 @@ export default class InsertRowCommand extends Command { const tableUtils = editor.plugins.get( 'TableUtils' ); const insertAbove = this.order === 'above'; - const referencePosition = insertAbove ? selection.getFirstPosition() : selection.getLastPosition(); - const referenceRange = insertAbove ? selection.getFirstRange() : selection.getLastRange(); + const affectedTableCells = getSelectionAffectedTableCells( selection ); + const rowIndexes = getRowIndexes( affectedTableCells ); - const containedElement = referenceRange.getContainedElement(); - const isTableCell = containedElement && containedElement.is( 'tableCell' ); - const tableCell = isTableCell ? containedElement : findAncestor( 'tableCell', referencePosition ); + const row = insertAbove ? rowIndexes.first : rowIndexes.last; + const table = findAncestor( 'table', affectedTableCells[ 0 ] ); - const tableRow = tableCell.parent; - const table = tableRow.parent; - - const row = table.getChildIndex( tableRow ); - - tableUtils.insertRows( table, { rows: 1, at: this.order === 'below' ? row + 1 : row } ); + tableUtils.insertRows( table, { rows: 1, at: insertAbove ? row : row + 1 } ); } }