@nteract/monaco-editor
Version:
A React component for the monaco editor, tailored for nteract
50 lines • 1.8 kB
JavaScript
;
/**
* This module is responsible for monitoring elements and call the resizable components.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.unobserve = exports.observe = void 0;
const windowResizeEventObserver_1 = __importDefault(require("./polyfill/windowResizeEventObserver"));
/**
* ResizeObserver that monitors the size of the element and calls the resizable component.
*/
const monitoredResizables = new WeakMap();
/**
* ResizeObserver that monitors the size of the element and calls the resizable component.
*/
let resizeObserver;
function getResizeObserverSingleton() {
if (!resizeObserver) {
const ResizeObserverImpl = window.ResizeObserver || windowResizeEventObserver_1.default;
resizeObserver = new ResizeObserverImpl((entries) => {
for (const entry of entries) {
if (monitoredResizables.has(entry.target)) {
const editor = monitoredResizables.get(entry.target);
editor === null || editor === void 0 ? void 0 : editor.onResize();
}
}
});
}
return resizeObserver;
}
/**
* Observe the element for resize events.
*/
function observe(resizable, element) {
monitoredResizables.set(element, resizable);
getResizeObserverSingleton().observe(element);
return () => unobserve(element);
}
exports.observe = observe;
/**
* Unobserve the element for resize events.
*/
function unobserve(element) {
getResizeObserverSingleton().unobserve(element);
monitoredResizables.delete(element);
}
exports.unobserve = unobserve;
//# sourceMappingURL=resizeObserver.js.map