import Loading from "@moduletrace/twui/elements/Loading"; import Stack from "@moduletrace/twui/layout/Stack"; import useFileText from "@/src/hooks/use-file-text"; import formatBytes from "@/src/utils/format-bytes"; import { AppData } from "@/src/data/app-data"; import type { FilePreviewKind } from "@/src/utils/file-preview-kind"; import FilePreviewCode from "./file-preview-code"; import FilePreviewMarkdown from "./file-preview-markdown"; import FilePreviewNotice from "./file-preview-notice"; import FilePreviewTable from "./file-preview-table"; type Props = { kind: FilePreviewKind; url: string; size?: number; }; /** * A text file read into the preview: markdown rendered, CSV or TSV as a * table, anything else as code. */ export default function FilePreviewText({ kind, url, size }: Props) { const { text, loading, error, too_large } = useFileText({ url, size }); if (loading) { return ( ); } if (too_large) { return ( ); } if (error || text == null) { return ; } if (kind == "markdown") return ; if (kind == "csv") return ; if (kind == "tsv") return ; return ; }