Sign up (with export icon)

FullscreenAbstractEditorHandler

Api-class iconclass

The abstract editor type handler.

This class defines some actions and behaviors that are applied when fullscreen mode is toggled, and which are common regardless of the editor type. Then, specific classes like ClassicEditorHandler or DecoupledEditorHandler extend this class with actions specific for these editor types.

Extend this class to provide fullscreen mode handling for unsupported editor types, or if you wish to heavily customize the default behavior.

The only method that is necessary to provide when extending this class is defaultOnEnter. However, make sure to familiarize yourself with the below full list of actions taken by FullscreenAbstractEditorHandler to understand what is covered by default, and what should be provided by you.

When entering the fullscreen mode, the enable method is called. It creates the properly styled container and handles the editor features that need it, in the following order:

  1. Saves the scroll positions of all ancestors of the editable element to restore them after leaving the fullscreen mode.
  2. Executes the defaultOnEnter method to move the proper editor UI elements to the fullscreen mode. If you extend the abstract handler, you should override this method to move the elements that are specific to your editor type, like: editable, toolbar, menu bar. Use moveToFullscreen method for this purpose to ensure they are automatically cleaned up after leaving the fullscreen mode.
  3. Adds proper classes to the <body> and <html> elements to block page scrolling, adjust z-index etc.

Steps 4-12 are only executed if the corresponding features are used.

  1. If presence list is used, moves it to the fullscreen mode container.
  2. If document outline is used, moves it to the fullscreen mode.
  3. If pagination is used, adjusts it's configuration for the changed view.
  4. If annotations are used, moves them to the fullscreen mode.
  5. If revision history is used, overrides the callbacks to show the revision viewer in the fullscreen mode.
  6. If AI Tabs is used, moves it to the fullscreen mode.
  7. If source editing and document outline are both used, registers a callback hiding the document outline header in source editing mode.
  8. Changes the position of some dialogs to utilize the empty space on the right side of the editable element.
  9. If custom container is used, hides all other elements in it to ensure they don't create an empty unscrollable space.

Then finally:

  1. Adjusts the visibility of the left and right sidebars based on the available space.
  2. Sets up a resize observer to adjust the visibility of the left and right sidebars dynamically.
  3. Executes the configured config.fullscreen.onEnterCallback function. By default, it returns the fullscreen mode container element so it can be further customized.

When leaving the fullscreen mode, the disable method is called. It does the following:

  1. Execute the configured config.fullscreen.onLeaveCallback function.
  2. Remove the classes added to the <body> and <html> elements.
  3. If document outline is used, restore its default container.
  4. If annotations are used, restore their original state (UI, filters etc).
  5. If revision history is used, restore the original callbacks.
  6. If AI Tabs is used, restore it to the original state.
  7. If source editing and document outline are both used, restore the document outline header.
  8. Restore all moved elements to their original place.
  9. Destroy the fullscreen mode container.
  10. If the editor has a toolbar, switch its behavior to the one configured in the shouldGroupWhenFull property.
  11. Restore the scroll positions of all ancestors of the editable element.
  12. If pagination is used, restore its default configuration.
  13. Restore default dialogs positions.

This class is exported to allow for custom extensions.

