|
|
@@ -16,17 +16,17 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
|
|
|
/**
|
|
|
* Tree View Writer class.
|
|
|
- * Writer defines a high-level API for TreeView manipulations.
|
|
|
+ * Writer defines a high-level API for view manipulations.
|
|
|
*
|
|
|
- * @memberOf engine.treeView
|
|
|
+ * @memberOf engine.view
|
|
|
*/
|
|
|
export default class Writer {
|
|
|
/**
|
|
|
- * Returns first parent container of specified {@link engine.treeView.Position Position}.
|
|
|
+ * Returns first parent container of specified {@link engine.view.Position Position}.
|
|
|
* Position's parent node is checked as first, then next parents are checked.
|
|
|
*
|
|
|
- * @param {engine.treeView.Position} position Position used as a start point to locate parent container.
|
|
|
- * @returns {engine.treeView.Element|undefined} Parent container element or `undefined` if container is not found.
|
|
|
+ * @param {engine.view.Position} position Position used as a start point to locate parent container.
|
|
|
+ * @returns {engine.view.Element|undefined} Parent container element or `undefined` if container is not found.
|
|
|
*/
|
|
|
getParentContainer( position ) {
|
|
|
let parent = position.parent;
|
|
|
@@ -50,10 +50,10 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* <p>foo<b><u>{}bar</u></b></p> -> <p>foo{}<b><u>bar</u></b></p>
|
|
|
* <p>foo<b><u>b{}ar</u></b></p> -> <p>foo<b><u>b</u></b>[]<b><u>ar</u></b></p>
|
|
|
*
|
|
|
- * @see engine.treeView.AttributeElement
|
|
|
- * @see engine.treeView.ContainerElement
|
|
|
- * @param {engine.treeView.Position} position Position where to break attributes.
|
|
|
- * @returns {engine.treeView.Position} New position after breaking the attributes.
|
|
|
+ * @see engine.view.AttributeElement
|
|
|
+ * @see engine.view.ContainerElement
|
|
|
+ * @param {engine.view.Position} position Position where to break attributes.
|
|
|
+ * @returns {engine.view.Position} New position after breaking the attributes.
|
|
|
*/
|
|
|
breakAttributes( position ) {
|
|
|
return this._breakAttributes( position, false );
|
|
|
@@ -64,11 +64,11 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* splitting text nodes).
|
|
|
*
|
|
|
* @private
|
|
|
- * @param {engine.treeView.Position} position Position where to break attributes.
|
|
|
+ * @param {engine.view.Position} position Position where to break attributes.
|
|
|
* @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in
|
|
|
* container element. This behavior will result in incorrect view state, but is needed by other `Writer` methods
|
|
|
* which then fixes view state. Defaults to `false`.
|
|
|
- * @returns {engine.treeView.Position} New position after breaking the attributes.
|
|
|
+ * @returns {engine.view.Position} New position after breaking the attributes.
|
|
|
*/
|
|
|
_breakAttributes( position, forceSplitText = false ) {
|
|
|
const positionOffset = position.offset;
|
|
|
@@ -135,17 +135,17 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Uses {@link engine.treeView.Writer#breakAttributes breakAttributes} method to break attributes on
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions of
|
|
|
- * provided {@link engine.treeView.Range Range}.
|
|
|
+ * Uses {@link engine.view.Writer#breakAttributes breakAttributes} method to break attributes on
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions of
|
|
|
+ * provided {@link engine.view.Range Range}.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-invalid-range-container` when
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions are not placed inside
|
|
|
+ * Throws {@link utils.CKEditorError CKEditorError} `view-writer-invalid-range-container` when
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions are not placed inside
|
|
|
* same parent container.
|
|
|
*
|
|
|
- * @see engine.treeView.Writer#breakAttribute
|
|
|
- * @param {engine.treeView.Range} range Range which `start` and `end` positions will be used to break attributes.
|
|
|
- * @returns {engine.treeView.Range} New range with located at break positions.
|
|
|
+ * @see engine.view.Writer#breakAttribute
|
|
|
+ * @param {engine.view.Range} range Range which `start` and `end` positions will be used to break attributes.
|
|
|
+ * @returns {engine.view.Range} New range with located at break positions.
|
|
|
*/
|
|
|
breakRange( range ) {
|
|
|
return this._breakRange( range );
|
|
|
@@ -156,12 +156,12 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* splitting text nodes).
|
|
|
*
|
|
|
* @private
|
|
|
- * @see engine.treeView.Writer#_breakAttribute
|
|
|
- * @param {engine.treeView.Range} range Range which `start` and `end` positions will be used to break attributes.
|
|
|
+ * @see engine.view.Writer#_breakAttribute
|
|
|
+ * @param {engine.view.Range} range Range which `start` and `end` positions will be used to break attributes.
|
|
|
* @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in
|
|
|
* container element. This behavior will result in incorrect view state, but is needed by other `Writer` methods
|
|
|
* which then fixes view state. Defaults to `false`.
|
|
|
- * @returns {engine.treeView.Range} New range with located at break positions.
|
|
|
+ * @returns {engine.view.Range} New range with located at break positions.
|
|
|
*/
|
|
|
_breakRange( range, forceSplitText = false ) {
|
|
|
const rangeStart = range.start;
|
|
|
@@ -172,9 +172,9 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Range is not placed inside same container.
|
|
|
*
|
|
|
- * @error treeview-writer-invalid-range-container
|
|
|
+ * @error view-writer-invalid-range-container
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-invalid-range-container' );
|
|
|
+ throw new CKEditorError( 'view-writer-invalid-range-container' );
|
|
|
}
|
|
|
|
|
|
// Break at the collapsed position. Return new collapsed range.
|
|
|
@@ -196,7 +196,7 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
|
|
|
/**
|
|
|
* Merges attribute nodes. It also merges text nodes if needed.
|
|
|
- * Only {@link engine.treeView.AttributeElement#isSimilar similar} `attribute` nodes can be merged.
|
|
|
+ * Only {@link engine.view.AttributeElement#isSimilar similar} `attribute` nodes can be merged.
|
|
|
*
|
|
|
* In following examples `<p>` is a container and `<b>` is an attribute node:
|
|
|
*
|
|
|
@@ -209,10 +209,10 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* <p><b>[]</b></p> -> <p>[]</p>
|
|
|
* <p><b>foo</b><i>[]</i><b>bar</b></p> -> <p><b>foo{}bar</b></p>
|
|
|
*
|
|
|
- * @see engine.treeView.AttributeElement
|
|
|
- * @see engine.treeView.ContainerElement
|
|
|
- * @param {engine.treeView.Position} position Merge position.
|
|
|
- * @returns {engine.treeView.Position} Position after merge.
|
|
|
+ * @see engine.view.AttributeElement
|
|
|
+ * @see engine.view.ContainerElement
|
|
|
+ * @param {engine.view.Position} position Merge position.
|
|
|
+ * @returns {engine.view.Position} Position after merge.
|
|
|
*/
|
|
|
mergeAttributes( position ) {
|
|
|
const positionOffset = position.offset;
|
|
|
@@ -269,16 +269,16 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* Insert node or nodes at specified position. Takes care about breaking attributes before insertion
|
|
|
* and merging them afterwards.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-insert-invalid-node` when nodes to insert
|
|
|
- * contains instances that are not {@link engine.treeView.Text Texts},
|
|
|
- * {@link engine.treeView.AttributeElement AttributeElements} or
|
|
|
- * {@link engine.treeView.ContainerElement ContainerElements}.
|
|
|
+ * Throws {@link utils.CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert
|
|
|
+ * contains instances that are not {@link engine.view.Text Texts},
|
|
|
+ * {@link engine.view.AttributeElement AttributeElements} or
|
|
|
+ * {@link engine.view.ContainerElement ContainerElements}.
|
|
|
*
|
|
|
- * @param {engine.treeView.Position} position Insertion position.
|
|
|
- * @param {engine.treeView.Text|engine.treeView.AttributeElement|engine.treeView.ContainerElement
|
|
|
- * |Iterable.<engine.treeView.Text|engine.treeView.AttributeElement|engine.treeView.ContainerElement>} nodes Node or
|
|
|
+ * @param {engine.view.Position} position Insertion position.
|
|
|
+ * @param {engine.view.Text|engine.view.AttributeElement|engine.view.ContainerElement
|
|
|
+ * |Iterable.<engine.view.Text|engine.view.AttributeElement|engine.view.ContainerElement>} nodes Node or
|
|
|
* nodes to insert.
|
|
|
- * @returns {engine.treeView.Range} Range around inserted nodes.
|
|
|
+ * @returns {engine.view.Range} Range around inserted nodes.
|
|
|
*/
|
|
|
insert( position, nodes ) {
|
|
|
nodes = isIterable( nodes ) ? [ ...nodes ] : [ nodes ];
|
|
|
@@ -311,13 +311,13 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Removes provided range from the container.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-invalid-range-container` when
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions are not placed inside
|
|
|
+ * Throws {@link utils.CKEditorError CKEditorError} `view-writer-invalid-range-container` when
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions are not placed inside
|
|
|
* same parent container.
|
|
|
*
|
|
|
- * @param {engine.treeView.Range} range Range to remove from container. After removing, it will be updated
|
|
|
+ * @param {engine.view.Range} range Range to remove from container. After removing, it will be updated
|
|
|
* to a collapsed range showing the new position.
|
|
|
- * @returns {engine.treeView.DocumentFragment} Document fragment containing removed nodes.
|
|
|
+ * @returns {engine.view.DocumentFragment} Document fragment containing removed nodes.
|
|
|
*/
|
|
|
remove( range ) {
|
|
|
// Range should be placed inside one container.
|
|
|
@@ -325,9 +325,9 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Range is not placed inside same container.
|
|
|
*
|
|
|
- * @error treeview-writer-invalid-range-container
|
|
|
+ * @error view-writer-invalid-range-container
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-invalid-range-container' );
|
|
|
+ throw new CKEditorError( 'view-writer-invalid-range-container' );
|
|
|
}
|
|
|
|
|
|
// If range is collapsed - nothing to remove.
|
|
|
@@ -356,14 +356,14 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Moves nodes from provided range to target position.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-invalid-range-container` when
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions are not placed inside
|
|
|
+ * Throws {@link utils.CKEditorError CKEditorError} `view-writer-invalid-range-container` when
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions are not placed inside
|
|
|
* same parent container.
|
|
|
*
|
|
|
- * @param {engine.treeView.Range} sourceRange Range containing nodes to move.
|
|
|
- * @param {engine.treeView.Position} targetPosition Position to insert.
|
|
|
- * @returns {engine.treeView.Range} Range in target container. Inserted nodes are placed between
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions.
|
|
|
+ * @param {engine.view.Range} sourceRange Range containing nodes to move.
|
|
|
+ * @param {engine.view.Position} targetPosition Position to insert.
|
|
|
+ * @returns {engine.view.Range} Range in target container. Inserted nodes are placed between
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions.
|
|
|
*/
|
|
|
move( sourceRange, targetPosition ) {
|
|
|
const nodes = this.remove( sourceRange );
|
|
|
@@ -372,24 +372,24 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Wraps elements within range with provided {@link engine.treeView.AttributeElement AttributeElement}.
|
|
|
+ * Wraps elements within range with provided {@link engine.view.AttributeElement AttributeElement}.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError} `treeview-writer-invalid-range-container` when {@link engine.treeView.Range#start}
|
|
|
- * and {@link engine.treeView.Range#end} positions are not placed inside same parent container.
|
|
|
- * Throws {@link utils.CKEditorError} `treeview-writer-wrap-invalid-attribute` when passed attribute element is not
|
|
|
- * an instance of {engine.treeView.AttributeElement AttributeElement}.
|
|
|
+ * Throws {@link utils.CKEditorError} `view-writer-invalid-range-container` when {@link engine.view.Range#start}
|
|
|
+ * and {@link engine.view.Range#end} positions are not placed inside same parent container.
|
|
|
+ * Throws {@link utils.CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not
|
|
|
+ * an instance of {engine.view.AttributeElement AttributeElement}.
|
|
|
*
|
|
|
- * @param {engine.treeView.Range} range Range to wrap.
|
|
|
- * @param {engine.treeView.AttributeElement} attribute Attribute element to use as wrapper.
|
|
|
+ * @param {engine.view.Range} range Range to wrap.
|
|
|
+ * @param {engine.view.AttributeElement} attribute Attribute element to use as wrapper.
|
|
|
*/
|
|
|
wrap( range, attribute ) {
|
|
|
if ( !( attribute instanceof AttributeElement ) ) {
|
|
|
/**
|
|
|
* Attribute element need to be instance of attribute element.
|
|
|
*
|
|
|
- * @error treeview-writer-wrap-invalid-attribute
|
|
|
+ * @error view-writer-wrap-invalid-attribute
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-wrap-invalid-attribute' );
|
|
|
+ throw new CKEditorError( 'view-writer-wrap-invalid-attribute' );
|
|
|
}
|
|
|
|
|
|
// Range should be placed inside one container.
|
|
|
@@ -397,9 +397,9 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Range is not placed inside same container.
|
|
|
*
|
|
|
- * @error treeview-writer-invalid-range-container
|
|
|
+ * @error view-writer-invalid-range-container
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-invalid-range-container' );
|
|
|
+ throw new CKEditorError( 'view-writer-invalid-range-container' );
|
|
|
}
|
|
|
|
|
|
// If range is collapsed - nothing to wrap.
|
|
|
@@ -450,11 +450,11 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
* Wraps position with provided attribute. Returns new position after wrapping. This method will also merge newly
|
|
|
* added attribute with its siblings whenever possible.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError} `treeview-writer-wrap-invalid-attribute` when passed attribute element is not
|
|
|
- * an instance of {engine.treeView.AttributeElement AttributeElement}.
|
|
|
+ * Throws {@link utils.CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not
|
|
|
+ * an instance of {engine.view.AttributeElement AttributeElement}.
|
|
|
*
|
|
|
- * @param {engine.treeView.Position} position
|
|
|
- * @param {engine.treeView.AttributeElement} attribute
|
|
|
+ * @param {engine.view.Position} position
|
|
|
+ * @param {engine.view.AttributeElement} attribute
|
|
|
* @returns {Position} New position after wrapping.
|
|
|
*/
|
|
|
wrapPosition( position, attribute ) {
|
|
|
@@ -462,9 +462,9 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Attribute element need to be instance of attribute element.
|
|
|
*
|
|
|
- * @error treeview-writer-wrap-invalid-attribute
|
|
|
+ * @error view-writer-wrap-invalid-attribute
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-wrap-invalid-attribute' );
|
|
|
+ throw new CKEditorError( 'view-writer-wrap-invalid-attribute' );
|
|
|
}
|
|
|
|
|
|
// Return same position when trying to wrap with attribute similar to position parent.
|
|
|
@@ -510,21 +510,21 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Unwraps nodes within provided range from attribute element.
|
|
|
*
|
|
|
- * Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-invalid-range-container` when
|
|
|
- * {@link engine.treeView.Range#start start} and {@link engine.treeView.Range#end end} positions are not placed inside
|
|
|
+ * Throws {@link utils.CKEditorError CKEditorError} `view-writer-invalid-range-container` when
|
|
|
+ * {@link engine.view.Range#start start} and {@link engine.view.Range#end end} positions are not placed inside
|
|
|
* same parent container.
|
|
|
*
|
|
|
- * @param {engine.treeView.Range} range
|
|
|
- * @param {engine.treeView.AttributeElement} element
|
|
|
+ * @param {engine.view.Range} range
|
|
|
+ * @param {engine.view.AttributeElement} element
|
|
|
*/
|
|
|
unwrap( range, attribute ) {
|
|
|
if ( !( attribute instanceof AttributeElement ) ) {
|
|
|
/**
|
|
|
* Attribute element need to be instance of attribute element.
|
|
|
*
|
|
|
- * @error treeview-writer-unwrap-invalid-attribute
|
|
|
+ * @error view-writer-unwrap-invalid-attribute
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-unwrap-invalid-attribute' );
|
|
|
+ throw new CKEditorError( 'view-writer-unwrap-invalid-attribute' );
|
|
|
}
|
|
|
|
|
|
// Range should be placed inside one container.
|
|
|
@@ -532,9 +532,9 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
/**
|
|
|
* Range is not placed inside same container.
|
|
|
*
|
|
|
- * @error treeview-writer-invalid-range-container
|
|
|
+ * @error view-writer-invalid-range-container
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-invalid-range-container' );
|
|
|
+ throw new CKEditorError( 'view-writer-invalid-range-container' );
|
|
|
}
|
|
|
|
|
|
// If range is collapsed - nothing to unwrap.
|
|
|
@@ -578,11 +578,11 @@ import isIterable from '../../utils/isiterable.js';
|
|
|
// `startOffset` and `endOffset` will be unwrapped.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Writer} writer
|
|
|
-// @param {engine.treeView.Element} parent
|
|
|
+// @param {engine.view.Writer} writer
|
|
|
+// @param {engine.view.Element} parent
|
|
|
// @param {Number} startOffset
|
|
|
// @param {Number} endOffset
|
|
|
-// @param {engine.treeView.Element} attribute
|
|
|
+// @param {engine.view.Element} attribute
|
|
|
function unwrapChildren( writer, parent, startOffset, endOffset, attribute ) {
|
|
|
let i = startOffset;
|
|
|
const unwrapPositions = [];
|
|
|
@@ -647,11 +647,11 @@ function unwrapChildren( writer, parent, startOffset, endOffset, attribute ) {
|
|
|
// `startOffset` and `endOffset` will be wrapped.
|
|
|
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Writer} writer
|
|
|
-// @param {engine.treeView.Element} parent
|
|
|
+// @param {engine.view.Writer} writer
|
|
|
+// @param {engine.view.Element} parent
|
|
|
// @param {Number} startOffset
|
|
|
// @param {Number} endOffset
|
|
|
-// @param {engine.treeView.Element} attribute
|
|
|
+// @param {engine.view.Element} attribute
|
|
|
function wrapChildren( writer, parent, startOffset, endOffset, attribute ) {
|
|
|
let i = startOffset;
|
|
|
const wrapPositions = [];
|
|
|
@@ -710,8 +710,8 @@ function wrapChildren( writer, parent, startOffset, endOffset, attribute ) {
|
|
|
// <p>[]foo</p> -> <p>{}foo</p>
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Position} position
|
|
|
-// @returns {engine.treeView.Position} Position located inside text node or same position if there is no text nodes
|
|
|
+// @param {engine.view.Position} position
|
|
|
+// @returns {engine.view.Position} Position located inside text node or same position if there is no text nodes
|
|
|
// before or after position location.
|
|
|
function movePositionToTextNode( position ) {
|
|
|
const nodeBefore = position.nodeBefore;
|
|
|
@@ -736,8 +736,8 @@ function movePositionToTextNode( position ) {
|
|
|
// <p>foobar{}</p> -> <p>foobar[]</p>
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Position} position Position that need to be placed inside text node.
|
|
|
-// @returns {engine.treeView.Position} New position after breaking text node.
|
|
|
+// @param {engine.view.Position} position Position that need to be placed inside text node.
|
|
|
+// @returns {engine.view.Position} New position after breaking text node.
|
|
|
function breakTextNode( position ) {
|
|
|
if ( position.offset == position.parent.data.length ) {
|
|
|
return new Position( position.parent.parent, position.parent.getIndex() + 1 );
|
|
|
@@ -763,10 +763,10 @@ function breakTextNode( position ) {
|
|
|
// Merges two text nodes into first node. Removes second node and returns merge position.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Text} t1 First text node to merge. Data from second text node will be moved at the end of
|
|
|
+// @param {engine.view.Text} t1 First text node to merge. Data from second text node will be moved at the end of
|
|
|
// this text node.
|
|
|
-// @param {engine.treeView.Text} t2 Second text node to merge. This node will be removed after merging.
|
|
|
-// @returns {engine.treeView.Position} Position after merging text nodes.
|
|
|
+// @param {engine.view.Text} t2 Second text node to merge. This node will be removed after merging.
|
|
|
+// @returns {engine.view.Position} Position after merging text nodes.
|
|
|
function mergeTextNodes( t1, t2 ) {
|
|
|
// Merge text data into first text node and remove second one.
|
|
|
const nodeBeforeLength = t1.data.length;
|
|
|
@@ -776,14 +776,14 @@ function mergeTextNodes( t1, t2 ) {
|
|
|
return new Position( t1, nodeBeforeLength );
|
|
|
}
|
|
|
|
|
|
-// Wraps one {@link engine.treeView.AttributeElement AttributeElement} into another by merging them if possible.
|
|
|
+// Wraps one {@link engine.view.AttributeElement AttributeElement} into another by merging them if possible.
|
|
|
// Two AttributeElements can be merged when there is no attribute or style conflicts between them.
|
|
|
// When merging is possible - all attributes, styles and classes are moved from wrapper element to element being
|
|
|
// wrapped.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.AttributeElement} wrapper Wrapper AttributeElement.
|
|
|
-// @param {engine.treeView.AttributeElement} toWrap AttributeElement to wrap using wrapper element.
|
|
|
+// @param {engine.view.AttributeElement} wrapper Wrapper AttributeElement.
|
|
|
+// @param {engine.view.AttributeElement} toWrap AttributeElement to wrap using wrapper element.
|
|
|
// @returns {Boolean} Returns `true` if elements are merged.
|
|
|
function wrapAttributeElement( wrapper, toWrap ) {
|
|
|
// Can't merge if name or priority differs.
|
|
|
@@ -839,12 +839,12 @@ function wrapAttributeElement( wrapper, toWrap ) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// Unwraps {@link engine.treeView.AttributeElement AttributeElement} from another by removing corresponding attributes,
|
|
|
+// Unwraps {@link engine.view.AttributeElement AttributeElement} from another by removing corresponding attributes,
|
|
|
// classes and styles. All attributes, classes and styles from wrapper should be present inside element being unwrapped.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.AttributeElement} wrapper Wrapper AttributeElement.
|
|
|
-// @param {engine.treeView.AttributeElement} toUnwrap AttributeElement to unwrap using wrapper element.
|
|
|
+// @param {engine.view.AttributeElement} wrapper Wrapper AttributeElement.
|
|
|
+// @param {engine.view.AttributeElement} toUnwrap AttributeElement to unwrap using wrapper element.
|
|
|
// @returns {Boolean} Returns `true` if elements are unwrapped.
|
|
|
function unwrapAttributeElement( wrapper, toUnwrap ) {
|
|
|
// Can't unwrap if name or priority differs.
|
|
|
@@ -897,12 +897,12 @@ function unwrapAttributeElement( wrapper, toUnwrap ) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-// Returns `true` if range is located in same {@link engine.treeView.AttributeElement AttributeElement}
|
|
|
-// (`start` and `end` positions are located inside same {@link engine.treeView.AttributeElement AttributeElement}),
|
|
|
+// Returns `true` if range is located in same {@link engine.view.AttributeElement AttributeElement}
|
|
|
+// (`start` and `end` positions are located inside same {@link engine.view.AttributeElement AttributeElement}),
|
|
|
// starts on 0 offset and ends after last child node.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param {engine.treeView.Range} Range
|
|
|
+// @param {engine.view.Range} Range
|
|
|
// @returns {Boolean}
|
|
|
function rangeSpansOnAllChildren( range ) {
|
|
|
return range.start.parent == range.end.parent && range.start.parent instanceof AttributeElement &&
|
|
|
@@ -910,26 +910,26 @@ function rangeSpansOnAllChildren( range ) {
|
|
|
}
|
|
|
|
|
|
// Checks if provided nodes are valid to insert by writer. Checks if each node is an instance of
|
|
|
-// {@link engine.treeView.Text Text} or {@link engine.treeView.AttributeElement AttributeElement} or
|
|
|
-// {@link engine.treeView.ContainerElement ContainerElement}.
|
|
|
+// {@link engine.view.Text Text} or {@link engine.view.AttributeElement AttributeElement} or
|
|
|
+// {@link engine.view.ContainerElement ContainerElement}.
|
|
|
//
|
|
|
-// Throws {@link utils.CKEditorError CKEditorError} `treeview-writer-insert-invalid-node` when nodes to insert
|
|
|
-// contains instances that are not {@link engine.treeView.Text Texts},
|
|
|
-// {@link engine.treeView.AttributeElement AttributeElements} or
|
|
|
-// {@link engine.treeView.ContainerElement ContainerElements}.
|
|
|
+// Throws {@link utils.CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert
|
|
|
+// contains instances that are not {@link engine.view.Text Texts},
|
|
|
+// {@link engine.view.AttributeElement AttributeElements} or
|
|
|
+// {@link engine.view.ContainerElement ContainerElements}.
|
|
|
//
|
|
|
// @private
|
|
|
-// @param Iterable.<engine.treeView.Text|engine.treeView.AttributeElement|engine.treeView.ContainerElement> nodes
|
|
|
+// @param Iterable.<engine.view.Text|engine.view.AttributeElement|engine.view.ContainerElement> nodes
|
|
|
function validateNodesToInsert( nodes ) {
|
|
|
for ( let node of nodes ) {
|
|
|
if ( !( node instanceof Text || node instanceof AttributeElement || node instanceof ContainerElement ) ) {
|
|
|
/**
|
|
|
- * Inserted nodes should be instance of {@link engine.treeView.AttributeElement AttributeElement},
|
|
|
- * {@link engine.treeView.ContainerElement ContainerElement} or {@link engine.treeView.Text Text}.
|
|
|
+ * Inserted nodes should be instance of {@link engine.view.AttributeElement AttributeElement},
|
|
|
+ * {@link engine.view.ContainerElement ContainerElement} or {@link engine.view.Text Text}.
|
|
|
*
|
|
|
- * @error treeview-writer-insert-invalid-node
|
|
|
+ * @error view-writer-insert-invalid-node
|
|
|
*/
|
|
|
- throw new CKEditorError( 'treeview-writer-insert-invalid-node' );
|
|
|
+ throw new CKEditorError( 'view-writer-insert-invalid-node' );
|
|
|
}
|
|
|
|
|
|
if ( !( node instanceof Text ) ) {
|