SelectionObserver (engine/view/observer)
@ckeditor/ckeditor5-engine/src/view/observer/selectionobserver
Selection observer class observes selection changes in the document. If selection changes on the document this
observer checks if there are any mutations and if DOM selection is different than the
view selection. Selection observer fires
event-selectionChange
event only if selection change was the only change in the document
and DOM selection is different then the view selection.
Note that this observer is attached by the View
and is available by default.
Filtering
Properties
-
Reference to the
Document
object. -
domConverter : DomConverter
readonly
Reference to the
domConverter
. -
isEnabled : Boolean
readonly inherited
State of the observer. If it is disabled events will not be fired.
-
mutationObserver : MutationObserver
readonly
Instance of the mutation observer. Selection observer calls
flush
to ensure that the mutations will be handled before theevent-selectionChange
event is fired. -
selection : DocumentSelection
readonly
Reference to the view
DocumentSelection
object used to compare new selection with it. -
Instance of the view controller.
-
_documents : WeakSet.<Document>
private
Set of documents which have added "selectionchange" listener to avoid adding listener twice to the same document.
-
_loopbackCounter : Number
private
Private property to check if the code does not enter infinite loop.
Methods
-
constructor( view )
inherited
Creates an instance of the observer.
-
destroy()
inherited
Disables and destroys the observer, among others removes event listeners created by the observer.
Overrides: Observer#destroy -
disable()
inherited
Disables the observer. This method is called before rendering to prevent firing events during rendering.
-
enable()
inherited
Enables the observer. This method is called when the observer is registered to the
View
and after rendering (all observers are disabled before rendering).A typical use case for disabling observers is that mutation observers need to be disabled for the rendering. However, a child class may not need to be disabled, so it can implement an empty method.
-
observe( domElement, name )
inherited
Starts observing the given root element.
Parameters
domElement : HTMLElement
name : String
The name of the root element.
Overrides: Observer#observe -
_clearInfiniteLoop()
protected
Clears
SelectionObserver
internal properties connected with preventing infinite loop. -
_fireSelectionChangeDoneDebounced( data )
private
Fires debounced event
selectionChangeDone
. It useslodash#debounce
method to delay function call.Parameters
data : Object
Selection change data.
-
_handleSelectionChange( domDocument )
private
Selection change listener. Flush mutations, check if selection changes and fires
event-selectionChange
event on every change andevent-selectionChangeDone
when selection stop changing.Parameters
domDocument : Document
DOM document.