Properties

  • Chevron-right icon

    updateDialogPositionCallback : ( _evt: EventInfo, _name: string, isOpen: boolean ) => void

    Stores a bound reference to the _updateDialogPosition method, allowing it to be attached and detached from change event.

  • Chevron-right icon

    _closeRevisionViewerCallback : null | ( viewerEditor: any ) => Promise<unknown>
    protected

    A callback that closes the revision viewer, stored to restore the original one after exiting the fullscreen mode.

  • Chevron-right icon

    _editor : object
    protected

    An editor instance. It should be set by the particular editor type handler.

  • Chevron-right icon

    _showRevisionViewerCallback : null | ( config: EditorConfig ) => Promise<any>
    protected

    A callback that shows the revision viewer, stored to restore the original one after exiting the fullscreen mode.

  • Chevron-right icon

    _aiTabsData : null | object
    Lock iconprivate

    A map of AI Tabs data that were set before entering the fullscreen mode.

  • Chevron-right icon

    _annotationsUIsData : null | Map<string, Record<string, any>>
    Lock iconprivate

    Data of the annotations UIs that were active before entering the fullscreen mode.

  • Chevron-right icon

    _collapseLeftSidebarButton : null | ButtonView
    Lock iconprivate

    The button that toggles the visibility of the left sidebar.

  • Chevron-right icon

    _document : Document
    Lock iconprivate

    The document object in which the editor is located.

  • Chevron-right icon

    _forceShowLeftSidebar : boolean
    Lock iconprivate

    Temporary flag used to ignore the first automatic layout adjustment logic when user collapses the left sidebar with a button. It is then immediately set back to false.

  • Chevron-right icon

    _hasLeftCollapseButton : boolean
    Lock iconprivate

    Whether the left sidebar collapse button is created.

  • Chevron-right icon

    _hiddenElements : Map<HTMLElement, string>
    Lock iconprivate

    A map of elements that were hidden when entering the fullscreen mode. It is used to restore their previous visibility when leaving the fullscreen mode and avoid showing elements that were hidden before entering the fullscreen mode.

  • Chevron-right icon

    _keepLeftSidebarHidden : boolean
    Lock iconprivate

    Whether the left sidebar should be kept hidden even if there is enough space for it. It's set to true when user collapses the left sidebar with a button. Behavior is reset when exiting the fullscreen mode.

  • Chevron-right icon

    _paginationBodyCollection : null | BodyCollection
    Lock iconprivate

    The pagination body collection that is used in the fullscreen mode. If we don't move pagination lines to the fullscreen container, they won't be visible.

  • Chevron-right icon

    _placeholderMap : Map<string, object>
    Lock iconprivate

    Maps placeholder names to placeholder elements and moved elements.

  • Chevron-right icon

    _resizeObserver : null | ResizeObserver
    Lock iconprivate

    The resize observer that is used to adjust the visibility of the left and right sidebars dynamically.

  • Chevron-right icon

    _savedAncestorsScrollPositions : Map<HTMLElement, object>
    Lock iconprivate

    A map matching the ancestors of the editable element with their scroll positions before entering fullscreen mode.

  • Chevron-right icon

    _sidebarsWidths : object
    Lock iconprivate

    The width of the expanded left and right sidebars in the fullscreen mode. Necessary for logic checking if they should be visible.

  • Chevron-right icon

    _wrapper : null | HTMLElement
    Lock iconprivate

    The wrapper element that holds the fullscreen mode layout.

