12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import {createRectInit, getContentRect} from './utils/geometry.js';
- /**
- * Class that is responsible for computations of the content rectangle of
- * provided DOM element and for keeping track of it's changes.
- */
- export default class ResizeObservation {
- /**
- * Reference to the observed element.
- *
- * @type {Element}
- */
- target;
- /**
- * Broadcasted width of content rectangle.
- *
- * @type {number}
- */
- broadcastWidth = 0;
- /**
- * Broadcasted height of content rectangle.
- *
- * @type {number}
- */
- broadcastHeight = 0;
- /**
- * Reference to the last observed content rectangle.
- *
- * @private {DOMRectInit}
- */
- contentRect_ = createRectInit(0, 0, 0, 0);
- /**
- * Creates an instance of ResizeObservation.
- *
- * @param {Element} target - Element to be observed.
- */
- constructor(target) {
- this.target = target;
- }
- /**
- * Updates content rectangle and tells whether it's width or height properties
- * have changed since the last broadcast.
- *
- * @returns {boolean}
- */
- isActive() {
- const rect = getContentRect(this.target);
- this.contentRect_ = rect;
- return (
- rect.width !== this.broadcastWidth ||
- rect.height !== this.broadcastHeight
- );
- }
- /**
- * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
- * from the corresponding properties of the last observed content rectangle.
- *
- * @returns {DOMRectInit} Last observed content rectangle.
- */
- broadcastRect() {
- const rect = this.contentRect_;
- this.broadcastWidth = rect.width;
- this.broadcastHeight = rect.height;
- return rect;
- }
- }
|