FullscreenAbstractEditorHandler
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:
- Saves the scroll positions of all ancestors of the editable element to restore them after leaving the fullscreen mode.
- 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. UsemoveToFullscreen
method for this purpose to ensure they are automatically cleaned up after leaving the fullscreen mode. - Adds proper classes to the
<body>
and<html>
elements to block page scrolling, adjustz-index
etc. - Changes the position of some dialogs to utilize the empty space on the right side of the editable element.
Steps 5-11 are only executed if the corresponding features are used.
- If presence list is used, moves it to the fullscreen mode container.
- If document outline is used, moves it to the fullscreen mode.
- If pagination is used, adjusts it's configuration for the changed view.
- If annotations are used, moves them to the fullscreen mode.
- If revision history is used, overrides the callbacks to show the revision viewer in the fullscreen mode.
- If source editing and document outline are both used, hides the document outline header.
- If custom container is used, hides all other elements in it to ensure they don't create an empty unscrollable space.
Then finally:
- 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:
- Execute the configured
config.fullscreen.onLeaveCallback
function. - Remove the classes added to the
<body>
and<html>
elements. - If document outline is used, restore its default container.
- If annotations are used, restore their original state (UI, filters etc).
- If revision history is used, restore the original callbacks.
- If source editing and document outline are both used, restore the document outline header.
- Restore all moved elements to their original place.
- Destroy the fullscreen mode container.
- If the editor has a toolbar, switch its behavior to the one configured in the
shouldGroupWhenFull
property. - Restore the scroll positions of all ancestors of the editable element.
- If pagination is used, restore its default configuration.
- Restore default dialogs positions.
This class is exported to allow for custom extensions.
Properties
-
updateDialogPositionCallback : ( _evt: EventInfo, _name: string, isOpen: boolean ) => void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#updateDialogPositionCallback
Stores a bound reference to the _updateDialogPosition method, allowing it to be attached and detached from change event.
-
_closeRevisionViewerCallback : null | ( viewerEditor: any ) => Promise<unknown>
protectedmodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_closeRevisionViewerCallback
A callback that closes the revision viewer, stored to restore the original one after exiting the fullscreen mode.
-
_editor : object
protectedmodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_editor
An editor instance. It should be set by the particular editor type handler.
-
_showRevisionViewerCallback : null | ( config: EditorConfig ) => Promise<any>
protectedmodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_showRevisionViewerCallback
A callback that shows the revision viewer, stored to restore the original one after exiting the fullscreen mode.
-
_annotationsUIsData : null | Map<string, Record<string, any>>
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_annotationsUIsData
Data of the annotations UIs that were active before entering the fullscreen mode.
-
_document : Document
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_document
The document object in which the editor is located.
-
_hiddenElements : Map<HTMLElement, string>
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_hiddenElements
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.
-
_paginationBodyCollection : null | BodyCollection
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_paginationBodyCollection
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.
-
_placeholderMap : Map<string, object>
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_placeholderMap
Maps placeholder names to placeholder elements and moved elements.
-
_savedAncestorsScrollPositions : Map<HTMLElement, object>
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_savedAncestorsScrollPositions
A map matching the ancestors of the editable element with their scroll positions before entering fullscreen mode.
-
_wrapper : null | HTMLElement
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_wrapper
The wrapper element that holds the fullscreen mode layout.
Methods
-
constructor( editor )
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#constructor
-
defaultOnEnter() → HTMLElement
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#defaultOnEnter
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
-
destroy() → void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#destroy
-
disable() → void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#disable
Disables the fullscreen mode by restoring all moved elements and destroying the fullscreen container.
Returns
void
-
enable() → void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#enable
Enables the fullscreen mode. It executes the editor-specific enable handler and then the configured callback.
Returns
void
-
getWrapper() → HTMLElement
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#getWrapper
-
moveToFullscreen( elementToMove, placeholderName ) → void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#moveToFullscreen
Moves the given element to the fullscreen mode container, leaving a placeholder in its place.
Parameters
elementToMove : HTMLElement
placeholderName : string
Returns
void
-
restoreMovedElementLocation( placeholderName ) → void
module:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#restoreMovedElementLocation
Returns a single moved element to its original place.
Parameters
placeholderName : string
Returns
void
-
_destroyContainer() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_destroyContainer
-
_generateDocumentOutlineContainer() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_generateDocumentOutlineContainer
Checks if the DocumentOutlineUI plugin is available and moves its elements to fullscreen mode.
Returns
void
-
_generatePresenceListContainer() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_generatePresenceListContainer
Checks if the PresenceListUI plugin is available and moves its elements to fullscreen mode.
Returns
void
-
_overrideAnnotationsUIs() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_overrideAnnotationsUIs
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
-
_overrideRevisionHistoryCallbacks() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_overrideRevisionHistoryCallbacks
Modifies the revision history viewer callbacks to display the viewer in the fullscreen mode.
Returns
void
-
_registerFullscreenDialogPositionAdjustments() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_registerFullscreenDialogPositionAdjustments
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
-
_restoreAnnotationsUIs() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_restoreAnnotationsUIs
-
_restoreDocumentOutlineDefaultContainer() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_restoreDocumentOutlineDefaultContainer
Restores the default value of documentOutlineContainer, which is modified in fullscreen mode.
Returns
void
-
_restoreRevisionHistoryCallbacks() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_restoreRevisionHistoryCallbacks
Resets the revision history viewer callbacks to their original values.
Returns
void
-
_saveAncestorsScrollPositions( domElement ) → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_saveAncestorsScrollPositions
Saves the scroll positions of all ancestors of the given element.
Parameters
domElement : HTMLElement
Returns
void
-
_setNewDialogPosition() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_setNewDialogPosition
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
-
_sourceEditingCallback( _evt, _name, value ) → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_sourceEditingCallback
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
-
_unregisterFullscreenDialogPositionAdjustments() → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_unregisterFullscreenDialogPositionAdjustments
Removes an event listener that adjusts the dialog's position in fullscreen mode.
Returns
void
-
_updateDialogPosition( _evt, _name, isOpen ) → void
privatemodule:fullscreen/handlers/abstracteditorhandler~FullscreenAbstractEditorHandler#_updateDialogPosition
If dialog is open, adjust its positioning.
Parameters
_evt : EventInfo
_name : string
isOpen : boolean
Returns
void