import { useState, useEffect, useRef, useCallback } from 'react' import { Box, useMediaQuery } from '@mui/material' import { useTheme } from '@mui/material' import { Outlet } from 'react-router-dom' import { useRedisStateStore } from '../../stores/redis-state.store' import { navigateTo } from '../../stores/navigation.store' import DatabaseHeader from './DatabaseHeader' import DatabaseTreeControls from './DatabaseTreeControls' import DatabaseTree from './DatabaseTree' const RESIZE_MIN_WIDTH = 315 const PANEL_WIDTH_KEY = 'p3xr-database-panel-width' export default function DatabasePage() { const connection = useRedisStateStore(s => s.connection) const setCurrentPage = useRedisStateStore(s => s.setCurrentPage) const muiTheme = useTheme() const isXs = useMediaQuery('(max-width: 599px)') const hasConnection = !!connection // Resize state — load saved width from localStorage const [leftWidth, setLeftWidth] = useState(() => { const saved = localStorage.getItem(PANEL_WIDTH_KEY) if (saved) { const width = parseInt(saved, 10) if (!isNaN(width) && width >= RESIZE_MIN_WIDTH) { return width } } return RESIZE_MIN_WIDTH }) const [isDragging, setIsDragging] = useState(false) const [isHovering, setIsHovering] = useState(false) const containerRef = useRef(null) const dragStyleElRef = useRef(null) // Force cursor during drag via a dynamically-injected