You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
499 B
21 lines
499 B
/* eslint react/prop-types: 0 */
|
|
import { useState } from 'react';
|
|
import { useRef } from 'react';
|
|
import { useEffect } from 'react';
|
|
|
|
export const useBbox = () => {
|
|
const ref = useRef();
|
|
const [bbox, setBbox] = useState({});
|
|
|
|
const set = () =>
|
|
setBbox(ref && ref.current ? ref.current.getBoundingClientRect() : {});
|
|
|
|
useEffect(() => {
|
|
set();
|
|
window.addEventListener('resize', set);
|
|
return () => window.removeEventListener('resize', set);
|
|
}, []);
|
|
|
|
return [bbox, ref];
|
|
};
|