2023-01-06 23:50:08 +01:00
|
|
|
import { MutableRefObject, useCallback, useEffect, useState } from 'react';
|
2022-12-04 17:36:30 +01:00
|
|
|
|
2023-01-06 22:46:07 +01:00
|
|
|
export const useResize = (myRef: MutableRefObject<HTMLDivElement | null>, dependencies: any[]) => {
|
2022-12-04 17:36:30 +01:00
|
|
|
const [width, setWidth] = useState(0);
|
|
|
|
|
const [height, setHeight] = useState(0);
|
|
|
|
|
|
|
|
|
|
const handleResize = useCallback(() => {
|
2023-01-06 23:50:08 +01:00
|
|
|
if (!myRef.current) return;
|
|
|
|
|
setWidth(myRef.current.offsetWidth);
|
|
|
|
|
setHeight(myRef.current.offsetHeight);
|
2022-12-04 17:36:30 +01:00
|
|
|
}, [myRef]);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
2023-01-07 18:17:56 +01:00
|
|
|
window.addEventListener('load', handleResize);
|
|
|
|
|
window.addEventListener('resize', handleResize);
|
2022-12-04 17:36:30 +01:00
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
window.removeEventListener('load', handleResize);
|
|
|
|
|
window.removeEventListener('resize', handleResize);
|
|
|
|
|
};
|
|
|
|
|
}, [myRef, handleResize]);
|
|
|
|
|
|
2023-01-03 16:40:15 +01:00
|
|
|
useEffect(() => {
|
|
|
|
|
handleResize();
|
2023-01-06 22:46:07 +01:00
|
|
|
}, [myRef, dependencies]);
|
2023-01-03 16:40:15 +01:00
|
|
|
|
2022-12-04 17:36:30 +01:00
|
|
|
return { width, height };
|
|
|
|
|
};
|