|
|
@@ -9,6 +9,7 @@
|
|
|
|
|
|
import Node from './node';
|
|
|
import Text from './text';
|
|
|
+import TextProxy from './textproxy';
|
|
|
import objectToMap from '@ckeditor/ckeditor5-utils/src/objecttomap';
|
|
|
import isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';
|
|
|
import isPlainObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isPlainObject';
|
|
|
@@ -193,11 +194,11 @@ export default class Element extends Node {
|
|
|
* and sets the parent of these nodes to this element.
|
|
|
*
|
|
|
* @fires module:engine/view/node~Node#change
|
|
|
- * @param {module:engine/view/node~Node|Iterable.<module:engine/view/node~Node>} nodes Node or the list of nodes to be inserted.
|
|
|
+ * @param {module:engine/view/item~Item|Iterable.<module:engine/view/item~Item>} items Items to be inserted.
|
|
|
* @returns {Number} Number of appended nodes.
|
|
|
*/
|
|
|
- appendChildren( nodes ) {
|
|
|
- return this.insertChildren( this.childCount, nodes );
|
|
|
+ appendChildren( items ) {
|
|
|
+ return this.insertChildren( this.childCount, items );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -344,15 +345,15 @@ export default class Element extends Node {
|
|
|
* this element.
|
|
|
*
|
|
|
* @param {Number} index Position where nodes should be inserted.
|
|
|
- * @param {module:engine/view/node~Node|Iterable.<module:engine/view/node~Node>} nodes Node or the list of nodes to be inserted.
|
|
|
+ * @param {module:engine/view/item~Item|Iterable.<module:engine/view/item~Item>} items Items to be inserted.
|
|
|
* @fires module:engine/view/node~Node#change
|
|
|
* @returns {Number} Number of inserted nodes.
|
|
|
*/
|
|
|
- insertChildren( index, nodes ) {
|
|
|
+ insertChildren( index, items ) {
|
|
|
this._fireChange( 'children', this );
|
|
|
let count = 0;
|
|
|
|
|
|
- nodes = normalize( nodes );
|
|
|
+ const nodes = normalize( items );
|
|
|
|
|
|
for ( const node of nodes ) {
|
|
|
// If node that is being added to this element is already inside another element, first remove it from the old parent.
|
|
|
@@ -809,7 +810,7 @@ function parseClasses( classesSet, classesString ) {
|
|
|
|
|
|
// Converts strings to Text and non-iterables to arrays.
|
|
|
//
|
|
|
-// @param {String|module:engine/view/node~Node|Iterable.<String|module:engine/view/node~Node>}
|
|
|
+// @param {String|module:engine/view/item~Item|Iterable.<String|module:engine/view/item~Item>}
|
|
|
// @return {Iterable.<module:engine/view/node~Node>}
|
|
|
function normalize( nodes ) {
|
|
|
// Separate condition because string is iterable.
|
|
|
@@ -824,6 +825,14 @@ function normalize( nodes ) {
|
|
|
// Array.from to enable .map() on non-arrays.
|
|
|
return Array.from( nodes )
|
|
|
.map( node => {
|
|
|
- return typeof node == 'string' ? new Text( node ) : node;
|
|
|
+ if ( typeof node == 'string' ) {
|
|
|
+ return new Text( node );
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( node instanceof TextProxy ) {
|
|
|
+ return new Text( node.data );
|
|
|
+ }
|
|
|
+
|
|
|
+ return node;
|
|
|
} );
|
|
|
}
|