浏览代码

Unify creation of empty table cells with block content.

Maciej Gołaszewski 7 年之前
父节点
当前提交
767cd3ab95

+ 3 - 4
packages/ckeditor5-table/src/commands/setheaderrowcommand.js

@@ -10,7 +10,7 @@
 import Command from '@ckeditor/ckeditor5-core/src/command';
 import Position from '@ckeditor/ckeditor5-engine/src/model/position';
 
-import { getParentElement, updateNumericAttribute } from './utils';
+import { createEmptyTableCell, getParentElement, updateNumericAttribute } from './utils';
 import TableWalker from '../tablewalker';
 
 /**
@@ -169,10 +169,9 @@ function splitHorizontally( tableCell, headingRows, writer ) {
 
 		if ( columnIndex !== undefined && columnIndex === column && row === endRow ) {
 			const tableRow = table.getChild( row );
+			const tableCellPosition = Position.createFromParentAndOffset( tableRow, cellIndex );
 
-			const newCell = writer.createElement( 'tableCell', attributes );
-			writer.insert( newCell, Position.createFromParentAndOffset( tableRow, cellIndex ) );
-			writer.insertElement( 'paragraph', Position.createAt( newCell, 0 ) );
+			createEmptyTableCell( writer, tableCellPosition, attributes );
 		}
 	}
 

+ 13 - 0
packages/ckeditor5-table/src/commands/utils.js

@@ -52,3 +52,16 @@ export function updateNumericAttribute( key, value, item, writer, defaultValue =
 		writer.removeAttribute( key, item );
 	}
 }
+
+/**
+ * Common method to create empty table cell - it will create proper model structure as table cell must have at least one block inside.
+ *
+ * @param {module:engine/model/writer~Writer} writer Model writer.
+ * @param {module:engine/model/position~Position} insertPosition Position at which table cell should be inserted.
+ * @param {Object} attributes Element's attributes.
+ */
+export function createEmptyTableCell( writer, insertPosition, attributes = {} ) {
+	const tableCell = writer.createElement( 'tableCell', attributes );
+	writer.insertElement( 'paragraph', tableCell );
+	writer.insert( tableCell, insertPosition );
+}

+ 2 - 4
packages/ckeditor5-table/src/converters/table-post-fixer.js

@@ -8,7 +8,7 @@
  */
 
 import Position from '@ckeditor/ckeditor5-engine/src/model/position';
-import { getParentTable, updateNumericAttribute } from './../commands/utils';
+import { createEmptyTableCell, getParentTable, updateNumericAttribute } from './../commands/utils';
 import TableWalker from './../tablewalker';
 
 /**
@@ -304,9 +304,7 @@ function fixTableRowsSizes( table, writer ) {
 
 			if ( columnsToInsert ) {
 				for ( let i = 0; i < columnsToInsert; i++ ) {
-					const tableCell = writer.createElement( 'tableCell' );
-					writer.insert( tableCell, Position.createAt( table.getChild( rowIndex ), 'end' ) );
-					writer.insertElement( 'paragraph', tableCell );
+					createEmptyTableCell( writer, Position.createAt( table.getChild( rowIndex ), 'end' ) );
 				}
 
 				wasFixed = true;

+ 2 - 3
packages/ckeditor5-table/src/converters/upcasttable.js

@@ -9,6 +9,7 @@
 
 import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
 import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
+import { createEmptyTableCell } from '../commands/utils';
 
 /**
  * View table element to model table element conversion helper.
@@ -61,9 +62,7 @@ export default function upcastTable() {
 				const row = conversionApi.writer.createElement( 'tableRow' );
 				conversionApi.writer.insert( row, ModelPosition.createAt( table, 'end' ) );
 
-				const tableCell = conversionApi.writer.createElement( 'tableCell' );
-				conversionApi.writer.insert( tableCell, ModelPosition.createAt( row, 'end' ) );
-				conversionApi.writer.insertElement( 'paragraph', ModelPosition.createAt( tableCell, 'end' ) );
+				createEmptyTableCell( conversionApi.writer, ModelPosition.createAt( row, 'end' ) );
 			}
 
 			// Set conversion result range.

+ 2 - 4
packages/ckeditor5-table/src/tableutils.js

@@ -11,7 +11,7 @@ import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
 import Position from '@ckeditor/ckeditor5-engine/src/model/position';
 
 import TableWalker from './tablewalker';
-import { getParentTable, updateNumericAttribute } from './commands/utils';
+import { createEmptyTableCell, getParentTable, updateNumericAttribute } from './commands/utils';
 
 /**
  * The table utilities plugin.
@@ -569,9 +569,7 @@ function createEmptyRows( writer, table, insertAt, rows, tableCellToInsert, attr
 // @param {module:engine/model/position~Position} insertPosition
 function createCells( cells, writer, insertPosition, attributes = {} ) {
 	for ( let i = 0; i < cells; i++ ) {
-		const tableCell = writer.createElement( 'tableCell', attributes );
-		writer.insert( tableCell, insertPosition );
-		writer.insertElement( 'paragraph', Position.createAt( tableCell ) );
+		createEmptyTableCell( writer, insertPosition, attributes );
 	}
 }