engine/model/utils/modifyselection
@ckeditor/ckeditor5-engine/src/model/utils/modifyselection
Filtering
Functions
-
modifySelection( model, selection, [ options ] = { [options.direction], [options.unit], [options.treatEmojiAsSingleUnit] } )
module:engine/model/utils/modifyselection~modifySelection
Modifies the selection. Currently, the supported modifications are:
- Extending. The selection focus is moved in the specified
options.direction
with a step specified inoptions.unit
. Possible values forunit
are: 'character'
(default) - moves selection by one user-perceived character. In most cases this means moving by one character inString
sense. However, unicode also defines "combing marks". These are special symbols, that combines with a symbol before it ("base character") to create one user-perceived character. For example,q̣̇
is a normal letterq
with two "combining marks": upper dot (Ux0307
) and lower dot (Ux0323
). For most actions, i.e. extending selection by one position, it is correct to include both "base character" and all of it's "combining marks". That is why'character'
value is most natural and common method of modifying selection.'codePoint'
- moves selection by one unicode code point. In contrary to,'character'
unit, this will insert selection between "base character" and "combining mark", because "combining marks" have their own unicode code points. However, for technical reasons, unicode code points with values aboveUxFFFF
are represented in nativeString
by two characters, called "surrogate pairs". Halves of "surrogate pairs" have a meaning only when placed next to each other. For example𨭎
is represented inString
by\uD862\uDF4E
. Both\uD862
and\uDF4E
do not have any meaning outside the pair (are rendered as ? when alone). Position between them would be incorrect. In this case, selection extension will include whole "surrogate pair".'word'
- moves selection by a whole word.
Note: if you extend a forward selection in a backward direction you will in fact shrink it.
Note: Use
modifySelection
instead of this function. This function is only exposed to be reusable in algorithms which change themodifySelection
method's behavior.Parameters
model : Model
The model in context of which the selection modification should be performed.
selection : Selection | DocumentSelection
The selection to modify.
[ options ] : Object
-
Properties
[ options.direction ] : 'forward' | 'backward'
The direction in which the selection should be modified.
Defaults to
'forward'
[ options.unit ] : 'character' | 'codePoint' | 'word'
The unit by which selection should be modified.
Defaults to
'character'
[ options.treatEmojiAsSingleUnit ] : Boolean
Whether multi-characer emoji sequences should be handled as single unit.
Defaults to
false
- Extending. The selection focus is moved in the specified
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.