Exhaustive serializable operation union for workbook mutations.
Variants 34
encoding: "deflate-json-v1";
{ op: "addRows"; sheet: SheetId; at: number; count: number }
{ op: "removeSheet"; sheet: SheetId }
{ op: "renameSheet"; sheet: SheetId; name: string }
{ op: "moveSheet"; sheet: SheetId; to: number }
op: "setSheetVisibility";
{ op: "removeTable"; sheet: SheetId; tableId: string }
{ op: "removeValidationRule"; sheet: SheetId; id: string }
{ op: "removeHyperlink"; sheet: SheetId; id: string }
{ op: "removeProtectedRange"; sheet: SheetId; id: string }
{ op: "setNote"; addr: CellAddress; text: string | null }
{ op: "removeNamedRange"; name: string; scope?: SheetId }
Declaration
View full TypeScript declaration
encoding: "deflate-json-v1";
op: "setSheetVisibility";
op: "removeValidationRule";
op: "removeProtectedRange";
Referenced by
Workspace packages depending on @sheetwrite/core
@sheetwrite/benchdependency
@sheetwrite/docs-startdependency
@sheetwrite/reactdependency
@sheetwrite/sveltedependency
@sheetwrite/vuedependency
@sheetwrite/xlsxdependency
Public exports naming DocumentOp
interface CellAddress {
sheet: SheetId;
row: number;
col: number;
}interface CellAddress {
sheet: SheetId;
row: number;
col: number;
}interface CellAddress {
sheet: SheetId;
row: number;
col: number;
}Zero-based address of one cell on a stable sheet ID.API reference →type CellValue =
| { kind: "literal"; value: CellScalar }
| { kind: "ref"; target: CellAddress }
| { kind: "formula"; src: string };type CellValue =
| { kind: "literal"; value: CellScalar }
| { kind: "ref"; target: CellAddress }
| { kind: "formula"; src: string };type CellValue =
| {
kind: "literal";
value: CellScalar;
}
| {
kind: "ref";
target: CellAddress;
}
| {
kind: "formula";
src: string;
};A cell's persisted input: a literal, a cross-reference, or a formula. References resolve through the store's reference graph; formulas resolve in the WASM calculation engine.API reference →interface CellStyle {
bold?: boolean;
italic?: boolean;
underline?: boolean;
strikethrough?: boolean;
fontSize?: number;
color?: string;
backgroundColor?: string;
align?: CellAlign;
wrap?: boolean;
border?: CellBorders;
}interface CellStyle {
bold?: boolean;
italic?: boolean;
underline?: boolean;
strikethrough?: boolean;
fontSize?: number;
color?: string;
backgroundColor?: string;
align?: CellAlign;
wrap?: boolean;
border?: CellBorders;
}interface CellStyle {
bold?: boolean;
italic?: boolean;
underline?: boolean;
strikethrough?: boolean;
fontSize?: number;
color?: string;
backgroundColor?: string;
align?: CellAlign;
wrap?: boolean;
border?: CellBorders;
}Serializable formatting applied to a cell or used as a column default.API reference →interface Range {
sheet: SheetId;
start: { row: number; col: number };
end: { row: number; col: number };
}interface Range {
sheet: SheetId;
start: { row: number; col: number };
end: { row: number; col: number };
}interface Range {
sheet: SheetId;
start: {
row: number;
col: number;
};
end: {
row: number;
col: number;
};
}Inclusive rectangular cell range on a stable sheet ID.API reference →interface SnapshotCell {
rowOffset: number;
colOffset: number;
value: CellValue;
style?: CellStyle;
}interface SnapshotCell {
rowOffset: number;
colOffset: number;
value: CellValue;
style?: CellStyle;
}interface SnapshotCell {
rowOffset: number;
colOffset: number;
value: CellValue;
style?: CellStyle;
}Serializable cell value and optional style inside a snapshot block.API reference →interface PackedCellBlock {
rowCount: number;
colCount: number;
values: CellScalar[];
formulas?: Array<[offset: number, source: string]>;
refs?: Array<[offset: number, target: CellAddress]>;
styleTable?: CellStyle[];
styleIds?: number[];
}interface PackedCellBlock {
rowCount: number;
colCount: number;
values: CellScalar[];
formulas?: Array<[offset: number, source: string]>;
refs?: Array<[offset: number, target: CellAddress]>;
styleTable?: CellStyle[];
styleIds?: number[];
}interface PackedCellBlock {
rowCount: number;
colCount: number;
values: CellScalar[];
formulas?: Array<
[
offset: number,
source: string,
]
>;
refs?: Array<
[
offset: number,
target: CellAddress,
]
>;
styleTable?: CellStyle[];
styleIds?: number[];
}Dense row-major mutation payload. Primitive arrays keep large paste/fill operations JSON-safe without allocating one operation object per cell. Formula/reference tuples are sparse exceptions keyed by row-major offset.API reference →type SheetId = string;type SheetId = string;type SheetId = string;Stable identifier used to address a workbook sheet.API reference →interface Column {
key: string;
header: string;
width: number;
type: CellFormat;
numberFormat?: string;
numberLocale?: string;
headerStyle?: CellStyle;
cellStyle?: CellStyle;
visible?: boolean;
renderer?: string;
editor?: string;
}interface Column {
key: string;
header: string;
width: number;
type: CellFormat;
numberFormat?: string;
numberLocale?: string;
headerStyle?: CellStyle;
cellStyle?: CellStyle;
visible?: boolean;
renderer?: string;
editor?: string;
}interface Column {
key: string;
header: string;
width: number;
type: CellFormat;
numberFormat?: string;
numberLocale?: string;
headerStyle?: CellStyle;
cellStyle?: CellStyle;
visible?: boolean;
renderer?: string;
editor?: string;
}Schema and default presentation for one workbook column.API reference →interface RowMetadata {
height?: number;
hidden?: boolean;
}interface RowMetadata {
height?: number;
hidden?: boolean;
}interface RowMetadata {
height?: number;
hidden?: boolean;
}Persistent display and grouping metadata for one document row.API reference →interface MergeRange {
r0: number;
c0: number;
r1: number;
c1: number;
}interface MergeRange {
r0: number;
c0: number;
r1: number;
c1: number;
}interface MergeRange {
r0: number;
c0: number;
r1: number;
c1: number;
}Inclusive merged-cell rectangle in data-row/column coordinates.API reference →interface SheetSnapshot {
id: SheetId;
name: string;
order: number;
visibility?: SheetVisibility;
rowCount: number;
columns: Column[];
frozenRows?: number;
frozenCols?: number;
rowMeta?: Array<[row: number, meta: RowMetadata]>;
merges?: MergeRange[];
conditionalFormats?: ConditionalFormatRule[];
hyperlinks?: CellHyperlink[];
validationRules?: DataValidationRule[];
protectedRanges?: ProtectedRange[];
// … 7 more lines — see the API reference
}interface SheetSnapshot {
id: SheetId;
name: string;
order: number;
visibility?: SheetVisibility;
rowCount: number;
columns: Column[];
frozenRows?: number;
frozenCols?: number;
rowMeta?: Array<[row: number, meta: RowMetadata]>;
merges?: MergeRange[];
conditionalFormats?: ConditionalFormatRule[];
hyperlinks?: CellHyperlink[];
validationRules?: DataValidationRule[];
protectedRanges?: ProtectedRange[];
// … 7 more lines — see the API reference
}interface SheetSnapshot {
id: SheetId;
name: string;
order: number;
visibility?: SheetVisibility;
rowCount: number;
columns: Column[];
frozenRows?: number;
frozenCols?: number;
rowMeta?: Array<
[
row: number,
meta: RowMetadata,
]
>;
merges?: MergeRange[];
conditionalFormats?: ConditionalFormatRule[];
hyperlinks?: CellHyperlink[];
validationRules?: DataValidationRule[];
// … 13 more lines — see the API reference
}Serializable complete state for one workbook sheet.API reference →type SheetVisibility = "visible" | "hidden" | "veryHidden";type SheetVisibility = "visible" | "hidden" | "veryHidden";type SheetVisibility =
| "visible"
| "hidden"
| "veryHidden";Native worksheet visibility preserved across workbook snapshots and tab rendering.API reference →interface WorkbookTable {
id: WorkbookTableId;
name: string;
range: Range;
columns: WorkbookTableColumn[];
headerRow: boolean;
totalsRow: boolean;
style?: WorkbookTableStyle;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}interface WorkbookTable {
id: WorkbookTableId;
name: string;
range: Range;
columns: WorkbookTableColumn[];
headerRow: boolean;
totalsRow: boolean;
style?: WorkbookTableStyle;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}interface WorkbookTable {
id: WorkbookTableId;
name: string;
range: Range;
columns: WorkbookTableColumn[];
headerRow: boolean;
totalsRow: boolean;
style?: WorkbookTableStyle;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}Serializable canonical workbook table. Its range includes header/totals rows.API reference →interface WorkbookTablePatch {
name?: string;
range?: Range;
columns?: WorkbookTableColumn[];
headerRow?: boolean;
totalsRow?: boolean;
style?: WorkbookTableStyle | null;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}interface WorkbookTablePatch {
name?: string;
range?: Range;
columns?: WorkbookTableColumn[];
headerRow?: boolean;
totalsRow?: boolean;
style?: WorkbookTableStyle | null;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}interface WorkbookTablePatch {
name?: string;
range?: Range;
columns?: WorkbookTableColumn[];
headerRow?: boolean;
totalsRow?: boolean;
style?: WorkbookTableStyle | null;
unsupportedFeatures?: WorkbookTableUnsupportedFeature[];
}Mutable table fields accepted by the explicit update operation.API reference →interface ConditionalFormatRule {
range: Range;
when: ConditionalFormatPredicate;
style: CellStyle;
stopIfTrue?: boolean;
}interface ConditionalFormatRule {
range: Range;
when: ConditionalFormatPredicate;
style: CellStyle;
stopIfTrue?: boolean;
}interface ConditionalFormatRule {
range: Range;
when: ConditionalFormatPredicate;
style: CellStyle;
stopIfTrue?: boolean;
}Ordered condition and style applied to a cell range.API reference →interface RowGroup {
start: number;
end: number;
collapsed: boolean;
}interface RowGroup {
start: number;
end: number;
collapsed: boolean;
}interface RowGroup {
start: number;
end: number;
collapsed: boolean;
}A collapsible row group (data-row range, end-inclusive), Sheets-style.API reference →interface SortKey {
col: number;
ascending: boolean;
}interface SortKey {
col: number;
ascending: boolean;
}interface SortKey {
col: number;
ascending: boolean;
}One key of a multi-column sort, applied in array order (first = primary).API reference →type ColumnFilter =
| { kind: "values"; values: readonly CellScalar[] }
| { kind: "contains"; text: string; matchCase?: boolean }
| {
kind: "compare";
op: "gt" | "gte" | "lt" | "lte" | "eq" | "neq";
value: number;
}
| { kind: "empty" }
| { kind: "nonEmpty" };type ColumnFilter =
| { kind: "values"; values: readonly CellScalar[] }
| { kind: "contains"; text: string; matchCase?: boolean }
| {
kind: "compare";
op: "gt" | "gte" | "lt" | "lte" | "eq" | "neq";
value: number;
}
| { kind: "empty" }
| { kind: "nonEmpty" };type ColumnFilter =
| {
kind: "values";
values: readonly CellScalar[];
}
| {
kind: "contains";
text: string;
matchCase?: boolean;
}
| {
kind: "compare";
op:
| "gt"
| "gte"
| "lt"
| "lte"
| "eq"
| "neq";
// … 4 more lines — see the API reference
}One column's filter predicate. All active column filters AND together; matching is against the cell's resolved value (text or number).API reference →interface DataValidationRule {
id: string;
range: Range;
condition: DataValidationCondition;
policy: ValidationPolicy;
allowBlank?: boolean;
helpText?: string;
}interface DataValidationRule {
id: string;
range: Range;
condition: DataValidationCondition;
policy: ValidationPolicy;
allowBlank?: boolean;
helpText?: string;
}interface DataValidationRule {
id: string;
range: Range;
condition: DataValidationCondition;
policy: ValidationPolicy;
allowBlank?: boolean;
helpText?: string;
}One stable, range-scoped data-entry rule. Blank cells are allowed unless disabled.API reference →interface CellHyperlink {
id: string;
range: Range;
target: HyperlinkTarget;
display?: string;
style?: CellStyle;
}interface CellHyperlink {
id: string;
range: Range;
target: HyperlinkTarget;
display?: string;
style?: CellStyle;
}interface CellHyperlink {
id: string;
range: Range;
target: HyperlinkTarget;
display?: string;
style?: CellStyle;
}Bounded serializable hyperlink metadata applied to one cell or range.API reference →interface ProtectedRange {
id: string;
range: Range;
label?: string;
permissionKey?: string;
}interface ProtectedRange {
id: string;
range: Range;
label?: string;
permissionKey?: string;
}interface ProtectedRange {
id: string;
range: Range;
label?: string;
permissionKey?: string;
}Serializable client UX policy. A host resolver decides whether a local mutation may proceed.API reference →interface NamedRangeSnapshot {
name: string;
scope?: SheetId;
range: Range;
}interface NamedRangeSnapshot {
name: string;
scope?: SheetId;
range: Range;
}interface NamedRangeSnapshot {
name: string;
scope?: SheetId;
range: Range;
}Workbook-global or sheet-scoped named range used by formulas and persistence.API reference →