34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
|
function trackElementSize(element, callback) {
|
|
if (!element) {
|
|
callback(void 0);
|
|
return;
|
|
}
|
|
callback({ width: element.offsetWidth, height: element.offsetHeight });
|
|
const win = element.ownerDocument.defaultView ?? window;
|
|
const observer = new win.ResizeObserver((entries) => {
|
|
if (!Array.isArray(entries) || !entries.length)
|
|
return;
|
|
const [entry] = entries;
|
|
let width;
|
|
let height;
|
|
if ("borderBoxSize" in entry) {
|
|
const borderSizeEntry = entry["borderBoxSize"];
|
|
const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
|
|
width = borderSize["inlineSize"];
|
|
height = borderSize["blockSize"];
|
|
} else {
|
|
width = element.offsetWidth;
|
|
height = element.offsetHeight;
|
|
}
|
|
callback({ width, height });
|
|
});
|
|
observer.observe(element, { box: "border-box" });
|
|
return () => observer.unobserve(element);
|
|
}
|
|
|
|
exports.trackElementSize = trackElementSize;
|