import { useEffect, useRef } from "react"; interface Props { children: React.ReactNode; baseSide?: "width" | "height"; className?: string; } const SquareDiv: React.FC = (props: Props) => { const { children, className } = props; const baseSide = props.baseSide || "width"; const squareDivRef = useRef(null); useEffect(() => { const adjustSquareSize = () => { if (!squareDivRef.current) { return; } if (baseSide === "width") { const width = squareDivRef.current.clientWidth; squareDivRef.current.style.height = width + "px"; } else { const height = squareDivRef.current.clientHeight; squareDivRef.current.style.width = height + "px"; } }; adjustSquareSize(); window.addEventListener("resize", adjustSquareSize); return () => { window.removeEventListener("resize", adjustSquareSize); }; }, []); return (
{children}
); }; export default SquareDiv;