devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
49 lines (48 loc) • 1.53 kB
JavaScript
/**
* DevExtreme (esm/__internal/core/m_resize_observer.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
noop
} from "../../core/utils/common";
import windowUtils from "./utils/m_window";
const window = windowUtils.getWindow();
const ResizeObserverMock = {
observe: noop,
unobserve: noop,
disconnect: noop
};
class ResizeObserverSingleton {
constructor() {
if (!windowUtils.hasWindow() || !window.ResizeObserver) {
return ResizeObserverMock
}
this._callbacksMap = new Map;
this._observer = new window.ResizeObserver((entries => {
entries.forEach((entry => {
var _this$_callbacksMap$g;
null === (_this$_callbacksMap$g = this._callbacksMap.get(entry.target)) || void 0 === _this$_callbacksMap$g || _this$_callbacksMap$g(entry)
}))
}))
}
observe(element, callback) {
this._callbacksMap.set(element, callback);
this._observer.observe(element)
}
unobserve(element) {
this._callbacksMap.delete(element);
this._observer.unobserve(element)
}
disconnect() {
this._callbacksMap.clear();
this._observer.disconnect()
}
}
const resizeObserverSingleton = new ResizeObserverSingleton;
export {
resizeObserverSingleton
};