# UndoRedo

Manages undo/redo stacks for all spreadsheet operations.

## oldData: Preserving Formula ASTs Across Irreversible Transformations

Some structural operations (e.g., removing rows/columns, moving cells) destroy
formula information that cannot be reconstructed from the transformation alone.
For example, when a row is removed, formulas referencing that row are rewritten
to `#REF!` — an irreversible change.

To support undo of such operations, `oldData` stores formula AST references
keyed by the LazilyTransformingAstService version at which the irreversible
transformation was applied. Each entry maps a version number to an array of
`[cellAddress, ast]` pairs. These references keep the original formulas available
independently of parser cache eviction, and are released when the snapshots expire.

### Memory Management

Without cleanup, `oldData` grows indefinitely as undo entries are evicted but
their oldData keys remain. Three mechanisms prevent this:

1. **Eviction cleanup**: When undo entries are evicted (due to `undoLimit`),
   `cleanupOldDataForEntries()` deletes their referenced oldData keys
   (unless still needed by entries on the other stack).
2. **Orphan cleanup**: Compaction may force lazy formula evaluation, which
   writes new oldData entries for already-evicted undo entries. After compaction,
   `cleanupOrphanedOldData()` removes any keys not referenced by entries on
   either stack or the in-progress batch.
3. **Short-circuit**: When `undoLimit` is 0 (undo disabled),
   `storeDataForVersion()` returns immediately to avoid storing data that
   would never be used.

## Constructors

### constructor 

\+ **new UndoRedo**(`config`: [Config](config.md), `operations`: [Operations](operations.md)): *[UndoRedo](undoredo.md)*

*Defined in [src/UndoRedo.ts:506](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L506)*

**Parameters:**

Name | Type |
------ | ------ |
`config` | [Config](config.md) |
`operations` | [Operations](operations.md) |

**Returns:** *[UndoRedo](undoredo.md)*

## Properties

### oldData 

• **oldData**: *Map‹number, [[SimpleCellAddress](../interfaces/simplecelladdress.md), Ast][]›* = new Map()

*Defined in [src/UndoRedo.ts:502](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L502)*

## Methods

### beginBatchMode 

▸ **beginBatchMode**(): *void*

*Defined in [src/UndoRedo.ts:523](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L523)*

**Returns:** *void*

___

### cleanupOrphanedOldData 

▸ **cleanupOrphanedOldData**(): *void*

*Defined in [src/UndoRedo.ts:881](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L881)*

Removes oldData entries whose version keys are not referenced by any
entry on the undo stack, redo stack, or in-progress batch. Called after
compaction forces lazy formula evaluation, which may insert oldData for
already-evicted entries.

**Returns:** *void*

___

### clearRedoStack 

▸ **clearRedoStack**(): *void*

*Defined in [src/UndoRedo.ts:551](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L551)*

Clears the redo stack and removes oldData entries no longer referenced by any remaining entry.

**Returns:** *void*

___

### clearUndoStack 

▸ **clearUndoStack**(): *void*

*Defined in [src/UndoRedo.ts:557](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L557)*

Clears the undo stack and removes oldData entries no longer referenced by any remaining entry.

**Returns:** *void*

___

### commitBatchMode 

▸ **commitBatchMode**(): *void*

*Defined in [src/UndoRedo.ts:527](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L527)*

**Returns:** *void*

___

### isRedoStackEmpty 

▸ **isRedoStackEmpty**(): *boolean*

*Defined in [src/UndoRedo.ts:566](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L566)*

**Returns:** *boolean*

___

### isUndoStackEmpty 

▸ **isUndoStackEmpty**(): *boolean*

*Defined in [src/UndoRedo.ts:562](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L562)*

**Returns:** *boolean*

___

### redo 

▸ **redo**(): *void*

*Defined in [src/UndoRedo.ts:757](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L757)*

**Returns:** *void*

___

### redoAddColumns 

▸ **redoAddColumns**(`operation`: [AddColumnsUndoEntry](addcolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:809](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L809)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddColumnsUndoEntry](addcolumnsundoentry.md) |

**Returns:** *void*

___

### redoAddNamedExpression 

▸ **redoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](addnamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:842](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L842)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddNamedExpressionUndoEntry](addnamedexpressionundoentry.md) |

**Returns:** *void*

___

### redoAddRows 

▸ **redoAddRows**(`operation`: [AddRowsUndoEntry](addrowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:805](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L805)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddRowsUndoEntry](addrowsundoentry.md) |

**Returns:** *void*

___

### redoAddSheet 

▸ **redoAddSheet**(`operation`: [AddSheetUndoEntry](addsheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:817](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L817)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddSheetUndoEntry](addsheetundoentry.md) |

