/** * The figures view: a thumbnail grid of the selected project's paper figures, * served through the `/research/figure` route. Files sharing one stem * (`figures/foo.png` + `figures/foo.svg`) are format siblings of ONE figure * and render as one card (see `figure-groups.ts`): the card previews the best * raster/SVG sibling, badges every format, and its actions act on the * LaTeX-preferred sibling (PDF first, then raster). Hovering a card reveals * its operations — insert the standard figure block into the paper's * `main.tex` (or jump to the existing reference), copy the LaTeX figure * block, rename the group (the host rewrites `.tex` references), edit the * caption, hand the figure to the agent for AI naming/captioning, delete the * files — and the view head carries the upload button (POST * `/research/figure-upload`) plus the forced rescan. Cards show the * wiki-recorded caption and a linked-experiment badge when the figures * metadata table knows the stem. Image files can also be dragged anywhere * onto the view: a dashed overlay shows while hovering, the drop reuses the * upload channel, and files outside the accept list are reported, not * silently ignored. * @module dsh-client-ui-mimir/client/FiguresView */ import type { ExperimentRecord, FigureEntry } from 'dsh-mimir/types'; import type { ResearchFailureView, ResearchProjectSlice } from './controller.ts'; import { type ResearchT } from './view-common.ts'; /** * @param props - the figures slice, the selected project and its paperDir, * the rescan/upload/delete/rename/caption verbs, the AI-organize channel, and * copy. * @returns the thumbnail grid plus the lightbox overlay. */ export declare function FiguresView({ figures, experiments, projectId, projectTitle, dir, loadFigures, uploadFigures, deleteFigure, renameFigure, updateFigure, requestFigureOrganize, insertFigure, t, }: { readonly figures: ResearchProjectSlice | null; /** Experiment list of the same project, used to name linked-experiment badges. */ readonly experiments: ResearchProjectSlice | null; readonly projectId: string | null; /** The selected project's title, for the AI-organize prompt's context. */ readonly projectTitle: string; readonly dir: string | undefined; readonly loadFigures: (projectId: string, force?: boolean, quiet?: boolean) => void; readonly uploadFigures: (projectId: string, dir: string | undefined, files: readonly File[], onProgress?: (done: number, total: number) => void) => Promise; readonly deleteFigure: (projectId: string, relPath: string) => Promise; readonly renameFigure: (projectId: string, relPath: string, newName: string) => Promise; readonly updateFigure: (projectId: string, relPath: string, caption: string) => Promise; /** Hand one assembled figure-organization prompt to the current session's agent. */ readonly requestFigureOrganize: (prompt: string) => Promise; /** Insert one card's figure block into the paper (or jump to its reference). */ readonly insertFigure: (entry: FigureEntry) => Promise; readonly t: ResearchT; }): import("react").JSX.Element; //# sourceMappingURL=FiguresView.d.ts.map