SelectionObserver (engine/view/observer)
@ckeditor/ckeditor5-engine/src/view/observer/selectionobserver
Selection observer class observes selection changes in the document. If a selection changes on the document this
observer checks if the DOM selection is different from the view selection.
The selection observer fires event-selectionChange
event only if
a selection change was the only change in the document and the DOM selection is different from the view selection.
This observer also manages the isSelecting
property of the view document.
Note that this observer is attached by the View
and is available by default.
Filtering
Properties
-
document : Document
module:engine/view/observer/selectionobserver~SelectionObserver#document
readonly inherited
A reference to the
Document
object. -
domConverter : DomConverter
module:engine/view/observer/selectionobserver~SelectionObserver#domConverter
readonly
Reference to the
domConverter
. -
isEnabled : Boolean
module:engine/view/observer/selectionobserver~SelectionObserver#isEnabled
readonly inherited
The state of the observer. If it is disabled, no events will be fired.
-
selection : DocumentSelection
module:engine/view/observer/selectionobserver~SelectionObserver#selection
readonly
Reference to the view
DocumentSelection
object used to compare new selection with it. -
An instance of the view controller.
-
_clearInfiniteLoopInterval : Number
module:engine/view/observer/selectionobserver~SelectionObserver#_clearInfiniteLoopInterval
private
When called, starts clearing the
_loopbackCounter
counter in time intervals. When the number of selection changes exceeds a certain limit within the interval of time, the observer will not fireselectionChange
but warn about possible infinite selection loop. -
_documents : WeakSet.<Document>
module:engine/view/observer/selectionobserver~SelectionObserver#_documents
private
A set of documents which have added
selectionchange
listener to avoid adding a listener twice to the same document. -
_loopbackCounter : Number
module:engine/view/observer/selectionobserver~SelectionObserver#_loopbackCounter
private
Private property to check if the code does not enter infinite loop.
Methods
-
checkShouldIgnoreEventFromTarget( domTarget ) → Boolean
module:engine/view/observer/selectionobserver~SelectionObserver#checkShouldIgnoreEventFromTarget
inherited
Checks whether a given DOM event should be ignored (should not be turned into a synthetic view document event).
Currently, an event will be ignored only if its target or any of its ancestors has the
data-cke-ignore-events
attribute. This attribute can be used inside the structures generated byDowncastWriter#createUIElement()
to ignore events fired within a UI that should be excluded from CKEditor 5's realms.Parameters
domTarget : Node
The DOM event target to check (usually an element, sometimes a text node and potentially sometimes a document, too).
Returns
Boolean
Whether this event should be ignored by the observer.
-
destroy()
module:engine/view/observer/selectionobserver~SelectionObserver#destroy
inherited
Disables and destroys the observer, among others removes event listeners created by the observer.
-
disable()
module:engine/view/observer/selectionobserver~SelectionObserver#disable
inherited
Disables the observer. This method is called before rendering to prevent firing events during rendering.
Related:
-
enable()
module:engine/view/observer/selectionobserver~SelectionObserver#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.
Related:
-
observe( domElement, name )
module:engine/view/observer/selectionobserver~SelectionObserver#observe
inherited
Starts observing the given root element.
Parameters
domElement : HTMLElement
name : String
The name of the root element.
-
_clearInfiniteLoop()
module:engine/view/observer/selectionobserver~SelectionObserver#_clearInfiniteLoop
protected
Clears
SelectionObserver
internal properties connected with preventing infinite loop. -
_documentIsSelectingInactivityTimeoutDebounced()
module:engine/view/observer/selectionobserver~SelectionObserver#_documentIsSelectingInactivityTimeoutDebounced
private
Unlocks the
isSelecting
state of the view document in case the selection observer did not record this fact correctly (for whatever reason). It is a safeguard (paranoid check), that returns document to the normal state after a certain period of time (debounced, postponed by each selectionchange event). -
_fireSelectionChangeDoneDebounced( data )
module:engine/view/observer/selectionobserver~SelectionObserver#_fireSelectionChangeDoneDebounced
private
Fires debounced event
selectionChangeDone
. It useslodash#debounce
method to delay function call.Parameters
data : Object
Selection change data.
-
_handleSelectionChange( domEvent, domDocument )
module:engine/view/observer/selectionobserver~SelectionObserver#_handleSelectionChange
private
Selection change listener. Check if a selection changes and fires
event-selectionChange
event on every change andevent-selectionChangeDone
when a selection stop changing.Parameters
domEvent : Event
DOM event.
domDocument : Document
DOM document.
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.