@figliolia/size-observer
Version:
Resize Observers simplified
27 lines (26 loc) • 926 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSizeObserver = void 0;
const react_1 = require("react");
const SizeObserver_1 = require("./SizeObserver");
const useSizeObserver = (options) => {
const node = (0, react_1.useRef)(null);
const stableOptions = (0, react_1.useRef)(options);
stableOptions.current = options;
const observer = (0, react_1.useRef)(null);
if (observer.current) {
observer.current.setOptions(stableOptions.current);
}
(0, react_1.useLayoutEffect)(() => {
if (!node.current) {
return;
}
observer.current = new SizeObserver_1.SizeObserver(node.current, stableOptions.current);
return () => {
var _a;
(_a = observer.current) === null || _a === void 0 ? void 0 : _a.destroy();
};
}, []);
return node;
};
exports.useSizeObserver = useSizeObserver;
;