Class

SelectionObserver (engine/view/observer)

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

class

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

  • document : Document

    readonly inherited

    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 the event-selectionChange event is fired.

  • selection : DocumentSelection

    readonly

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

  • view : View

    readonly inherited

    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.

    Parameters

    view : View
  • 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.

  • _fireSelectionChangeDoneDebounced( data )

    private

    Fires debounced event selectionChangeDone. It uses lodash#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 and event-selectionChangeDone when selection stop changing.

    Parameters

    domDocument : Document

    DOM document.