**Returns:** *void*

___

### redoBatch 

▸ **redoBatch**(`batchOperation`: [BatchUndoEntry](batchundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:769](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L769)*

**Parameters:**

Name | Type |
------ | ------ |
`batchOperation` | [BatchUndoEntry](batchundoentry.md) |

**Returns:** *void*

___

### redoChangeNamedExpression 

▸ **redoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](changenamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:850](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L850)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [ChangeNamedExpressionUndoEntry](changenamedexpressionundoentry.md) |

**Returns:** *void*

___

### redoClearSheet 

▸ **redoClearSheet**(`operation`: [ClearSheetUndoEntry](clearsheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:833](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L833)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [ClearSheetUndoEntry](clearsheetundoentry.md) |

**Returns:** *void*

___

### redoMoveCells 

▸ **redoMoveCells**(`operation`: [MoveCellsUndoEntry](movecellsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:779](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L779)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveCellsUndoEntry](movecellsundoentry.md) |

**Returns:** *void*

___

### redoMoveColumns 

▸ **redoMoveColumns**(`operation`: [MoveColumnsUndoEntry](movecolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:829](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L829)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveColumnsUndoEntry](movecolumnsundoentry.md) |

**Returns:** *void*

___

### redoMoveRows 

▸ **redoMoveRows**(`operation`: [MoveRowsUndoEntry](moverowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:825](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L825)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveRowsUndoEntry](moverowsundoentry.md) |

**Returns:** *void*

___

### redoPaste 

▸ **redoPaste**(`operation`: [PasteUndoEntry](pasteundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:787](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L787)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [PasteUndoEntry](pasteundoentry.md) |

**Returns:** *void*

___

### redoRemoveColumns 

▸ **redoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](removecolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:783](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L783)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveColumnsUndoEntry](removecolumnsundoentry.md) |

**Returns:** *void*

___

### redoRemoveNamedExpression 

▸ **redoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](removenamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:846](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L846)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveNamedExpressionUndoEntry](removenamedexpressionundoentry.md) |

**Returns:** *void*

___

### redoRemoveRows 

▸ **redoRemoveRows**(`operation`: [RemoveRowsUndoEntry](removerowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:775](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L775)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveRowsUndoEntry](removerowsundoentry.md) |

**Returns:** *void*

___

### redoRemoveSheet 

▸ **redoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](removesheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:813](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L813)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveSheetUndoEntry](removesheetundoentry.md) |

**Returns:** *void*

___

### redoRenameSheet 

▸ **redoRenameSheet**(`operation`: [RenameSheetUndoEntry](renamesheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:821](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L821)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RenameSheetUndoEntry](renamesheetundoentry.md) |

**Returns:** *void*

___

### redoSetCellContents 

▸ **redoSetCellContents**(`operation`: [SetCellContentsUndoEntry](setcellcontentsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:799](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L799)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetCellContentsUndoEntry](setcellcontentsundoentry.md) |

**Returns:** *void*

___

### redoSetColumnOrder 

▸ **redoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](setcolumnorderundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:858](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L858)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetColumnOrderUndoEntry](setcolumnorderundoentry.md) |

**Returns:** *void*

___

### redoSetRowOrder 

▸ **redoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](setroworderundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:854](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L854)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetRowOrderUndoEntry](setroworderundoentry.md) |

**Returns:** *void*

___

### redoSetSheetContent 

▸ **redoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](setsheetcontentundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:837](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L837)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetSheetContentUndoEntry](setsheetcontentundoentry.md) |

**Returns:** *void*

___

### saveOperation 

▸ **saveOperation**(`operation`: [UndoEntry](../interfaces/undoentry.md)): *void*

*Defined in [src/UndoRedo.ts:515](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L515)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [UndoEntry](../interfaces/undoentry.md) |

**Returns:** *void*

___

### storeDataForVersion 

▸ **storeDataForVersion**(`version`: number, `address`: [SimpleCellAddress](../interfaces/simplecelladdress.md), `ast`: Ast): *void*

*Defined in [src/UndoRedo.ts:539](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L539)*

Retains a formula AST for the given LazilyTransformingAstService version.
Skipped when `undoLimit` is 0 (undo disabled) to avoid storing data that would never be used.

**Parameters:**

Name | Type |
------ | ------ |
`version` | number |
`address` | [SimpleCellAddress](../interfaces/simplecelladdress.md) |
`ast` | Ast |

**Returns:** *void*

___

### undo 

▸ **undo**(): *void*

*Defined in [src/UndoRedo.ts:570](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L570)*

**Returns:** *void*

___

### undoAddColumns 

