From 67b3c38265194baaa65ddc4a4d9cb132798f8bda Mon Sep 17 00:00:00 2001
From: "duncan@dtail-design.nl" <duncan@dtail-design.nl>
Date: Sun, 31 Mar 2024 00:21:28 +0100
Subject: [PATCH] fix(resize): recalculates after window resize

---
 libs/shared/lib/components/Resizable.tsx | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/libs/shared/lib/components/Resizable.tsx b/libs/shared/lib/components/Resizable.tsx
index 8fb998b29..6f6ec6e11 100644
--- a/libs/shared/lib/components/Resizable.tsx
+++ b/libs/shared/lib/components/Resizable.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useRef } from 'react';
+import React, { useEffect, useRef, useState } from 'react';
 
 type Props = {
   children: React.ReactNode;
@@ -31,6 +31,19 @@ export const Resizable = ({
   const [firstSize, setFirstSize] = React.useState<number>(0);
   const [secondSize, setSecondSize] = React.useState<number>(0);
   const [dragging, setDragging] = React.useState<boolean>(false);
+  const [windowSize, setWindowSize] = useState({ width: window.innerWidth, height: window.innerHeight });
+
+  useEffect(() => {
+    const handleResize = () => {
+      setWindowSize({ width: window.innerWidth, height: window.innerHeight });
+    };
+
+    window.addEventListener('resize', handleResize);
+
+    return () => {
+      window.removeEventListener('resize', handleResize);
+    };
+  }, []);
 
   useEffect(() => {
     if (ref.current) {
@@ -44,7 +57,7 @@ export const Resizable = ({
         setSecondSize(rect.height * (1 / _defaultProportion) - divisorSize);
       }
     }
-  }, [ref.current]);
+  }, [ref.current, windowSize]);
 
   function onMouseDown(e: React.MouseEvent<HTMLDivElement, MouseEvent>) {
     setDragging(true);
-- 
GitLab