@revolist/revogrid
Version:
Virtual reactive data grid spreadsheet component - RevoGrid.
56 lines (55 loc) • 1.61 kB
JavaScript
/*!
* Built by Revolist OU ❤️
*/
import throttle from "lodash/throttle";
export default class GridResizeService {
constructor(el, resize, elements) {
this.resize = resize;
this.resizeObserver = null;
this.previousSize = {
width: 0,
height: 0,
};
this.apply = throttle((e) => {
var _a;
const entry = {
width: e.width,
height: e.height,
};
(_a = this.resize) === null || _a === void 0 ? void 0 : _a.call(this, entry, this.previousSize);
this.previousSize = entry;
}, 40, {
leading: false,
trailing: true,
});
const extras = [];
elements.forEach((element) => {
if (element) {
extras.push(element);
}
});
this.init(el, extras);
}
init(el, extras = []) {
const observer = this.resizeObserver = new ResizeObserver((e) => {
if (e.length) {
if (e[0].target === el) {
this.apply(e[0].contentRect);
}
else {
this.apply(el.getBoundingClientRect());
}
}
});
observer.observe(el);
extras.forEach((extra) => {
observer.observe(extra);
});
}
destroy() {
var _a;
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
this.resizeObserver = null;
}
}
//# sourceMappingURL=viewport.resize.service.js.map