▸ **undoAddColumns**(`operation`: [AddColumnsUndoEntry](addcolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:627](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L627)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddColumnsUndoEntry](addcolumnsundoentry.md) |

**Returns:** *void*

___

### undoAddNamedExpression 

▸ **undoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](addnamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:737](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L737)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddNamedExpressionUndoEntry](addnamedexpressionundoentry.md) |

**Returns:** *void*

___

### undoAddRows 

▸ **undoAddRows**(`operation`: [AddRowsUndoEntry](addrowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:619](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L619)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddRowsUndoEntry](addrowsundoentry.md) |

**Returns:** *void*

___

### undoAddSheet 

▸ **undoAddSheet**(`operation`: [AddSheetUndoEntry](addsheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:679](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L679)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [AddSheetUndoEntry](addsheetundoentry.md) |

**Returns:** *void*

___

### undoBatch 

▸ **undoBatch**(`batchOperation`: [BatchUndoEntry](batchundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:581](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L581)*

**Parameters:**

Name | Type |
------ | ------ |
`batchOperation` | [BatchUndoEntry](batchundoentry.md) |

**Returns:** *void*

___

### undoChangeNamedExpression 

▸ **undoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](changenamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:745](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L745)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [ChangeNamedExpressionUndoEntry](changenamedexpressionundoentry.md) |

**Returns:** *void*

___

### undoClearSheet 

▸ **undoClearSheet**(`operation`: [ClearSheetUndoEntry](clearsheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:712](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L712)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [ClearSheetUndoEntry](clearsheetundoentry.md) |

**Returns:** *void*

___

### undoMoveCells 

▸ **undoMoveCells**(`operation`: [MoveCellsUndoEntry](movecellsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:667](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L667)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveCellsUndoEntry](movecellsundoentry.md) |

**Returns:** *void*

___

### undoMoveColumns 

▸ **undoMoveColumns**(`operation`: [MoveColumnsUndoEntry](movecolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:660](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L660)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveColumnsUndoEntry](movecolumnsundoentry.md) |

**Returns:** *void*

___

### undoMoveRows 

▸ **undoMoveRows**(`operation`: [MoveRowsUndoEntry](moverowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:653](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L653)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [MoveRowsUndoEntry](moverowsundoentry.md) |

**Returns:** *void*

___

### undoPaste 

▸ **undoPaste**(`operation`: [PasteUndoEntry](pasteundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:646](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L646)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [PasteUndoEntry](pasteundoentry.md) |

**Returns:** *void*

___

### undoRemoveColumns 

▸ **undoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](removecolumnsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:603](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L603)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveColumnsUndoEntry](removecolumnsundoentry.md) |

**Returns:** *void*

___

### undoRemoveNamedExpression 

▸ **undoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](removenamedexpressionundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:741](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L741)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveNamedExpressionUndoEntry](removenamedexpressionundoentry.md) |

**Returns:** *void*

___

### undoRemoveRows 

▸ **undoRemoveRows**(`operation`: [RemoveRowsUndoEntry](removerowsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:587](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L587)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveRowsUndoEntry](removerowsundoentry.md) |

**Returns:** *void*

___

### undoRemoveSheet 

▸ **undoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](removesheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:684](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L684)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RemoveSheetUndoEntry](removesheetundoentry.md) |

**Returns:** *void*

___

### undoRenameSheet 

▸ **undoRenameSheet**(`operation`: [RenameSheetUndoEntry](renamesheetundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:702](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L702)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [RenameSheetUndoEntry](renamesheetundoentry.md) |

**Returns:** *void*

___

### undoSetCellContents 

▸ **undoSetCellContents**(`operation`: [SetCellContentsUndoEntry](setcellcontentsundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:635](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L635)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetCellContentsUndoEntry](setcellcontentsundoentry.md) |

**Returns:** *void*

___

### undoSetColumnOrder 

▸ **undoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](setcolumnorderundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:753](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L753)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetColumnOrderUndoEntry](setcolumnorderundoentry.md) |

**Returns:** *void*

___

### undoSetRowOrder 

▸ **undoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](setroworderundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:749](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L749)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetRowOrderUndoEntry](setroworderundoentry.md) |

**Returns:** *void*

___

### undoSetSheetContent 

▸ **undoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](setsheetcontentundoentry.md)): *void*

*Defined in [src/UndoRedo.ts:724](https://github.com/handsontable/hyperformula/blob/5aaeae0/src/UndoRedo.ts#L724)*

**Parameters:**

Name | Type |
------ | ------ |
`operation` | [SetSheetContentUndoEntry](setsheetcontentundoentry.md) |

**Returns:** *void*