@itwin/itwinui-react
Version:
A react component library for iTwinUI
35 lines (34 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useContainerWidth', {
enumerable: true,
get: function () {
return useContainerWidth;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _useMergedRefs = require('./useMergedRefs.js');
const _useResizeObserver = require('./useResizeObserver.js');
const useContainerWidth = (watchResizes = true) => {
let [contentWidth, setContentWidth] = _react.useState(0);
let ref = _react.useCallback((element) => {
if (!element) return;
setContentWidth(element.getBoundingClientRect().width);
}, []);
let updateWidth = _react.useCallback(
({ width }) => setContentWidth(width),
[],
);
let [resizeRef, resizeObserver] = (0, _useResizeObserver.useResizeObserver)(
updateWidth,
);
if (!watchResizes) resizeObserver?.disconnect();
let refs = (0, _useMergedRefs.useMergedRefs)(
ref,
watchResizes ? resizeRef : void 0,
);
return [refs, contentWidth];
};