Methods

  • Chevron-right icon

    constructor( editor )

  • Chevron-right icon

    defaultOnEnter() → HTMLElement

    A function that moves the editor UI elements to the fullscreen mode. It should be set by the particular editor type handler.

    Returns the fullscreen mode container element so it can be further customized via fullscreen.onEnterCallback configuration property.

    Returns

    HTMLElement
  • Chevron-right icon

    destroy() → void

  • Chevron-right icon

    disable() → void

    Disables the fullscreen mode by restoring all moved elements and destroying the fullscreen container.

    Returns

    void
  • Chevron-right icon

    enable() → void

    Enables the fullscreen mode. It executes the editor-specific enable handler and then the configured callback.

    Returns

    void
  • Chevron-right icon

    getWrapper() → HTMLElement

    Returns the fullscreen mode container element.

    Returns

    HTMLElement
  • Chevron-right icon

    moveToFullscreen( elementToMove, placeholderName ) → void

    Moves the given element to the fullscreen mode container, leaving a placeholder in its place.

    Parameters

    elementToMove : HTMLElement
    placeholderName : string

    Returns

    void
  • Chevron-right icon

    restoreMovedElementLocation( placeholderName ) → void

    Returns a single moved element to its original place.

    Parameters

    placeholderName : string

    Returns

    void
  • Chevron-right icon

    _adjustVisibleElements() → void
    Lock iconprivate

    Adjusts the visibility of the left and right sidebars based on the available space.

    Returns

    void
  • Chevron-right icon

    _destroyContainer() → void
    Lock iconprivate

    Destroys the fullscreen mode container.

    Returns

    void
  • Chevron-right icon

    _generateCollapseButton() → void
    Lock iconprivate

  • Chevron-right icon

    _generateDocumentOutlineContainer() → void
    Lock iconprivate

    Checks if the DocumentOutlineUI plugin is available and moves its elements to fullscreen mode.

    Returns

    void
  • Chevron-right icon

    _generatePresenceListContainer() → void
    Lock iconprivate

    Checks if the PresenceListUI plugin is available and moves its elements to fullscreen mode.

    Returns

    void
  • Chevron-right icon

    _handleAISidebarTransitions( evt ) → void
    Lock iconprivate

    Checks the transition event to see if it's changing the width of the AI tabs and if so, adjusts the visible fullscreen mode elements.

    Parameters

    evt : TransitionEvent

    Returns

    void
  • Chevron-right icon

    _handleAITabsTransfer() → void
    Lock iconprivate

    Stores the current state of the AI Tabs and moves it to the fullscreen mode.

    Returns

    void
  • Chevron-right icon

    _hideLeftSidebar() → void
    Lock iconprivate

    Hides the left sidebar. Works only if there is anything to hide.

    Returns

    void
  • Chevron-right icon

    _hideRightSidebar() → void
    Lock iconprivate

    Hides the right sidebar. Works only if there is anything to hide.

    Returns

    void
  • Chevron-right icon

    _overrideAnnotationsUIs() → void
    Lock iconprivate

    Stores the current state of the annotations UIs to restore it when leaving fullscreen mode and switches the UI to the wide sidebar.

    Returns

    void
  • Chevron-right icon

    _overrideRevisionHistoryCallbacks() → void
    Lock iconprivate

    Modifies the revision history viewer callbacks to display the viewer in the fullscreen mode.

    Returns

    void
  • Chevron-right icon

    Adds an event listener when the dialog opens to adjust its position in fullscreen mode, utilizing the empty space on the right side of the editable element.

    Returns

    void
  • Chevron-right icon

    _restoreAITabs() → void
    Lock iconprivate

    Restores the state of the AI Tabs to the original values.

    Returns

    void
  • Chevron-right icon

    _restoreAnnotationsUIs() → void
    Lock iconprivate

    Restores the saved state of the annotations UIs.

    Returns

    void
  • Chevron-right icon

    _restoreDocumentOutlineDefaultContainer() → void
    Lock iconprivate

    Restores the default value of documentOutlineContainer, which is modified in fullscreen mode.

    Returns

    void
  • Chevron-right icon

    _restoreRevisionHistoryCallbacks() → void
    Lock iconprivate

    Resets the revision history viewer callbacks to their original values.

    Returns

    void
  • Chevron-right icon

    _saveAncestorsScrollPositions( domElement ) → void
    Lock iconprivate

    Saves the scroll positions of all ancestors of the given element.

    Parameters

    domElement : HTMLElement

    Returns

    void
  • Chevron-right icon

    _setNewDialogPosition() → void
    Lock iconprivate

    Adjusts the dialog position to utilize the empty space on the right side of the editable. The new dialog position should be on the right side of the fullscreen view with a 30px margin. Only dialogs with the position set to "editor-top-side" should have their position changed.

    Returns

    void
  • Chevron-right icon

    _setupResizeObserver() → void
    Lock iconprivate

    Sets up a resize observer to adjust the visibility of the left and right sidebars dynamically.

    Returns

    void
  • Chevron-right icon

    _showLeftSidebar() → void
    Lock iconprivate

    Shows the left sidebar. Works only if there is anything to show.

    Returns

    void
  • Chevron-right icon

    _showRightSidebar() → void
    Lock iconprivate

    Shows the right sidebar. Works only if there is anything to show.

    Returns

    void
  • Chevron-right icon

    _sourceEditingCallback( _evt, _name, value ) → void
    Lock iconprivate

    A callback that hides the document outline header when the source editing mode is enabled. Document outline element itself is hidden by source editing plugin.

    Parameters

    _evt : EventInfo
    _name : string
    value : boolean

    Returns

    void
  • Chevron-right icon

    _switchAnnotationsUI( uiName ) → void
    Lock iconprivate

    Switches the annotations UI to the requested one.

    Parameters

    uiName : string

    Returns

    void
  • Chevron-right icon

    Removes an event listener that adjusts the dialog's position in fullscreen mode.

    Returns

    void
  • Chevron-right icon

    _updateDialogPosition( _evt, _name, isOpen ) → void
    Lock iconprivate

    If dialog is open, adjust its positioning.

    Parameters

    _evt : EventInfo
    _name : string
    isOpen : boolean

    Returns

    void