Class

SelectionObserver (engine/view/observer)

@ckeditor/ckeditor5-engine/src/view/observer/selectionobserver

class

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

    readonly inherited

    A reference to the Document object.

  • domConverter : DomConverter

    readonly

    Reference to the domConverter.

  • isEnabled : Boolean

    readonly inherited

    The state of the observer. If it is disabled, no events will be fired.

  • selection : DocumentSelection

    readonly

    Reference to the view DocumentSelection object used to compare new selection with it.

  • view : View

    readonly inherited

    An instance of the view controller.

  • _clearInfiniteLoopInterval : Number

    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 fire selectionChange but warn about possible infinite selection loop.

  • _documents : WeakSet.<Document>

    private

    A set of documents which have added selectionchange listener to avoid adding a listener twice to the same document.

  • _loopbackCounter : Number

    private

    Private property to check if the code does not enter infinite loop.

Methods

  • checkShouldIgnoreEventFromTarget( domTarget ) → Boolean

    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 by DowncastWriter#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()

    inherited

    Disables and destroys the observer, among others removes event listeners created by the observer.

  • disable()

    inherited

    Disables the observer. This method is called before rendering to prevent firing events during rendering.

    Related:

  • 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 )

    inherited

    Starts observing the given root element.

    Parameters

    domElement : HTMLElement
    name : String

    The name of the root element.

  • _clearInfiniteLoop()

    protected

    Clears SelectionObserver internal properties connected with preventing infinite loop.

  • _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 )

    private

    Fires debounced event selectionChangeDone. It uses lodash#debounce method to delay function call.

    Parameters

    data : Object

    Selection change data.

  • _handleSelectionChange( domEvent, domDocument )

    private

    Selection change listener. Check if a selection changes and fires event-selectionChange event on every change and event-selectionChangeDone when a selection stop changing.

    Parameters

    domEvent : Event

    DOM event.

    domDocument : Document

    DOM document.