Class

ResizeObserverPolyfill (utils/dom)

@ckeditor/ckeditor5-utils/src/dom/resizeobserver

class private

A polyfill class for the native ResizeObserver.

Filtering

Properties

  • protected readonly

    _callback : function

    A function called when any observed element was resized.

  • protected readonly

    _elements : Set

    DOM elements currently observed by the observer instance.

  • protected readonly

    _periodicCheckTimeout : Map.<HTMLElement, Rect>

    An UID of the current timeout upon which the observed elements rects will be compared to the previous rects from the past.

  • protected readonly

    _previousRects : Map.<HTMLElement, Rect>

    Cached DOM elements bounding rects to compare to upon the next check.

Methods

  • constructor( callback )

    Creates an instance of the ResizeObserverPolyfill class.

    It synchronously reacts to resize of the window to check if observed elements' geometry changed.

    Additionally, the polyfilled observer uses a timeout to check if observed elements' geometry has changed in some other way (dynamic layouts, scrollbars showing up, etc.), so its response can also be asynchronous.

    Parameters

    callback : function

    A function called when any observed element was resized. Refer to the native ResizeObserver API to learn more.

  • observe( element )

    Starts observing a DOM element.

    Learn more in the native method documentation.

    Parameters

    element : HTMLElement
  • unobserve( element )

    Stops observing a DOM element.

    Learn more in the native method documentation.

    Parameters

    element : HTMLElement
  • protected

    _checkElementRectsAndExecuteCallback()

    Checks if the geometry of any of the element has changed. If so, executes the resize callback with element geometry data.

  • protected

    _hasRectChanged( element ) → Boolean

    Compares the DOM element geometry to the cached geometry from the past. Returns true if geometry has changed or the element is checked for the first time.

    Parameters

    element : HTMLElement

    Returns

    Boolean
  • protected

    _startPeriodicCheck()

    When called, the observer calls the resize callback for all observed elements but also starts checking periodically for changes in the elements' geometry. If some are detected, resize callback is called for relevant elements that were resized.

  • protected

    _stopPeriodicCheck()

    Stops checking for changes in all observed elements geometry.