11import clsx from "clsx" ;
22import { Logo } from "./components/Logo" ;
3- import React , { useEffect , useState } from "react" ;
3+ import React , { useEffect , useState , useMemo } from "react" ;
44import { RDTContextProvider } from "./context/RDTContext" ;
55import { tabs } from "./tabs" ;
66import { useTimelineHandler } from "./hooks/useTimelineHandler" ;
@@ -18,9 +18,14 @@ interface Props extends RemixDevToolsProps {
1818}
1919
2020const RemixDevTools = ( { defaultOpen, position } : Props ) => {
21- const [ isOpen , setIsOpen ] = useState ( defaultOpen ) ;
22- const { activeTab, setActiveTab, setShouldConnectWithForge, height } =
23- useRDTContext ( ) ;
21+ const {
22+ activeTab,
23+ setActiveTab,
24+ setShouldConnectWithForge,
25+ height,
26+ setPersistOpen,
27+ persistOpen,
28+ } = useRDTContext ( ) ;
2429 const { enableResize, disableResize, isResizing } = useResize ( ) ;
2530 useTimelineHandler ( ) ;
2631 const { isConnected, isConnecting } = useGetSocket ( ) ;
@@ -29,12 +34,15 @@ const RemixDevTools = ({ defaultOpen, position }: Props) => {
2934 position === "top-left" ||
3035 position === "bottom-left" ||
3136 position === "middle-left" ;
32-
37+ const isOpen = useMemo (
38+ ( ) => defaultOpen || persistOpen ,
39+ [ persistOpen , defaultOpen ]
40+ ) ;
3341 return (
3442 < div className = "remix-dev-tools" >
3543 < div
3644 style = { { zIndex : 9999 } }
37- onClick = { ( ) => setIsOpen ( ! isOpen ) }
45+ onClick = { ( ) => setPersistOpen ( ! isOpen ) }
3846 className = { clsx (
3947 "rdt-fixed rdt-m-1.5 rdt-h-14 rdt-w-14 rdt-cursor-pointer rdt-rounded-full " ,
4048 position === "bottom-right" && "rdt-bottom-0 rdt-right-0" ,
0 commit comments