/** * The paper view: the Overleaf-style editing surface — a clickable outline * rail, the `main.tex` editor with a synced line-number gutter, a dependency- * free LaTeX syntax-highlight overlay (transparent-text textarea over a * token-rendered pre, degrading to plain past HIGHLIGHT_MAX_LENGTH). The * overlay and the line-number gutter are windowed: only the viewport's lines * (plus an overscan) mount as DOM, the rest is fixed-height spacers, so a * multi-thousand-line `main.tex` no longer rebuilds thousands of nodes per * keystroke. Then the autosave status pill, the compile row with the * severity-colored issue list * (click jumps the editor to the line), the iframe PDF preview, and the * bibliography panel that replaces the preview while open. The three panes * are resizable through drag handles (the widths persist to localStorage) and * the editor/preview panes can each take the full content area; below the * narrow breakpoint they degrade to a one-pane tab layout and the outline * rail hides. * @module dsh-client-ui-mimir/client/PaperView */ import type { BibEntry, PaperSnapshotView, SectionMove, SectionOutlineTitles, SubsectionMove, VenueView } from 'dsh-mimir/types'; import type { ResearchBibView, ResearchCompileView, ResearchFailureView, ResearchImportCounts, ResearchOutlineView, ResearchPaperJump, ResearchPapersView, ResearchProjectSlice, ResearchSnapshotDetailView, ResearchSourceView, ResearchVenueTemplatesView } from './controller.ts'; import type { PaperFullscreen } from './store.ts'; import type { ResearchT } from './view-common.ts'; /** * @param props - the paper slice views, the selected project and its paperDir, * the inject verbs, and copy. * @returns the editing surface. */ export declare function PaperView({ outline, compileView, source, projectId, projectTitle, dir, editSource, reloadSource, compile, requestCompileFix, bib, papers, ensureBibliography, reloadBibliography, deleteBibEntry, updateBibEntry, importPapersToBib, ensurePapers, reorderPaperSections, reorderPaperSubsections, paperJump, consumePaperJump, fullscreen, setFullscreen, snapshots, snapshotDetail, loadSnapshots, loadSnapshotDetail, closeSnapshotDetail, revertSnapshot, venue, venueTemplates, ensureVenueTemplates, applyVenueTemplate, clearVenueTemplate, uploadTemplateFiles, requestVenueFormat, t, }: { readonly outline: ResearchOutlineView | null; readonly compileView: ResearchCompileView; readonly source: ResearchSourceView | null; readonly projectId: string | null; /** Title of the selected project, shown as a strip on top of the panes. */ readonly projectTitle: string | undefined; readonly dir: string | undefined; /** The selected project's target venue; undefined until one is applied. */ readonly venue: VenueView | undefined; /** The venue picker's built-in template registry slice. */ readonly venueTemplates: ResearchVenueTemplatesView; readonly ensureVenueTemplates: () => void; readonly applyVenueTemplate: (projectId: string, options: { templateId?: string | undefined; customName?: string | undefined; }) => Promise; readonly clearVenueTemplate: (projectId: string) => Promise; readonly uploadTemplateFiles: (projectId: string, dir: string | undefined, files: readonly File[]) => Promise; /** Send one assembled venue-format prompt to the current session's agent. */ readonly requestVenueFormat: (prompt: string) => Promise; readonly editSource: (content: string) => void; readonly reloadSource: () => void; readonly compile: (projectId: string) => void; /** Send one issue's assembled fix prompt to the current session's agent. */ readonly requestCompileFix: (prompt: string) => Promise; readonly bib: ResearchBibView | null; readonly papers: ResearchPapersView; readonly ensureBibliography: (projectId: string) => void; readonly reloadBibliography: () => void; readonly deleteBibEntry: (key: string) => Promise; readonly updateBibEntry: (originalKey: string, entry: BibEntry) => Promise; readonly importPapersToBib: (projectId: string, arxivIds: string[]) => Promise; readonly ensurePapers: () => void; readonly reorderPaperSections: (projectId: string, moves: readonly SectionMove[], baseOutline: readonly string[]) => Promise; readonly reorderPaperSubsections: (projectId: string, moves: readonly SubsectionMove[], baseOutline: readonly SectionOutlineTitles[]) => Promise; /** The pending figure-insert jump ticket, or null. */ readonly paperJump: ResearchPaperJump | null; /** Clear the jump ticket once the caret has moved. */ readonly consumePaperJump: () => void; /** The pane holding fullscreen (from the shared store so Esc can exit it), or null. */ readonly fullscreen: PaperFullscreen | null; readonly setFullscreen: (pane: PaperFullscreen | null) => void; /** The selected project's snapshot list; null until the snapshots panel first opens. */ readonly snapshots: ResearchProjectSlice | null; /** The snapshot expanded for diffing; null when closed. */ readonly snapshotDetail: ResearchSnapshotDetailView | null; readonly loadSnapshots: (projectId: string, force?: boolean) => void; readonly loadSnapshotDetail: (projectId: string, id: string) => void; readonly closeSnapshotDetail: () => void; readonly revertSnapshot: (projectId: string, id: string) => Promise; readonly t: ResearchT; }): import("react").JSX.Element; //# sourceMappingURL=PaperView.d.ts.map