@awsui/components-react
Version:
AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A
29 lines (28 loc) • 1.06 kB
JavaScript
import { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';
import { useState, useLayoutEffect, useEffect } from 'react';
export function useResizeObserver(getElement, mapFn) {
var _a = useState(null), state = _a[0], setState = _a[1];
useLayoutEffect(function () {
var element = getElement();
if (element) {
setState(function (prevState) { return mapFn(new ResizeObserverEntry(element), prevState); });
}
}, []);
useEffect(function () {
var element = getElement();
if (element) {
var connected_1 = true;
var observer_1 = new ResizeObserver(function (entries) {
if (connected_1) {
setState(function (prevState) { return mapFn(entries[0], prevState); });
}
});
observer_1.observe(element);
return function () {
connected_1 = false;
observer_1.disconnect();
};
}
}, [getElement, mapFn]);
return state;
}