devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
55 lines (53 loc) • 1.82 kB
JavaScript
/**
* DevExtreme (cjs/__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/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.resizeObserverSingleton = void 0;
var _common = require("../../core/utils/common");
var _m_window = _interopRequireDefault(require("./utils/m_window"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const window = _m_window.default.getWindow();
const ResizeObserverMock = {
observe: _common.noop,
unobserve: _common.noop,
disconnect: _common.noop
};
class ResizeObserverSingleton {
constructor() {
if (!_m_window.default.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 = exports.resizeObserverSingleton = new ResizeObserverSingleton;