import type { Workbook, Worksheet } from "@opengeni/artifact-tool/reference"; import { type ReactNode } from "react"; import { type SpreadsheetCanvasCellFormat, type SpreadsheetCanvasProjection } from "./spreadsheet-canvas.js"; import { type SpreadsheetDimensionCommit } from "./spreadsheet-resize.js"; export type { SpreadsheetDimensionCommit } from "./spreadsheet-resize.js"; type CellCoordinate = { row: number; col: number; }; export type SpreadsheetSelection = { sheetId: string; anchor: CellCoordinate; focus: CellCoordinate; }; export type SpreadsheetCommit = { sheetId: string; cell: CellCoordinate; input: string; kind: "formula" | "value"; }; /** Row-major rectangular input submitted as one durable spreadsheet command. */ export type SpreadsheetRangeCommit = { sheetId: string; anchor: CellCoordinate; rows: number; columns: number; inputs: readonly string[]; }; /** End-exclusive logical windows emitted at most once per animation frame. */ export type SpreadsheetViewport = { sheetId: string; rowStart: number; rowEnd: number; columnStart: number; columnEnd: number; overscanRowStart: number; overscanRowEnd: number; overscanColumnStart: number; overscanColumnEnd: number; logicalScrollLeft: number; logicalScrollTop: number; viewportWidth: number; viewportHeight: number; }; export type SpreadsheetGridProps = { workbook: Workbook; worksheet: Worksheet; readOnly?: boolean | undefined; /** Addressable rows in the interactive projection. Grows to include used data. */ rowCount?: number | undefined; /** Addressable columns in the interactive projection. Grows to include used data. */ columnCount?: number | undefined; overscanRows?: number | undefined; overscanColumns?: number | undefined; onSelectionChange?: ((selection: SpreadsheetSelection) => void) | undefined; onCommit?: ((commit: SpreadsheetCommit) => void) | undefined; onResize?: ((change: SpreadsheetDimensionCommit) => void) | undefined; onViewportChange?: ((viewport: SpreadsheetViewport) => void) | undefined; className?: string | undefined; }; export type SpreadsheetProjectionCell = { value: unknown; input: string; format: SpreadsheetCanvasCellFormat; }; /** * Synchronous, bounded view state consumed by the React editor. Durable model * ownership stays with the caller (legacy Workbook, SDK Worker, or another * projection adapter); edits return through `commit` / `clear` ports. */ export type SpreadsheetGridProjection = SpreadsheetCanvasProjection & { sheetName: string; rowCount: number; columnCount: number; defaultRowHeight?: number | undefined; defaultColumnWidth?: number | undefined; rowHeights?: readonly (readonly [number, number])[] | undefined; columnWidths?: readonly (readonly [number, number])[] | undefined; dimensionRevision?: string | number | undefined; usedRange?: { row: number; col: number; rowCount: number; colCount: number; } | null | undefined; readCell: (row: number, column: number) => SpreadsheetProjectionCell | null; }; export type SpreadsheetProjectionGridProps = { projection: SpreadsheetGridProjection; readOnly?: boolean | undefined; overscanRows?: number | undefined; overscanColumns?: number | undefined; onSelectionChange?: ((selection: SpreadsheetSelection) => void) | undefined; commit?: ((commit: SpreadsheetCommit) => void | Promise) | undefined; commitRange?: ((commit: SpreadsheetRangeCommit) => void | Promise) | undefined; clear?: ((selection: SpreadsheetSelection) => void | Promise) | undefined; resize?: ((change: SpreadsheetDimensionCommit) => void | Promise) | undefined; /** Server-unacknowledged changes, distinct from local command acceptance. */ pendingTransactions?: number | undefined; syncStatus?: string | undefined; syncError?: string | undefined; onCommandError?: ((error: Error) => void) | undefined; onViewportChange?: ((viewport: SpreadsheetViewport) => void) | undefined; className?: string | undefined; }; export type SpreadsheetArtifactSurfaceProps = Omit & { title?: string | undefined; subtitle?: ReactNode | undefined; actions?: ReactNode | undefined; initialSheetId?: string | undefined; allowAddSheet?: boolean | undefined; }; /** A reusable workbook shell with first-class sheet switching. */ export declare function SpreadsheetArtifactSurface({ workbook, title: titleProp, subtitle, actions, initialSheetId, allowAddSheet, readOnly, ...gridProps }: SpreadsheetArtifactSurfaceProps): import("react").JSX.Element; export declare function SpreadsheetGrid({ workbook, worksheet, readOnly, rowCount: requestedRowCount, columnCount: requestedColumnCount, overscanRows, overscanColumns, onSelectionChange, onCommit, onResize, onViewportChange, className, }: SpreadsheetGridProps): import("react").JSX.Element; /** * Two-axis virtualized, accessible spreadsheet projection. The caller owns * durable model state; React owns only viewport, selection, and edit state. */ export declare function SpreadsheetProjectionGrid({ projection, readOnly, overscanRows, overscanColumns, onSelectionChange, commit, commitRange, clear, resize, pendingTransactions, syncStatus, syncError, onCommandError, onViewportChange, className, }: SpreadsheetProjectionGridProps): import("react").JSX.Element;