Node (engine/view)
@ckeditor/ckeditor5-engine/src/view/node
Abstract view node class.
This is an abstract class. Its constructor should not be used directly.
Use the DowncastWriter
or UpcastWriter
to create new instances of view nodes.
Filtering
Properties
-
The document instance to which this node belongs.
-
index : Number | null
module:engine/view/node~Node#index
readonly
Index of the node in the parent element or null if the node has no parent.
Accessing this property throws an error if this node's parent element does not contain it. This means that view tree got broken.
-
nextSibling : Node | null
module:engine/view/node~Node#nextSibling
readonly
Node's next sibling, or
null
if it is the last child. -
parent : Element | DocumentFragment | null
module:engine/view/node~Node#parent
readonly
Parent element. Null by default. Set by
_insertChild
. -
previousSibling : Node | null
module:engine/view/node~Node#previousSibling
readonly
Node's previous sibling, or
null
if it is the first child. -
root : Node | DocumentFragment
module:engine/view/node~Node#root
readonly
Top-most ancestor of the node. If the node has no parent it is the root itself.
Methods
-
constructor( document )
module:engine/view/node~Node#constructor
protected
Creates a tree view node.
Parameters
document : Document
The document instance to which this node belongs.
-
getAncestors( options = { [options.includeSelf], [options.parentFirst] } ) → Array
module:engine/view/node~Node#getAncestors
Returns ancestors array of this node.
Parameters
options : Object
Options object.
Properties[ options.includeSelf ] : Boolean
When set to
true
this node will be also included in parent's array.Defaults to
false
[ options.parentFirst ] : Boolean
When set to
true
, array will be sorted from node's parent to root element, otherwise root element will be the first item in the array.Defaults to
false
Returns
Array
Array with ancestors.
-
getCommonAncestor( node, options = { [options.includeSelf] } ) → Element | DocumentFragment | null
module:engine/view/node~Node#getCommonAncestor
Returns a
Element
orDocumentFragment
which is a common ancestor of both nodes.Parameters
node : Node
The second node.
options : Object
Options object.
Properties[ options.includeSelf ] : Boolean
When set to
true
both nodes will be considered "ancestors" too. Which means that if e.g. node A is inside B, then their common ancestor will be B.Defaults to
false
Returns
Element | DocumentFragment | null
-
getPath() → Array.<Number>
module:engine/view/node~Node#getPath
Gets a path to the node. The path is an array containing indices of consecutive ancestors of this node, beginning from root, down to this node's index.
const abc = downcastWriter.createText( 'abc' ); const foo = downcastWriter.createText( 'foo' ); const h1 = downcastWriter.createElement( 'h1', null, downcastWriter.createText( 'header' ) ); const p = downcastWriter.createElement( 'p', null, [ abc, foo ] ); const div = downcastWriter.createElement( 'div', null, [ h1, p ] ); foo.getPath(); // Returns [ 1, 3 ]. `foo` is in `p` which is in `div`. `p` starts at offset 1, while `foo` at 3. h1.getPath(); // Returns [ 0 ]. div.getPath(); // Returns [].
Returns
Array.<Number>
The path.
-
is( type ) → Boolean
module:engine/view/node~Node#is
Checks whether this object is of the given type.
This method is useful when processing view objects that are of unknown type. For example, a function may return a
DocumentFragment
or aNode
that can be either a text node or an element. This method can be used to check what kind of object is returned.someObject.is( 'element' ); // -> true if this is an element someObject.is( 'node' ); // -> true if this is a node (a text node or an element) someObject.is( 'documentFragment' ); // -> true if this is a document fragment
Since this method is also available on a range of model objects, you can prefix the type of the object with
model:
orview:
to check, for example, if this is the model's or view's element:viewElement.is( 'view:element' ); // -> true viewElement.is( 'model:element' ); // -> false
By using this method it is also possible to check a name of an element:
imgElement.is( 'element', 'img' ); // -> true imgElement.is( 'view:element', 'img' ); // -> same as above, but more precise
The list of view objects which implement the
is()
method:AttributeElement#is()
ContainerElement#is()
DocumentFragment#is()
DocumentSelection#is()
EditableElement#is()
Element#is()
EmptyElement#is()
Node#is()
Position#is()
Range#is()
RootEditableElement#is()
Selection#is()
Text#is()
TextProxy#is()
UIElement#is()
Parameters
type : String
Type to check.
Returns
Boolean
-
isAfter( node ) → Boolean
module:engine/view/node~Node#isAfter
Returns whether this node is after given node.
false
is returned if nodes are in different trees (for example, in differentDocumentFragment
s). -
isAttached() → Boolean
module:engine/view/node~Node#isAttached
Returns true if the node is in a tree rooted in the document (is a descendant of one of its roots).
Returns
Boolean
-
isBefore( node ) → Boolean
module:engine/view/node~Node#isBefore
Returns whether this node is before given node.
false
is returned if nodes are in different trees (for example, in differentDocumentFragment
s). -
isSimilar() → Boolean
module:engine/view/node~Node#isSimilar
Checks if provided node is similar to this node.
Returns
Boolean
True if nodes are similar.
-
toJSON() → Object
module:engine/view/node~Node#toJSON
Custom toJSON method to solve child-parent circular dependencies.
Returns
Object
Clone of this object with the parent property removed.
-
Clones this node.
Returns
Node
Clone of this node.
-
_fireChange( type, node )
module:engine/view/node~Node#_fireChange
protected
-
_remove()
module:engine/view/node~Node#_remove
protected
Removes node from parent.
Events
-
change( eventInfo )
module:engine/view/node~Node#event:change
Parameters
eventInfo : EventInfo
An object containing information about the fired event.
-
change:attributes( eventInfo, changedNode )
module:engine/view/node~Node#event:change:attributes
Fired when list of elements attributes changes.
-
change:children( eventInfo, changedNode )
module:engine/view/node~Node#event:change:children
Fired when list of elements children changes.
-
change:text( eventInfo, changedNode )
module:engine/view/node~Node#event:change:text
Fired when text nodes data changes.
Every day, we work hard to keep our documentation complete. Have you spotted an outdated information? Is something missing? Please report it via our issue tracker.