"use client"; import { useTranslation } from "react-i18next"; import type { ReactNode } from "react"; import { useResponsiveBreakpoint } from "@/hooks/use-responsive-breakpoint"; import { canResizeColumnBoundary, MIN_MARKDOWN_COLUMN_WIDTH } from "@/lib/markdown/table-resize"; import { useMarkdownTableResize } from "./use-markdown-table-resize"; export function ResizableMarkdownTable({ children }: { children?: ReactNode }) { const { t } = useTranslation(); const { isFinePointer, isMobile } = useResponsiveBreakpoint(); const resizeEnabled = isFinePointer && !isMobile; const resize = useMarkdownTableResize(resizeEnabled); const displayedWidths = resize.columnWidths ?? resize.geometry?.columnWidths; return (
{resize.columnWidths && ( {resize.columnWidths.map((width, index) => ( ))} )} {children}
{resizeEnabled && resize.geometry?.boundaries.map((left, index) => { const leftWidth = displayedWidths?.[index]; const rightWidth = displayedWidths?.[index + 1]; if ( !displayedWidths || leftWidth === undefined || rightWidth === undefined || !canResizeColumnBoundary(displayedWidths, index) ) { return null; } return (
); }