ViewAttributeElement
Attribute elements are used to represent formatting elements in the view (think – <b>, <span style="font-size: 2em">, etc.). Most often they are created when downcasting model text attributes.
Editing engine does not define a fixed HTML DTD. This is why a feature developer needs to choose between various types (container element, attribute element, empty element, etc) when developing a feature.
To create a new attribute element instance use the ViewDowncastWriter#createAttributeElement() method.
Properties
- _classes : undefined | ViewTokenListreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#_classes- Set of classes associated with element instance. - Note that this is just an alias for - this._attrs.get( 'class' );
- module:engine/view/attributeelement~ViewAttributeElement#_styles- Normalized styles. - Note that this is just an alias for - this._attrs.get( 'style' );
- childCount : numberreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#childCount- Number of element's children. 
- document : ViewDocumentreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#document- The document instance to which this node belongs. 
- id : null | string | numberreadonly- module:engine/view/attributeelement~ViewAttributeElement#id- Element identifier. If set, it is used by - isSimilar, and then two elements are considered similar if, and only if they have the same- id.
- index : null | numberreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#index- 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. 
- isEmpty : booleanreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#isEmpty- Is - trueif there are no nodes inside this element,- falseotherwise.
- name : stringreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#name- Name of the element. 
- nextSibling : null | ViewNodereadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#nextSibling- Node's next sibling, or - nullif it is the last child.
- parent : null | ViewElement | ViewDocumentFragmentreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#parent- Parent element. Null by default. Set by - _insertChild.
- previousSibling : null | ViewNodereadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#previousSibling- Node's previous sibling, or - nullif it is the first child.
- priority : numberreadonly- module:engine/view/attributeelement~ViewAttributeElement#priority- Element priority. Decides in what order elements are wrapped by - ViewDowncastWriter.
- root : ViewElement | ViewDocumentFragmentreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#root- Top-most ancestor of the node. If the node has no parent it is the root itself. 
- _id : null | string | numberinternalreadonly- module:engine/view/attributeelement~ViewAttributeElement#_id- Element identifier. If set, it is used by - isSimilar, and then two elements are considered similar if, and only if they have the same- _id.
- _priority : numberinternalreadonly- module:engine/view/attributeelement~ViewAttributeElement#_priority- Element priority. Decides in what order elements are wrapped by - ViewDowncastWriter.
- _unsafeAttributesToRender : Array<string>internalreadonlyinherited- module:engine/view/attributeelement~ViewAttributeElement#_unsafeAttributesToRender- A list of attribute names that should be rendered in the editing pipeline even though filtering mechanisms implemented in the - ViewDomConverter(for instance,- shouldRenderAttribute) would filter them out.- These attributes can be specified as an option when the element is created by the - ViewDowncastWriter. To check whether an unsafe an attribute should be permitted, use the- shouldRenderUnsafeAttributemethod.
- _clonesGroup : null | Set<ViewAttributeElement>privatereadonly- module:engine/view/attributeelement~ViewAttributeElement#_clonesGroup- Keeps all the attribute elements that have the same ids and still exist in the view tree. - This property is managed by - ViewDowncastWriter.
Static properties
- DEFAULT_PRIORITY : numberreadonlystatic- module:engine/view/attributeelement~ViewAttributeElement.DEFAULT_PRIORITY
Methods
- constructor( document, name, [ attrs ], [ children ] )protected- module:engine/view/attributeelement~ViewAttributeElement#constructor- Creates an attribute element. - Parameters- document : ViewDocument
- The document instance to which this element belongs. 
- name : string
- Node name. 
- [ attrs ] : ViewElementAttributes
- Collection of attributes. 
- [ children ] : ViewNode | Iterable<ViewNode>
- A list of nodes to be inserted into created element. 
 - Related:
- delegate( events ) → EmitterMixinDelegateChaininherited- module:engine/view/attributeelement~ViewAttributeElement#delegate- Delegates selected events to another - Emitter. For instance:- emitterA.delegate( 'eventX' ).to( emitterB ); emitterA.delegate( 'eventX', 'eventY' ).to( emitterC );Copy code- then - eventXis delegated (fired by)- emitterBand- emitterCalong with- data:- emitterA.fire( 'eventX', data );Copy code- and - eventYis delegated (fired by)- emitterCalong with- data:- emitterA.fire( 'eventY', data );Copy code- Parameters- events : Array<string>
- Event names that will be delegated to another emitter. 
 - Returns
- findAncestor( patterns ) → null | ViewElementinherited- module:engine/view/attributeelement~ViewAttributeElement#findAncestor- Returns ancestor element that match specified pattern. Provided patterns should be compatible with Matcher as it is used internally. - Parameters- patterns : Array<MatcherPattern | ( element: ViewElement ) => boolean>
- Patterns used to match correct ancestor. See - Matcher.
 - Returns- null | ViewElement
- Found element or - nullif no matching ancestor was found.
 - Related:
