'use client'; import styles from '@components/SidebarLayout.module.css'; import * as React from 'react'; interface SidebarLayoutProps extends Omit, 'defaultValue'> { children?: React.ReactNode; sidebar?: React.ReactNode; defaultSidebarWidth?: number; isShowingHandle?: boolean; isReversed?: boolean; } const LINE_HEIGHT = 20; const CHARACTER_WIDTH = 9.6; const SidebarLayout: React.FC = ({ defaultSidebarWidth = 20, children, sidebar, isShowingHandle = false, isReversed = false, ...rest }) => { const [sidebarWidth, setSidebarWidth] = React.useState(defaultSidebarWidth); const handleRef = React.useRef(null); const handleMouseDown = (event: React.MouseEvent) => { const startX = event.clientX; const startWidth = sidebarWidth; const onMouseMove = (moveEvent: MouseEvent) => { const deltaX = moveEvent.clientX - startX; const increment = Math.round(deltaX / CHARACTER_WIDTH); setSidebarWidth(Math.max(CHARACTER_WIDTH, startWidth + increment)); }; const onMouseUp = () => { document.removeEventListener('mousemove', onMouseMove); document.removeEventListener('mouseup', onMouseUp); }; document.addEventListener('mousemove', onMouseMove); document.addEventListener('mouseup', onMouseUp); }; if (isReversed) { return (
{children}
 
{sidebar}
); } return (
{sidebar}
{isShowingHandle ? (
<>
) : null}
{children}
); }; export default SidebarLayout;