import { useEffect } from 'react';
/**
 * Отслеживает изменение размеров переданного элемента
 * @param {React.Ref<T>} ref - реф элемента, за которым нужно следить
 * @callback callback - функция, которая вызывается при изменении элемента
 * @param {Element} element - элемент, размер которого изменился
 */ export var useResizeObserver = function useResizeObserver(ref, callback) {
    useEffect(function() {
        /* istanbul ignore if: убираем проверку на рефы из покрытия */ if (!(ref === null || ref === void 0 ? void 0 : ref.current)) {
            return;
        }
        var current = ref.current;
        var resizeObserver = new window.ResizeObserver(function() {
            window.requestAnimationFrame(function() {
                callback(current);
            });
        });
        resizeObserver.observe(ref.current);
        return function() {
            /* istanbul ignore if: убираем проверку на рефы из покрытия */ if (!(ref === null || ref === void 0 ? void 0 : ref.current)) {
                return;
            }
            resizeObserver.unobserve(ref.current);
        };
    }, [
        ref
    ]);
};