- fire( eventOrInfo, args ) → GetEventInfo<TEvent>[ 'return' ]inherited- module:engine/view/attributeelement~ViewAttributeElement#fire- Fires an event, executing all callbacks registered for it. - The first parameter passed to callbacks is an - EventInfoobject, followed by the optional- argsprovided in the- fire()method call.- Type parameters- Parameters- eventOrInfo : GetNameOrEventInfo<TEvent>
- The name of the event or - EventInfoobject if event is delegated.
- args : TEvent[ 'args' ]
- Additional arguments to be passed to the callbacks. 
 - Returns- GetEventInfo<TEvent>[ 'return' ]
- By default the method returns - undefined. However, the return value can be changed by listeners through modification of the- evt.return's property (the event info is the first param of every callback).
 
- getAncestors( options = { [options.includeSelf], [options.parentFirst] } ) → Array<ViewNode | ViewDocumentFragment>inherited- module:engine/view/attributeelement~ViewAttributeElement#getAncestors- Returns ancestors array of this node. - Parameters- options : object
- Options object. Properties- [ options.includeSelf ] : boolean
- When set to - truethis node will be also included in parent's array.
- [ 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 - {}
 - Returns- Array<ViewNode | ViewDocumentFragment>
- Array with ancestors. 
 
- getAttribute( key ) → undefined | stringinherited- module:engine/view/attributeelement~ViewAttributeElement#getAttribute- Gets attribute by key. If attribute is not present - returns undefined. - Parameters- key : string
- Attribute key. 
 - Returns- undefined | string
- Attribute value. 
 
- getAttributeKeys() → IterableIterator<string>inherited- module:engine/view/attributeelement~ViewAttributeElement#getAttributeKeys- Returns an iterator that contains the keys for attributes. Order of inserting attributes is not preserved. - Returns- IterableIterator<string>
- Keys for attributes. 
 
- getAttributes() → IterableIterator<tuple>inherited- module:engine/view/attributeelement~ViewAttributeElement#getAttributes- Returns iterator that iterates over this element's attributes. - Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value. This format is accepted by native - Mapobject and also can be passed in- Nodeconstructor.- Returns- IterableIterator<tuple>
 
- module:engine/view/attributeelement~ViewAttributeElement#getChild- Gets child at the given index. - Parameters- index : number
- Index of child. 
 - Returns- undefined | ViewNode
- Child node. 
 
- getChildIndex( node ) → numberinherited- module:engine/view/attributeelement~ViewAttributeElement#getChildIndex- Gets index of the given child node. Returns - -1if child node is not found.- Parameters- node : ViewNode
- Child node. 
 - Returns- number
- Index of the child node. 
 
- getChildren() → IterableIterator<ViewNode>inherited- module:engine/view/attributeelement~ViewAttributeElement#getChildren
- getClassNames() → IterableIterator<string>inherited- module:engine/view/attributeelement~ViewAttributeElement#getClassNames- Returns iterator that contains all class names. - Returns- IterableIterator<string>
 
- getCommonAncestor( node, options = { [options.includeSelf] } ) → null | ViewElement | ViewDocumentFragmentinherited- module:engine/view/attributeelement~ViewAttributeElement#getCommonAncestor- Returns a - ViewElementor- ViewDocumentFragmentwhich is a common ancestor of both nodes.- Parameters- node : ViewNode
- The second node. 
- options : object
- Options object. Properties- [ options.includeSelf ] : boolean
- When set to - trueboth 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 - {}
 - Returns- null | ViewElement | ViewDocumentFragment
 
- getCustomProperties() → IterableIterator<tuple>inherited- module:engine/view/attributeelement~ViewAttributeElement#getCustomProperties- Returns an iterator which iterates over this element's custom properties. Iterator provides - [ key, value ]pairs for each stored property.- Returns- IterableIterator<tuple>
 
- getCustomProperty( key ) → unknowninherited- module:engine/view/attributeelement~ViewAttributeElement#getCustomProperty- Returns the custom property value for the given key. - Parameters- key : string | symbol
 - Returns- unknown
 
- module:engine/view/attributeelement~ViewAttributeElement#getElementsWithSameId- Returns all attribute elements that has the same id and are in the view tree (were not removed). - Note: If this element has been removed from the tree, returned set will not include it. - Throws attribute-element-get-elements-with-same-id-no-id if this element has no - id.- Returns- Set<ViewAttributeElement>
- Set containing all the attribute elements with the same - idthat were added and not removed from the view tree.
 
- getFillerOffset() → null | numberinherited- module:engine/view/attributeelement~ViewAttributeElement#getFillerOffset
- getIdentity() → stringinherited- module:engine/view/attributeelement~ViewAttributeElement#getIdentity- Returns identity string based on element's name, styles, classes and other attributes. Two elements that are similar will have same identity string. It has the following format: - 'name class="class1,class2" style="style1:value1;style2:value2" attr1="val1" attr2="val2"'Copy code- For example: - const element = writer.createContainerElement( 'foo', { banana: '10', apple: '20', style: 'color: red; border-color: white;', class: 'baz' } ); // returns 'foo class="baz" style="border-color:white;color:red" apple="20" banana="10"' element.getIdentity();Copy code- Note: Classes, styles and other attributes are sorted alphabetically. - Returns- string
 
- getNormalizedStyle( property ) → undefined | StyleValueinherited- module:engine/view/attributeelement~ViewAttributeElement#getNormalizedStyle- Returns a normalized style object or single style value. - For an element with style set to: margin:1px 2px 3em; - element.getNormalizedStyle( 'margin' ) );Copy code- will return: - { top: '1px', right: '2px', bottom: '3em', left: '2px' // a normalized value from margin shorthand }Copy code- and reading for single style value: - styles.getNormalizedStyle( 'margin-left' );Copy code- Will return a - 2pxstring.- Note: This method will return normalized values only if a particular style processor rule is enabled. See - StylesMap#getNormalized()for details.- Parameters- property : string
- Name of CSS property 
 - Returns- undefined | StyleValue
 
- getPath() → Array<number>inherited- module:engine/view/attributeelement~ViewAttributeElement#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 [].Copy code- Returns- Array<number>
- The path. 
 
- getStyle( property ) → undefined | stringinherited- module:engine/view/attributeelement~ViewAttributeElement#getStyle- Returns style value for the given property name. If the style does not exist - undefinedis returned.- Note: This method can work with normalized style names if a particular style processor rule is enabled. See - StylesMap#getAsString()for details.- For an element with style set to - 'margin:1px':- // Enable 'margin' shorthand processing: editor.data.addStyleProcessorRules( addMarginStylesRules ); const element = view.change( writer => { const element = writer.createElement(); writer.setStyle( 'margin', '1px' ); writer.setStyle( 'margin-bottom', '3em' ); return element; } ); element.getStyle( 'margin' ); // -> 'margin: 1px 1px 3em;'Copy code- Parameters- property : string
 - Returns- undefined | string
 
- getStyleNames( [ expand ] ) → Array<string>inherited- module:engine/view/attributeelement~ViewAttributeElement#getStyleNames- Returns an array that contains all style names. - Parameters- [ expand ] : boolean
- Expand shorthand style properties and return all equivalent style representations. 
 - Returns- Array<string>
 
- hasAttribute( key, [ token ] ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#hasAttribute- Returns a boolean indicating whether an attribute with the specified key exists in the element. - Parameters- key : string
- Attribute key. 
- [ token ] : string
 - Returns- boolean
- trueif attribute with the specified key exists in the element,- falseotherwise.
 
- hasClass( className ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#hasClass- Returns true if class is present. If more then one class is provided - returns true only when all classes are present. - element.hasClass( 'foo' ); // Returns true if 'foo' class is present. element.hasClass( 'foo', 'bar' ); // Returns true if 'foo' and 'bar' classes are both present.Copy code- Parameters- className : Array<string>
 - Returns- boolean
 
- hasStyle( property ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#hasStyle- Returns true if style keys are present. If more then one style property is provided - returns true only when all properties are present. - element.hasStyle( 'color' ); // Returns true if 'border-top' style is present. element.hasStyle( 'color', 'border-top' ); // Returns true if 'color' and 'border-top' styles are both present.Copy code- Parameters- property : Array<string>
 - Returns- boolean
 
- is( type ) → this is ViewElement | ViewAttributeElement | ViewContainerElement | ViewEditableElement | ViewEmptyElement | ViewRawElement | ViewRootEditableElement | ViewUIElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:ELEMENT- Checks whether this object is of type - ViewElementor its subclass.- element.is( 'element' ); // -> true element.is( 'node' ); // -> true element.is( 'view:element' ); // -> true element.is( 'view:node' ); // -> true element.is( 'model:element' ); // -> false element.is( 'documentSelection' ); // -> falseCopy code- Assuming that the object being checked is an element, you can also check its name: - element.is( 'element', 'img' ); // -> true if this is an <img> element text.is( 'element', 'img' ); -> falseCopy code- Parameters- type : 'element' | 'view:element'
 - Returns
- is( type ) → this is ViewContainerElement | ViewEditableElement | ViewRootEditableElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:CONTAINER_ELEMENT- Checks whether this object is of type - ViewContainerElementor its subclass.- containerElement.is( 'containerElement' ); // -> true containerElement.is( 'element' ); // -> true containerElement.is( 'node' ); // -> true containerElement.is( 'view:containerElement' ); // -> true containerElement.is( 'view:element' ); // -> true containerElement.is( 'view:node' ); // -> true containerElement.is( 'model:element' ); // -> false containerElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is a container element, you can also check its name: - containerElement.is( 'element', 'div' ); // -> true if this is a div container element containerElement.is( 'contaienrElement', 'div' ); // -> same as above text.is( 'element', 'div' ); -> falseCopy code- Parameters- type : 'containerElement' | 'view:containerElement'
 - Returns
- is( type ) → this is ViewAttributeElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:ATTRIBUTE_ELEMENT- Checks whether this object is of type - ViewAttributeElement.- attributeElement.is( 'attributeElement' ); // -> true attributeElement.is( 'element' ); // -> true attributeElement.is( 'node' ); // -> true attributeElement.is( 'view:attributeElement' ); // -> true attributeElement.is( 'view:element' ); // -> true attributeElement.is( 'view:node' ); // -> true attributeElement.is( 'model:element' ); // -> false attributeElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is an attribute element, you can also check its name: - attributeElement.is( 'element', 'b' ); // -> true if this is a bold element attributeElement.is( 'attributeElement', 'b' ); // -> same as above text.is( 'element', 'b' ); -> falseCopy code- Parameters- type : 'attributeElement' | 'view:attributeElement'
 - Returns- this is ViewAttributeElement
 
- is( type ) → this is ViewRawElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:RAW_ELEMENT- Checks whether this object is of type - ViewRawElement.- rawElement.is( 'rawElement' ); // -> true rawElement.is( 'element' ); // -> true rawElement.is( 'node' ); // -> true rawElement.is( 'view:rawElement' ); // -> true rawElement.is( 'view:element' ); // -> true rawElement.is( 'view:node' ); // -> true rawElement.is( 'model:element' ); // -> false rawElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is a raw element, you can also check its name: - rawElement.is( 'img' ); // -> true if this is an img element rawElement.is( 'rawElement', 'img' ); // -> same as above text.is( 'img' ); -> falseCopy code- Parameters- type : 'rawElement' | 'view:rawElement'
 - Returns- this is ViewRawElement
 
- is( type ) → this is ViewEmptyElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:EMPTY_ELEMENT- Checks whether this object is of type - ViewEmptyElement.- emptyElement.is( 'emptyElement' ); // -> true emptyElement.is( 'element' ); // -> true emptyElement.is( 'node' ); // -> true emptyElement.is( 'view:emptyElement' ); // -> true emptyElement.is( 'view:element' ); // -> true emptyElement.is( 'view:node' ); // -> true emptyElement.is( 'model:element' ); // -> false emptyElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is an empty element, you can also check its name: - emptyElement.is( 'element', 'img' ); // -> true if this is a img element emptyElement.is( 'emptyElement', 'img' ); // -> same as above text.is( 'element', 'img' ); -> falseCopy code- Parameters- type : 'emptyElement' | 'view:emptyElement'
 - Returns- this is ViewEmptyElement
 
- is( type ) → this is ViewEditableElement | ViewRootEditableElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:EDITABLE_ELEMENT- Checks whether this object is of type - ViewEditableElementor its subclass.- editableElement.is( 'editableElement' ); // -> true editableElement.is( 'element' ); // -> true editableElement.is( 'node' ); // -> true editableElement.is( 'view:editableElement' ); // -> true editableElement.is( 'view:element' ); // -> true editableElement.is( 'view:node' ); // -> true editableElement.is( 'model:element' ); // -> false editableElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is an editbale element, you can also check its name: - editableElement.is( 'element', 'div' ); // -> true if this is a div element editableElement.is( 'editableElement', 'div' ); // -> same as above text.is( 'element', 'div' ); -> falseCopy code- Parameters- type : 'editableElement' | 'view:editableElement'
 - Returns- this is ViewEditableElement | ViewRootEditableElement
 
- is( type ) → this is ViewDocumentFragmentinherited- module:engine/view/attributeelement~ViewAttributeElement#is:DOCUMENT_FRAGMENT- hecks whether this object is of type - ViewDocumentFragment.- docFrag.is( 'documentFragment' ); // -> true docFrag.is( 'view:documentFragment' ); // -> true docFrag.is( 'model:documentFragment' ); // -> false docFrag.is( 'element' ); // -> false docFrag.is( 'node' ); // -> falseCopy code- Parameters- type : 'documentFragment' | 'view:documentFragment'
 - Returns- this is ViewDocumentFragment
 
- is( type ) → this is ViewDocumentSelectioninherited- module:engine/view/attributeelement~ViewAttributeElement#is:DOCUMENT_SELECTION- Checks whether this object is of type - ViewDocumentSelection.- `docSelection.is( 'selection' ); // -> true docSelection.is( 'documentSelection' ); // -> true docSelection.is( 'view:selection' ); // -> true docSelection.is( 'view:documentSelection' ); // -> true docSelection.is( 'model:documentSelection' ); // -> false docSelection.is( 'element' ); // -> false docSelection.is( 'node' ); // -> falseCopy code- Parameters- type : 'documentSelection' | 'view:documentSelection'
 - Returns- this is ViewDocumentSelection
 
- is( type ) → this is ViewSelection | ViewDocumentSelectioninherited- module:engine/view/attributeelement~ViewAttributeElement#is:SELECTION- Checks whether this object is of type - ViewSelectionor- ViewDocumentSelection.- selection.is( 'selection' ); // -> true selection.is( 'view:selection' ); // -> true selection.is( 'model:selection' ); // -> false selection.is( 'element' ); // -> false selection.is( 'range' ); // -> falseCopy code- Parameters- type : 'selection' | 'view:selection'
 - Returns- this is ViewSelection | ViewDocumentSelection
 
- module:engine/view/attributeelement~ViewAttributeElement#is:RANGE- Checks whether this object is of type - ViewRange.- range.is( 'range' ); // -> true range.is( 'view:range' ); // -> true range.is( 'model:range' ); // -> false range.is( 'element' ); // -> false range.is( 'selection' ); // -> falseCopy code- Parameters- type : 'range' | 'view:range'
 - Returns- this is ViewRange
 
- is( type ) → this is ViewPositioninherited- module:engine/view/attributeelement~ViewAttributeElement#is:POSITION- Checks whether this object is of type - ViewPosition.- position.is( 'position' ); // -> true position.is( 'view:position' ); // -> true position.is( 'model:position' ); // -> false position.is( 'element' ); // -> false position.is( 'range' ); // -> falseCopy code- Parameters- type : 'position' | 'view:position'
 - Returns- this is ViewPosition
 
- is( type ) → this is ViewTextProxyinherited- module:engine/view/attributeelement~ViewAttributeElement#is:TEXT_PROXY- Checks whether this object is of type - ViewTextProxy.- textProxy.is( '$textProxy' ); // -> true textProxy.is( 'view:$textProxy' ); // -> true textProxy.is( 'model:$textProxy' ); // -> false textProxy.is( 'element' ); // -> false textProxy.is( 'range' ); // -> falseCopy code- Note: Until version 20.0.0 this method wasn't accepting - '$textProxy'type. The legacy- 'textProxy'type is still accepted for backward compatibility.- Parameters- type : '$textProxy' | 'view:$textProxy'
 - Returns- this is ViewTextProxy
 
- module:engine/view/attributeelement~ViewAttributeElement#is:TEXT- Checks whether this object is of type - ViewText.- text.is( '$text' ); // -> true text.is( 'node' ); // -> true text.is( 'view:$text' ); // -> true text.is( 'view:node' ); // -> true text.is( 'model:$text' ); // -> false text.is( 'element' ); // -> false text.is( 'range' ); // -> falseCopy code- Parameters- type : '$text' | 'view:$text'
 - Returns- this is ViewText
 
- is( type ) → this is ViewUIElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:UI_ELEMENT- Checks whether this object is of type - ViewUIElement.- uiElement.is( 'uiElement' ); // -> true uiElement.is( 'element' ); // -> true uiElement.is( 'node' ); // -> true uiElement.is( 'view:uiElement' ); // -> true uiElement.is( 'view:element' ); // -> true uiElement.is( 'view:node' ); // -> true uiElement.is( 'model:element' ); // -> false uiElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is an ui element, you can also check its name: - uiElement.is( 'element', 'span' ); // -> true if this is a span ui element uiElement.is( 'uiElement', 'span' ); // -> same as above text.is( 'element', 'span' ); -> falseCopy code- Parameters- type : 'uiElement' | 'view:uiElement'
 - Returns- this is ViewUIElement
 
- is( type ) → this is ViewRootEditableElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:ROOT_ELEMENT- Checks whether this object is of type - ViewRootEditableElement.- rootEditableElement.is( 'rootElement' ); // -> true rootEditableElement.is( 'editableElement' ); // -> true rootEditableElement.is( 'element' ); // -> true rootEditableElement.is( 'node' ); // -> true rootEditableElement.is( 'view:editableElement' ); // -> true rootEditableElement.is( 'view:element' ); // -> true rootEditableElement.is( 'view:node' ); // -> true rootEditableElement.is( 'model:element' ); // -> false rootEditableElement.is( 'documentFragment' ); // -> falseCopy code- Assuming that the object being checked is a root editable element, you can also check its name: - rootEditableElement.is( 'element', 'div' ); // -> true if this is a div root editable element rootEditableElement.is( 'rootElement', 'div' ); // -> same as above text.is( 'element', 'div' ); -> falseCopy code- Parameters- type : 'rootElement' | 'view:rootElement'
 - Returns- this is ViewRootEditableElement
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:CONTAINER_ELEMENT_NAME- Checks whether the object is of type - ViewContainerElementor its subclass and has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'containerElement' | 'view:containerElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:ROOT_ELEMENT_NAME- Checks whether the object is of type - ViewRootEditableElementand has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'rootElement' | 'view:rootElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:UI_ELEMENT_NAME- Checks whether the object is of type - ViewUIElementand has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'uiElement' | 'view:uiElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:RAW_ELEMENT_NAME- Checks whether the object is of type - ViewRawElementand has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'rawElement' | 'view:rawElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:EMPTY_ELEMENT_NAME- Checks whether the object is of type - ViewEmptyElementhas the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'emptyElement' | 'view:emptyElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:EDITABLE_ELEMENT_NAME- Checks whether the object is of type - ViewEditableElementor its subclass and has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'editableElement' | 'view:editableElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:ATTRIBUTE_ELEMENT_NAME- Checks whether the object is of type - ViewAttributeElementand has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'attributeElement' | 'view:attributeElement'
- name : N
 - Returns- boolean
 
- is( type, name ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#is:ELEMENT_NAME- Checks whether the object is of type - ViewElementor its subclass and has the specified- name.- Type parameters- N : extends string
 - Parameters- type : 'element' | 'view:element'
- name : N
 - Returns- boolean
 
- is( type ) → this is ViewText | ViewNode | ViewElement | ViewAttributeElement | ViewContainerElement | ViewEditableElement | ViewEmptyElement | ViewRawElement | ViewRootEditableElement | ViewUIElementinherited- module:engine/view/attributeelement~ViewAttributeElement#is:NODE- Checks whether this object is of type - ViewNodeor its subclass.- This method is useful when processing view objects that are of unknown type. For example, a function may return a - ViewDocumentFragmentor a- ViewNodethat 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 fragmentCopy code- Since this method is also available on a range of model objects, you can prefix the type of the object with - model:or- view:to check, for example, if this is the model's or view's element:- viewElement.is( 'view:element' ); // -> true viewElement.is( 'model:element' ); // -> falseCopy code- 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 preciseCopy code- Parameters- type : 'node' | 'view:node'
 - Returns
- isAfter( node ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#isAfter- Returns whether this node is after given node. - falseis returned if nodes are in different trees (for example, in different- ViewDocumentFragments).- Parameters- node : ViewNode
- Node to compare with. 
 - Returns- boolean
 
- isAttached() → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#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 ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#isBefore- Returns whether this node is before given node. - falseis returned if nodes are in different trees (for example, in different- ViewDocumentFragments).- Parameters- node : ViewNode
- Node to compare with. 
 - Returns- boolean
 
- isSimilar( otherElement ) → boolean- module:engine/view/attributeelement~ViewAttributeElement#isSimilar- Checks if this element is similar to other element. - If none of elements has set - id, then both elements should have the same name, attributes and priority to be considered as similar. Two similar elements can contain different set of children nodes.- If at least one element has - idset, then both elements have to have the same- idvalue to be considered similar.- Similarity is important for - ViewDowncastWriter. For example:- two following similar elements can be merged together into one, longer element,
- unwrapchecks similarity of passed element and processed element to decide whether processed element should be unwrapped,
- etc.
 - Parameters- otherElement : ViewElement
 - Returns- boolean
 
- listenTo( emitter, event, callback, [ options ] ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#listenTo:BASE_EMITTER- Registers a callback function to be executed when an event is fired in a specific (emitter) object. - Events can be grouped in namespaces using - :. When namespaced event is fired, it additionally fires all callbacks for that namespace.- // myEmitter.on( ... ) is a shorthand for myEmitter.listenTo( myEmitter, ... ). myEmitter.on( 'myGroup', genericCallback ); myEmitter.on( 'myGroup:myEvent', specificCallback ); // genericCallback is fired. myEmitter.fire( 'myGroup' ); // both genericCallback and specificCallback are fired. myEmitter.fire( 'myGroup:myEvent' ); // genericCallback is fired even though there are no callbacks for "foo". myEmitter.fire( 'myGroup:foo' );Copy code- An event callback can stop the event and set the return value of the - firemethod.- Type parameters- Parameters- emitter : Emitter
- The object that fires the event. 
- event : TEvent[ 'name' ]
- The name of the event. 
- callback : GetCallback<TEvent>
- The function to be called on event. 
- [ options ] : GetCallbackOptions<TEvent>
- Additional options. 
 - Returns- void
 
- off( event, callback ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#off- Stops executing the callback on the given event. Shorthand for - this.stopListening( this, event, callback ).- Parameters- event : string
- The name of the event. 
- callback : Function
- The function to stop being called. 
 - Returns- void
 
- on( event, callback, [ options ] ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#on- Registers a callback function to be executed when an event is fired. - Shorthand for - this.listenTo( this, event, callback, options )(it makes the emitter listen on itself).- Type parameters- Parameters- event : TEvent[ 'name' ]
- The name of the event. 
- callback : GetCallback<TEvent>
- The function to be called on event. 
- [ options ] : GetCallbackOptions<TEvent>
- Additional options. 
 - Returns- void
 
- once( event, callback, [ options ] ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#once- Registers a callback function to be executed on the next time the event is fired only. This is similar to calling - onfollowed by- offin the callback.- Type parameters- Parameters- event : TEvent[ 'name' ]
- The name of the event. 
- callback : GetCallback<TEvent>
- The function to be called on event. 
- [ options ] : GetCallbackOptions<TEvent>
- Additional options. 
 - Returns- void
 
- shouldRenderUnsafeAttribute( attributeName ) → booleaninherited- module:engine/view/attributeelement~ViewAttributeElement#shouldRenderUnsafeAttribute- Decides whether an unsafe attribute is whitelisted and should be rendered in the editing pipeline even though filtering mechanisms like - shouldRenderAttributesay it should not.- Unsafe attribute names can be specified when creating an element via - ViewDowncastWriter.- Parameters- attributeName : string
- The name of the attribute to be checked. 
 - Returns- boolean
 
- stopDelegating( [ event ], [ emitter ] ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#stopDelegating- Stops delegating events. It can be used at different levels: - To stop delegating all events.
- To stop delegating a specific event to all emitters.
- To stop delegating a specific event to a specific emitter.
 - Parameters- [ event ] : string
- The name of the event to stop delegating. If omitted, stops it all delegations. 
- [ emitter ] : Emitter
- (requires - event) The object to stop delegating a particular event to. If omitted, stops delegation of- eventto all emitters.
 - Returns- void
 
- stopListening( [ emitter ], [ event ], [ callback ] ) → voidinherited- module:engine/view/attributeelement~ViewAttributeElement#stopListening:BASE_STOP- Stops listening for events. It can be used at different levels: - To stop listening to a specific callback.
- To stop listening to a specific event.
- To stop listening to all events fired by a specific object.
- To stop listening to all events fired by all objects.
 - Parameters- [ emitter ] : Emitter
- The object to stop listening to. If omitted, stops it for all objects. 
- [ event ] : string
- (Requires the - emitter) The name of the event to stop listening to. If omitted, stops it for all events from- emitter.
- [ callback ] : Function
- (Requires the - event) The function to be removed from the call list for the given- event.
 - Returns- void
 
- toJSON() → unknown- module:engine/view/attributeelement~ViewAttributeElement#toJSON- Converts - ViewAttributeElementinstance to plain object and returns it.- Returns- unknown
- ViewAttributeElementinstance converted to plain object.
 
- _addClass( className ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_addClass- Adds specified class. - element._addClass( 'foo' ); // Adds 'foo' class. element._addClass( [ 'foo', 'bar' ] ); // Adds 'foo' and 'bar' classes.Copy code- Parameters- className : ArrayOrItem<string>
 - Returns- void
 - Fires- Related:
- _appendChild( items ) → numberinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_appendChild
- _canMergeAttributesFrom( otherElement ) → booleaninternal- module:engine/view/attributeelement~ViewAttributeElement#_canMergeAttributesFrom- Used by - _mergeAttributesFromto verify if the given element can be merged without conflicts into this element.- Parameters- otherElement : ViewAttributeElement
 - Returns- boolean
 
- _canSubtractAttributesOf( otherElement ) → booleaninternal- module:engine/view/attributeelement~ViewAttributeElement#_canSubtractAttributesOf- Used by - _subtractAttributesOfto verify if the given element attributes can be fully subtracted from this element.- Parameters- otherElement : ViewAttributeElement
 - Returns- boolean
 
- _clone( deep ) → thisinternal- module:engine/view/attributeelement~ViewAttributeElement#_clone- Clones provided element with priority. - Parameters- deep : boolean
- If set to - trueclones element and all its children recursively. When set to- false, element will be cloned without any children.- Defaults to - false
 - Returns- this
- Clone of this element. 
 
- _collectAttributesMatch( patterns, match, [ exclude ] ) → booleaninternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_collectAttributesMatch- Used by the Matcher to collect matching attribute tuples (attribute name and optional token). - Normalized patterns can be used in following ways: - to match any attribute name with any or no value:
 - patterns: [ [ true, true ] ]Copy code- to match a specific attribute with any value:
 - patterns: [ [ 'required', true ] ]Copy code- to match an attribute name with a RegExp with any value:
 - patterns: [ [ /h[1-6]/, true ] ]Copy code- - to match a specific attribute with the exact value:Copy code- patterns: [ [ 'rel', 'nofollow' ] ]Copy code- - to match a specific attribute with a value matching a RegExp:Copy code- patterns: [ [ 'src', /^https/ ] ]Copy code- - to match an attribute name with a RegExp and the exact value:Copy code- patterns: [ [ /^data-property-/, 'foobar' ], ]Copy code- - to match an attribute name with a RegExp and match a value with another RegExp:Copy code- patterns: [ [ /^data-property-/, /^foo/ ] ]Copy code- - to match a specific style property with the value matching a RegExp:Copy code- patterns: [ [ 'style', 'font-size', /px$/ ] ]Copy code- - to match a specific class (class attribute is tokenized so it matches tokens individually):Copy code- patterns: [ [ 'class', 'foo' ] ]Copy code- Parameters- patterns : Array<NormalizedPropertyPattern>
- An array of normalized patterns (tuples of 2 or 3 items depending on if tokenized attribute value match is needed). 
- match : Array<tuple>
- An array to populate with matching tuples. 
- [ exclude ] : Array<string>
- Array of attribute names to exclude from match. 
 - Returns- boolean
- trueif element matches all patterns. The matching tuples are pushed to the- matcharray.
 
- _fireChange( type, node, [ data ] = { data.index } ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_fireChange- Parameters- type : ViewDocumentChangeType
- Type of the change. 
- node : ViewNode
- Changed node. 
- [ data ] : object
- Additional data. Properties- data.index : number
 
 - Returns- void
 - Fires
- _getConsumables( [ key ], [ token ] ) → ViewNormalizedConsumablesinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_getConsumables- Used by the - ViewConsumableto collect the- ViewNormalizedConsumablesfor the element.- When - keyand- tokenparameters are provided the output is filtered for the specified attribute and it's tokens and related tokens.- Parameters- [ key ] : string
- Attribute name. 
- [ token ] : string
- Reference token to collect all related tokens. 
 - Returns
- _insertChild( index, items ) → numberinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_insertChild- Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to this element. - Parameters- index : number
- Position where nodes should be inserted. 
- items : string | ViewItem | Iterable<( string | ViewItem )>
- Items to be inserted. 
 - Returns- number
- Number of inserted nodes. 
 - Fires- Related:
- _mergeAttributesFrom( otherElement ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_mergeAttributesFrom- Merges attributes of a given element into the element. This includes also tokenized attributes like style and class. - Note that you should make sure there are no conflicts before merging (see - _canMergeAttributesFrom).- This method is used by the - ViewDowncastWriterwhile down-casting an- ViewAttributeElementto merge it with other ViewAttributeElement.- Parameters- otherElement : ViewElement
 - Returns- void
 
- _remove() → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_remove
- _removeAttribute( key, [ tokens ] ) → booleaninternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_removeAttribute- Removes attribute from the element. - Parameters- key : string
- Attribute key. 
- [ tokens ] : ArrayOrItem<string>
- Attribute value tokens to remove. The whole attribute is removed if not specified. 
 - Returns- boolean
- Returns true if an attribute existed and has been removed. 
 - Fires- Related:
- _removeChildren( index, howMany ) → Array<ViewNode>internalinherited- module:engine/view/attributeelement~ViewAttributeElement#_removeChildren- Removes number of child nodes starting at the given index and set the parent of these nodes to - null.- Parameters- index : number
- Number of the first node to remove. 
- howMany : number
- Number of nodes to remove. - Defaults to - 1
 - Returns- Array<ViewNode>
- The array of removed nodes. 
 - Fires- Related:
- _removeClass( className ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_removeClass- Removes specified class. - element._removeClass( 'foo' ); // Removes 'foo' class. element._removeClass( [ 'foo', 'bar' ] ); // Removes both 'foo' and 'bar' classes.Copy code- Parameters- className : ArrayOrItem<string>
 - Returns- void
 - Fires- Related:
- _removeCustomProperty( key ) → booleaninternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_removeCustomProperty- Removes the custom property stored under the given key. - Parameters- key : string | symbol
 - Returns- boolean
- Returns true if property was removed. 
 - Related:
- _removeStyle( property ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_removeStyle- Removes specified style. - element._removeStyle( 'color' ); // Removes 'color' style. element._removeStyle( [ 'color', 'border-top' ] ); // Removes both 'color' and 'border-top' styles.Copy code- Note: This method can work with normalized style names if a particular style processor rule is enabled. See - StylesMap#remove()for details.- Parameters- property : ArrayOrItem<string>
 - Returns- void
 - Fires- Related:
- _setAttribute( key, value, overwrite ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_setAttribute- Adds or overwrite attribute with a specified key and value. - Parameters- key : string
- Attribute key. 
- value : unknown
- Attribute value. 
- overwrite : boolean
- Whether tokenized attribute should override the attribute value or just add a token. - Defaults to - true
 - Returns- void
 - Fires- Related:
- _setCustomProperty( key, value ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_setCustomProperty- Sets a custom property. Unlike attributes, custom properties are not rendered to the DOM, so they can be used to add special data to elements. - Parameters- key : string | symbol
- value : unknown
 - Returns- void
 - Related:
- _setStyle( properties ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_setStyle:OBJECT- Adds style to the element. - element._setStyle( { color: 'red', position: 'fixed' } );Copy code- Note: This method can work with normalized style names if a particular style processor rule is enabled. See - StylesMap#set()for details.- Parameters- properties : Record<string, string>
- Object with key - value pairs. 
 - Returns- void
 - Fires- Related:
- _setStyle( property, value ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_setStyle:KEY_VALUE- Adds style to the element. - element._setStyle( 'color', 'red' );Copy code- Note: This method can work with normalized style names if a particular style processor rule is enabled. See - StylesMap#set()for details.- Parameters- property : string
- Property name. 
- value : string
- Value to set. 
 - Returns- void
 - Fires- Related:
- _subtractAttributesOf( otherElement ) → voidinternalinherited- module:engine/view/attributeelement~ViewAttributeElement#_subtractAttributesOf- Removes (subtracts) corresponding attributes of the given element from the element. This includes also tokenized attributes like style and class. All attributes, classes and styles from given element should be present inside the element being unwrapped. - Note that you should make sure all attributes could be subtracted before subtracting them (see - _canSubtractAttributesOf).- This method is used by the - ViewDowncastWriterwhile down-casting an- ViewAttributeElementto unwrap the ViewAttributeElement.- Parameters- otherElement : ViewElement
 - Returns- void
 
Events
- change( eventInfo, changedNode, [ data ] )inherited- module:engine/view/attributeelement~ViewAttributeElement#event:change- Fired when list of elements children, attributes or text changes. - Change event is bubbled – it is fired on all ancestors. - All change events as the first parameter receive the node that has changed (the node for which children, attributes or text changed). - If - change:childrenevent is fired, there is an additional second parameter, which is an object with additional data related to change.- Parameters
- change:attributes( eventInfo, changedNode, [ data ] )inherited- module:engine/view/attributeelement~ViewAttributeElement#event:change:attributes- Fired when list of elements children, attributes or text changes. - Change event is bubbled – it is fired on all ancestors. - All change events as the first parameter receive the node that has changed (the node for which children, attributes or text changed). - If - change:childrenevent is fired, there is an additional second parameter, which is an object with additional data related to change.- Parameters
- change:children( eventInfo, changedNode, [ data ] )inherited- module:engine/view/attributeelement~ViewAttributeElement#event:change:children- Fired when list of elements children, attributes or text changes. - Change event is bubbled – it is fired on all ancestors. - All change events as the first parameter receive the node that has changed (the node for which children, attributes or text changed). - If - change:childrenevent is fired, there is an additional second parameter, which is an object with additional data related to change.- Parameters
- change:text( eventInfo, changedNode, [ data ] )inherited- module:engine/view/attributeelement~ViewAttributeElement#event:change:text- Fired when list of elements children, attributes or text changes. - Change event is bubbled – it is fired on all ancestors. - All change events as the first parameter receive the node that has changed (the node for which children, attributes or text changed). - If - change:childrenevent is fired, there is an additional second parameter, which is an object with additional data related to change.- Parameters