ivt
Version:
Ivt Components Library
52 lines (49 loc) • 1.66 kB
JavaScript
import * as React from 'react';
import { u as useLayoutEffect2 } from './index-DKOlG3mh.mjs';
// packages/react/use-size/src/use-size.tsx
function useSize(element) {
const [size, setSize] = React.useState(void 0);
useLayoutEffect2(()=>{
if (element) {
setSize({
width: element.offsetWidth,
height: element.offsetHeight
});
const resizeObserver = new ResizeObserver((entries)=>{
if (!Array.isArray(entries)) {
return;
}
if (!entries.length) {
return;
}
const entry = entries[0];
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;
}
setSize({
width,
height
});
});
resizeObserver.observe(element, {
box: "border-box"
});
return ()=>resizeObserver.unobserve(element);
} else {
setSize(void 0);
}
}, [
element
]);
return size;
}
export { useSize as u };
//# sourceMappingURL=index-DmY774z-.mjs.map