engine/conversion/downcasthelpers
@ckeditor/ckeditor5-engine/src/conversion/downcasthelpers
Contains downcast (model-to-view) converters for DowncastDispatcher
.
Filtering
Classes
-
DowncastHelpers
module:engine/conversion/downcasthelpers~DowncastHelpers
Downcast conversion helper functions.
Type Definitions
-
AttributeCreatorFunction
module:engine/conversion/downcasthelpers~AttributeCreatorFunction
A function that takes the model attribute value and downcast conversion API as parameters.
-
AttributeElementCreatorFunction
module:engine/conversion/downcasthelpers~AttributeElementCreatorFunction
A view element creator function that takes the model attribute value and downcast conversion API as parameters and returns a view attribute element.
-
ConsumerFunction
module:engine/conversion/downcasthelpers~ConsumerFunction
A function that is expected to consume all the consumables that were used by the element creator.
-
ElementCreatorFunction
module:engine/conversion/downcasthelpers~ElementCreatorFunction
A view element creator function that takes the model element and downcast conversion API as parameters and returns a view container element.
-
HighlightDescriptor
module:engine/conversion/downcasthelpers~HighlightDescriptor
An object describing how the marker highlight should be represented in the view.
-
SlotFilter
module:engine/conversion/downcasthelpers~SlotFilter
A filtering function used to choose model child nodes to be downcasted into the specific view "slot" while executing the
elementToStructure()
converter. -
StructureCreatorFunction
module:engine/conversion/downcasthelpers~StructureCreatorFunction
A function that takes the model element and downcast conversion API as parameters and returns a view container element with slots for model child nodes to be converted into.
Functions
-
clearAttributes() → function
module:engine/conversion/downcasthelpers~clearAttributes
Function factory that creates a converter which clears artifacts after the previous model selection conversion. It removes all empty view attribute elements and merges sibling attributes at all start and end positions of all ranges.
<p><strong>^</strong></p> -> <p>^</p> <p><strong>foo</strong>^<strong>bar</strong>bar</p> -> <p><strong>foo^bar<strong>bar</p> <p><strong>foo</strong><em>^</em><strong>bar</strong>bar</p> -> <p><strong>foo^bar<strong>bar</p>
This listener should be assigned before any converter for the new selection:
modelDispatcher.on( 'selection', clearAttributes() );
See
convertCollapsedSelection
which does the opposite by breaking attributes in the selection position.Returns
function
Selection converter.
-
convertCollapsedSelection() → function
module:engine/conversion/downcasthelpers~convertCollapsedSelection
Function factory that creates a converter which converts a collapsed model selection to a view selection. The converter consumes appropriate value from the
consumable
object, maps the model selection position to the view position and breaks attribute elements at the selection position.modelDispatcher.on( 'selection', convertCollapsedSelection() );
An example of the view state before and after converting the collapsed selection:
<p><strong>f^oo<strong>bar</p> -> <p><strong>f</strong>^<strong>oo</strong>bar</p>
By breaking attribute elements like
<strong>
, the selection is in a correct element. Then, when the selection attribute is converted, broken attributes might be merged again, or the position where the selection is may be wrapped with different, appropriate attribute elements.See also
clearAttributes
which does a clean-up by merging attributes.Returns
function
Selection converter.
-
convertRangeSelection() → function
module:engine/conversion/downcasthelpers~convertRangeSelection
Function factory that creates a converter which converts a non-collapsed model selection to a view selection. The converter consumes appropriate value from the
consumable
object and maps model positions from the selection to view positions.modelDispatcher.on( 'selection', convertRangeSelection() );
Returns
function
Selection converter.
-
createViewElementFromHighlightDescriptor( writer, descriptor ) → AttributeElement
module:engine/conversion/downcasthelpers~createViewElementFromHighlightDescriptor
Creates a
<span>
view attribute element from the information provided by the highlight descriptor object. If the priority is not provided in the descriptor, the default priority will be used. -
insertAttributesAndChildren() → function
module:engine/conversion/downcasthelpers~insertAttributesAndChildren
Function factory that creates a default downcast converter for triggering attributes and children conversion.
Returns
function
The converter.
-
insertElement( elementCreator, [ consumer ] ) → function
module:engine/conversion/downcasthelpers~insertElement
protected
Function factory that creates a converter which converts node insertion changes from the model to the view. The function passed will be provided with all the parameters of the dispatcher's
insert
event. It is expected that the function returns anElement
. The result of the function will be inserted into the view.The converter automatically consumes the corresponding value from the consumables list and binds the model and view elements.
downcastDispatcher.on( 'insert:myElem', insertElement( ( modelItem, { writer } ) => { const text = writer.createText( 'myText' ); const myElem = writer.createElement( 'myElem', { myAttr: 'my-' + modelItem.getAttribute( 'myAttr' ) }, text ); // Do something fancy with `myElem` using `modelItem` or other parameters. return myElem; } ) );
Parameters
elementCreator : function
Function returning a view element, which will be inserted.
[ consumer ] : ConsumerFunction
Function defining element consumption process. By default this function just consume passed item insertion.
Returns
function
Insert element event converter.
-
insertStructure( elementCreator, consumer ) → function
module:engine/conversion/downcasthelpers~insertStructure
protected
Function factory that creates a converter which converts a single model node insertion to a view structure.
It is expected that the passed element creator function returns an
Element
with attached slots created withwriter.createSlot()
to indicate where child nodes should be converted.Parameters
elementCreator : StructureCreatorFunction
Function returning a view structure, which will be inserted.
consumer : ConsumerFunction
A callback that is expected to consume all the consumables that were used by the element creator.
Returns
function
Insert element event converter.
Related:
-
insertText() → function
module:engine/conversion/downcasthelpers~insertText
Function factory that creates a default downcast converter for text insertion changes.
The converter automatically consumes the corresponding value from the consumables list and stops the event (see
DowncastDispatcher
).modelDispatcher.on( 'insert:$text', insertText() );
Returns
function
Insert text event converter.
-
insertUIElement( elementCreator ) → function
module:engine/conversion/downcasthelpers~insertUIElement
protected
Function factory that creates a converter which converts marker adding change to the view UI element.
The view UI element that will be added to the view depends on the passed parameter. See
insertElement
. In case of a non-collapsed range, the UI element will not wrap nodes but separate elements will be placed at the beginning and at the end of the range.This converter binds created UI elements with the marker name using
bindElementToMarker
.Parameters
elementCreator : UIElement | function
A view UI element or a function returning the view element that will be inserted.
Returns
function
Insert element event converter.
-
remove() → function
module:engine/conversion/downcasthelpers~remove
Function factory that creates a default downcast converter for node remove changes.
modelDispatcher.on( 'remove', remove() );
Returns
function
Remove event converter.
-
wrap( elementCreator ) → function
module:engine/conversion/downcasthelpers~wrap
protected
Function factory that creates a converter which converts the set/change/remove attribute changes from the model to the view. It can also be used to convert selection attributes. In that case, an empty attribute element will be created and the selection will be put inside it.
Attributes from the model are converted to a view element that will be wrapping these view nodes that are bound to model elements having the given attribute. This is useful for attributes like
bold
that may be set on text nodes in the model but are represented as an element in the view:[paragraph] MODEL ====> VIEW <p> |- a {bold: true} |- <b> |- b {bold: true} | |- ab |- c |- c
Passed
Function
will be provided with the attribute value and then all the parameters of theattribute
event. It is expected that the function returns anElement
. The result of the function will be the wrapping element. When the providedFunction
does not return any element, no conversion will take place.The converter automatically consumes the corresponding value from the consumables list and stops the event (see
DowncastDispatcher
).modelDispatcher.on( 'attribute:bold', wrap( ( modelAttributeValue, { writer } ) => { return writer.createAttributeElement( 'strong' ); } );
Parameters
elementCreator : function
Function returning a view element that will be used for wrapping.
Returns
function
Set/change attribute converter.
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.