@sheetwrite/core/adapterinterface
Framework-neutral readiness, change, and error callbacks shared by adapters.
- Package
@sheetwrite/core/adapter- Source
packages/core/src/adapter.ts#L57
Members 9
onGridChange
onGridChange Receives every committed Grid change, including its applied transaction.
onGridChange?: (event: ChangeEventinterface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}interface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}interface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}Payload of the change event; flows OUT for API submission/reconcile.API reference →) => void;onSelectionChange Receives the current selection, or null after it is cleared.
onSelectionChange?: (selection: Selectiontype Selection =
| { kind: "cell"; addr: CellAddress }
| { kind: "range"; range: Range }
| { kind: "row"; sheet: SheetId; row: number }
| { kind: "column"; sheet: SheetId; col: number }
| { kind: "multi"; ranges: Range[] };type Selection =
| { kind: "cell"; addr: CellAddress }
| { kind: "range"; range: Range }
| { kind: "row"; sheet: SheetId; row: number }
| { kind: "column"; sheet: SheetId; col: number }
| { kind: "multi"; ranges: Range[] };type Selection =
| {
kind: "cell";
addr: CellAddress;
}
| {
kind: "range";
range: Range;
}
| {
kind: "row";
sheet: SheetId;
row: number;
}
| {
kind: "column";
sheet: SheetId;
col: number;
}
// … 4 more lines — see the API reference
}Current cell, range, row, column, or multi-range selection.API reference → | null) => void;onViewportChange Receives visible row bounds and vertical scroll offset after scrolling.
onViewportChange?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["scroll"]) => void;onEditBegin Fires when cell editing begins.
onEditBegin?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["edit-begin"]) => void;onEditCommit Fires after an edit commits its parsed cell value.
onEditCommit?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["edit-commit"]) => void;onSearch Receives refreshed search matches and active-match index.
onSearch?: (result: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["search"]) => void;onActiveSheetChange Fires after the visible sheet changes.
onActiveSheetChange?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["active-sheet"]) => void;onReady Fires after the adapter publishes a ready Grid generation.
onReady?: (event: GridReadyEventinterface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}interface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}interface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}Grid handle, generation, and reason published after adapter initialization.API reference →) => void;onInitializationError Receives a WASM initialization failure while the adapter remains mounted.
onInitializationError?: (error: unknown) => void;Declaration
View full TypeScript declaration
export interface GridAdapterEventHandlers { onGridChange?: (event: ChangeEventinterface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}interface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}interface ChangeEvent {
transaction: Transaction;
changes: CellChange[];
commitReason: CommitReason;
source: OperationSource;
epoch?: number;
}Payload of the change event; flows OUT for API submission/reconcile.API reference →) => void; onSelectionChange?: (selection: Selectiontype Selection =
| { kind: "cell"; addr: CellAddress }
| { kind: "range"; range: Range }
| { kind: "row"; sheet: SheetId; row: number }
| { kind: "column"; sheet: SheetId; col: number }
| { kind: "multi"; ranges: Range[] };type Selection =
| { kind: "cell"; addr: CellAddress }
| { kind: "range"; range: Range }
| { kind: "row"; sheet: SheetId; row: number }
| { kind: "column"; sheet: SheetId; col: number }
| { kind: "multi"; ranges: Range[] };type Selection =
| {
kind: "cell";
addr: CellAddress;
}
| {
kind: "range";
range: Range;
}
| {
kind: "row";
sheet: SheetId;
row: number;
}
| {
kind: "column";
sheet: SheetId;
col: number;
}
// … 4 more lines — see the API reference
}Current cell, range, row, column, or multi-range selection.API reference → | null) => void; onViewportChange?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["scroll"]) => void; onEditBegin?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["edit-begin"]) => void; onEditCommit?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["edit-commit"]) => void; onSearch?: (result: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["search"]) => void; onActiveSheetChange?: (event: GridEventsinterface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: { selection: Selection | null };
scroll: { scrollTop: number; firstRow: number; lastRow: number };
"edit-begin": { addr: CellAddress };
"edit-commit": { addr: CellAddress; value: CellValue };
search: SearchResult;
"mutation-rejected": { issues: MutationIssue[] };
"active-sheet": { sheet: SheetId };
"renderer-fallback": { requested: "worker"; error: unknown };
"datasource-error": {
request: Omit<DataSourceRequest, "signal">;
error: unknown;
};
"export-error": { format: "xlsx"; error: unknown };
}interface GridEvents {
change: ChangeEvent;
selection: {
selection: Selection | null;
};
scroll: {
scrollTop: number;
firstRow: number;
lastRow: number;
};
"edit-begin": {
addr: CellAddress;
};
"edit-commit": {
addr: CellAddress;
value: CellValue;
};
search: SearchResult;
"mutation-rejected": {
// … 21 more lines — see the API reference
}Payload map for events emitted by a Grid.API reference →["active-sheet"]) => void; onReady?: (event: GridReadyEventinterface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}interface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}interface GridReadyEvent {
grid: Grid;
generation: number;
reason: GridReadyReason;
}Grid handle, generation, and reason published after adapter initialization.API reference →) => void; onInitializationError?: (error: unknown) => void;}