@@ -8,16 +8,17 @@ import { useRDTContext } from "./context/useRDTContext";
88import { isDev } from "./utils/isDev" ;
99import { useGetSocket } from "./hooks/useGetSocket" ;
1010import { Radio } from "lucide-react" ;
11+ import { useResize } from "./hooks/useResize" ;
1112
1213interface Props {
1314 defaultOpen : boolean ;
1415}
1516
1617const RemixDevTools = ( { defaultOpen } : Props ) => {
1718 const [ isOpen , setIsOpen ] = useState ( defaultOpen ) ;
18- const { activeTab, setActiveTab, setShouldConnectWithForge } =
19+ const { activeTab, setActiveTab, setShouldConnectWithForge, height } =
1920 useRDTContext ( ) ;
20-
21+ const { enableResize , disableResize , isResizing } = useResize ( ) ;
2122 useTimelineHandler ( ) ;
2223 const { isConnected, isConnecting } = useGetSocket ( ) ;
2324 const Component = tabs . find ( ( tab ) => tab . id === activeTab ) ?. component ;
@@ -38,16 +39,23 @@ const RemixDevTools = ({ defaultOpen }: Props) => {
3839 ) }
3940 />
4041 </ div >
41-
4242 < div
43- style = { { zIndex : 9998 } }
43+ style = { { zIndex : 9998 , height } }
4444 className = { clsx (
4545 "rdt-duration-600 rdt-fixed rdt-bottom-0 rdt-left-0 rdt-box-border rdt-flex rdt-w-screen rdt-resize-y rdt-flex-col rdt-overflow-auto rdt-bg-[#212121] rdt-text-white rdt-opacity-0 rdt-transition-all" ,
46- isOpen
47- ? "rdt-h-[40vh] rdt-opacity-100 rdt-drop-shadow-2xl"
48- : "rdt-h-0 "
46+ isOpen ? "rdt-opacity-100 rdt-drop-shadow-2xl" : "rdt-h-0" ,
47+ isResizing ? "rdt-pointer-events-none" : "" ,
48+ isResizing && "rdt-cursor-grabbing "
4949 ) }
5050 >
51+ < div
52+ onMouseDown = { enableResize }
53+ onMouseUp = { disableResize }
54+ className = { clsx (
55+ "rdt-absolute rdt-h-1 rdt-w-full rdt-cursor-n-resize" ,
56+ isResizing && "rdt-cursor-grabbing "
57+ ) }
58+ />
5159 < div className = "rdt-flex rdt-h-8 rdt-w-full rdt-bg-gray-800" >
5260 { tabs
5361 . filter (
0 commit comments