# HyperFormula Documentation > Full documentation corpus for LLM consumption. > Each page below is also served as clean Markdown — append `.md` to a docs page URL. --- ## / URL: https://hyperformula.handsontable.com/docs/

HyperFormula - A headless spreadsheet, a parser and evaluator of Excel formulas

An open-source headless spreadsheet for business web apps

npm total downloads npm monthly downloads GitHub contributors Known Vulnerabilities
FOSSA Status GitHub Workflow Status codecov

--- HyperFormula is a headless spreadsheet built in TypeScript, serving as both a parser and evaluator of spreadsheet formulas. It can be integrated into your browser or utilized as a service with Node.js as your back-end technology. ## What HyperFormula can be used for? HyperFormula doesn't assume any existing user interface, making it a general-purpose library that can be used in various business applications. Here are some examples: - Deterministic compute layer for AI & LLMs - Calculated fields in CRM and ERP software - Custom spreadsheet-like app - Business logic builder - Forms and form builder - Educational app - Online calculator ## Features - [Function syntax compatible with Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md) and [Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md) - High-speed parsing and evaluation of spreadsheet formulas - [A library of ~400 built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Support for custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) - [Support for Node.js](https://hyperformula.handsontable.com/docs/guide/server-side-installation.md#install-with-npm-or-yarn) - [Support for undo/redo](https://hyperformula.handsontable.com/docs/guide/undo-redo.md) - [Support for CRUD operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) - [Support for clipboard](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md) - [Support for named expressions](https://hyperformula.handsontable.com/docs/guide/named-expressions.md) - [Support for data sorting](https://hyperformula.handsontable.com/docs/guide/sorting-data.md) - [Support for formula localization with 17 built-in languages](https://hyperformula.handsontable.com/docs/guide/i18n-features.md) - Easy integration with any front-end or back-end application - GPLv3 or a [commercial license](https://handsontable.com/get-a-quote) - Maintained by the team that stands behind the [Handsontable](https://handsontable.com/) data grid ## Documentation - [Client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) - [Server-side installation](https://hyperformula.handsontable.com/docs/guide/server-side-installation.md) - [Basic usage](https://hyperformula.handsontable.com/docs/guide/basic-usage.md) - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) - [List of built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [API Reference](https://hyperformula.handsontable.com/docs/api/) ## Integrations - [Integration with React](https://hyperformula.handsontable.com/docs/guide/integration-with-react.md#demo) - [Integration with Angular](https://hyperformula.handsontable.com/docs/guide/integration-with-angular.md#demo) - [Integration with Vue](https://hyperformula.handsontable.com/docs/guide/integration-with-vue.md#demo) - [Integration with Svelte](https://hyperformula.handsontable.com/docs/guide/integration-with-svelte.md#demo) ## Installation and usage Install the library from [npm](https://www.npmjs.com/package/hyperformula) like so: ```bash npm install hyperformula ``` Once installed, you can use it to develop applications tailored to your specific business needs. Here, we've used it to craft a form that calculates mortgage payments using the `PMT` formula. ```js import { HyperFormula } from 'hyperformula'; // Create a HyperFormula instance const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3' }); // Add an empty sheet const sheetName = hf.addSheet('Mortgage Calculator'); const sheetId = hf.getSheetId(sheetName); // Enter the mortgage parameters hf.addNamedExpression('AnnualInterestRate', '8%'); hf.addNamedExpression('NumberOfMonths', 360); hf.addNamedExpression('LoanAmount', 800000); // Use the PMT function to calculate the monthly payment hf.setCellContents({ sheet: sheetId, row: 0, col: 0 }, [['Monthly Payment', '=PMT(AnnualInterestRate/12, NumberOfMonths, -LoanAmount)']]); // Display the result console.log(`${hf.getCellValue({ sheet: sheetId, row: 0, col: 0 })}: ${hf.getCellValue({ sheet: sheetId, row: 0, col: 1 })}`); ``` [Run this code in StackBlitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/mortgage-calculator) ## Contributing Contributions are welcome, but before you make them, please read the [Contributing Guide](https://hyperformula.handsontable.com/docs/guide/contributing.md) and accept the [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2). ## License HyperFormula is available under two different licenses: GPLv3 and proprietary. The proprietary license can be purchased by [contacting our team](https://handsontable.com/get-a-quote) at Handsontable. Copyright (c) Handsoncode --- ## /api-ref-readme.html URL: https://hyperformula.handsontable.com/docs/api-ref-readme Welcome to the HyperFormula `v3.3.0` API! The API reference documentation provides detailed information for methods, error types, event types, and all the configuration options available in HyperFormula. Current build: 31/07/2026 18:24:57 ### API reference index The following sections explain shortly what can be found in the left sidebar navigation menu. #### HyperFormula This section contains information about the class for creating HyperFormula instance. It enlists all available public methods alongside their descriptions, parameter types, and examples. The snippet shows an example how to use `buildFromArray` which is one of [three static methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#factories) for creating an instance of HyperFormula: ```javascript const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '91'], ]; const hfInstance = HyperFormula.buildFromArray(sheetData, options); ``` #### ConfigParams This section contains information about options that allow you to configure the instance of HyperFormula. An example set of options: ```javascript const options = { licenseKey: 'gpl-v3', nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; ``` #### Listeners In this section, you can find information about all events you can subscribe to. For example, subscribing to `sheetAdded` event: ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); const handler = ( ) => { console.log('baz') } hfInstance.on('sheetAdded', handler); const nameProvided = hfInstance.addSheet('MySheet3'); ``` --- ## API Reference Overview URL: https://hyperformula.handsontable.com/docs/api/ # API Reference Overview Welcome to the HyperFormula `v3.3.0` API! The API reference documentation provides detailed information for methods, error types, event types, and all the configuration options available in HyperFormula. Current build: 31/07/2026 18:24:57 ### API reference index The following sections explain shortly what can be found in the left sidebar navigation menu. #### HyperFormula This section contains information about the class for creating HyperFormula instance. It enlists all available public methods alongside their descriptions, parameter types, and examples. The snippet shows an example how to use `buildFromArray` which is one of [three static methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#factories) for creating an instance of HyperFormula: ```javascript const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '91'], ]; const hfInstance = HyperFormula.buildFromArray(sheetData, options); ``` #### ConfigParams This section contains information about options that allow you to configure the instance of HyperFormula. An example set of options: ```javascript const options = { licenseKey: 'gpl-v3', nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; ``` #### Listeners In this section, you can find information about all events you can subscribe to. For example, subscribing to `sheetAdded` event: ```javascript const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); const handler = ( ) => { console.log('baz') } hfInstance.on('sheetAdded', handler); const nameProvided = hfInstance.addSheet('MySheet3'); ``` --- ## AbsoluteCellRange URL: https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange # AbsoluteCellRange ## Constructors ### constructor \+ **new AbsoluteCellRange**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:390](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:394](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L394)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:402](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L402)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:398](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`maxColumns`: number, `maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:386](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L386)* **Parameters:** Name | Type | ------ | ------ | `maxColumns` | number | `maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:230](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L230)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:217](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L217)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:255](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L255)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:251](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L251)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:221](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L221)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:212](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:226](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L226)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:247](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L247)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## AbsoluteColumnRange URL: https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange # AbsoluteColumnRange ## Constructors ### constructor \+ **new AbsoluteColumnRange**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* *Defined in [src/AbsoluteCellRange.ts:441](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L441)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:390](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:482](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L482)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:486](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L486)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:398](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`maxColumns`: number, `_maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:478](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L478)* **Parameters:** Name | Type | ------ | ------ | `maxColumns` | number | `_maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:230](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L230)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`_numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:466](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L466)* **Parameters:** Name | Type | ------ | ------ | `_numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:474](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L474)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:251](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L251)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:221](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L221)* **Parameters:** Name | Type | ------ | ------ | `numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`_numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:462](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L462)* **Parameters:** Name | Type | ------ | ------ | `_numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `_byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:470](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L470)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `_byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:458](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L458)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromColumnRange ▸ **fromColumnRange**(`x`: ColumnRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* *Defined in [src/AbsoluteCellRange.ts:449](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L449)* **Parameters:** Name | Type | ------ | ------ | `x` | ColumnRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteColumnRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecolumnrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## AddColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry # AddColumnsUndoEntry ## Constructors ### constructor \+ **new AddColumnsUndoEntry**(`command`: [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)): *[AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:222](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L222)* **Parameters:** Name | Type | ------ | ------ | `command` | [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md) | **Returns:** *[AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)* ## Properties ### command • **command**: *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* *Defined in [src/UndoRedo.ts:224](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L224)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:233](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L233)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:229](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L229)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddRowsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/addrowscommand # AddRowsCommand ## Constructors ### constructor \+ **new AddRowsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* *Defined in [src/Operations.ts:78](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L81)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L80)* ## Methods ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:85](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L85)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### rowsSpans ▸ **rowsSpans**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* *Defined in [src/Operations.ts:89](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L89)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## AddColumnsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand # AddColumnsCommand ## Constructors ### constructor \+ **new AddColumnsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* *Defined in [src/Operations.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:99](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L99)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:98](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L98)* ## Methods ### columnsSpans ▸ **columnsSpans**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* *Defined in [src/Operations.ts:107](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L107)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* ___ ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:103](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L103)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* --- ## AbsoluteRowRange URL: https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange # AbsoluteRowRange ## Constructors ### constructor \+ **new AbsoluteRowRange**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* *Defined in [src/AbsoluteCellRange.ts:495](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L495)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L47)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L60)* **Returns:** *number* ## Methods ### addressInRange ▸ **addressInRange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:157](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L157)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### addresses ▸ **addresses**(`dependencyGraph`: DependencyGraph): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* *Defined in [src/AbsoluteCellRange.ts:315](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[]* ___ ### addressesArrayMap ▸ **addressesArrayMap**‹**T**›(`dependencyGraph`: DependencyGraph, `op`: function): *T[][]* *Defined in [src/AbsoluteCellRange.ts:299](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L299)* **Type parameters:** ▪ **T** **Parameters:** ▪ **dependencyGraph**: *DependencyGraph* ▪ **op**: *function* ▸ (`arg`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### addressesWithDirection ▸ **addressesWithDirection**(`right`: number, `bottom`: number, `dependencyGraph`: DependencyGraph): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/AbsoluteCellRange.ts:331](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `right` | number | `bottom` | number | `dependencyGraph` | DependencyGraph | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### arrayOfAddressesInRange ▸ **arrayOfAddressesInRange**(): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* *Defined in [src/AbsoluteCellRange.ts:275](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L275)* **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)[][]* ___ ### columnInRange ▸ **columnInRange**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L168)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### containsRange ▸ **containsRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:182](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L182)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### doesOverlap ▸ **doesOverlap**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:144](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L144)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### effectiveEndColumn ▸ **effectiveEndColumn**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:536](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L536)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveEndRow ▸ **effectiveEndRow**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:394](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L394)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveHeight ▸ **effectiveHeight**(`_dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:402](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L402)* **Parameters:** Name | Type | ------ | ------ | `_dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### effectiveWidth ▸ **effectiveWidth**(`dependencyGraph`: DependencyGraph): *number* *Defined in [src/AbsoluteCellRange.ts:540](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L540)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *number* ___ ### exceedsSheetSizeLimits ▸ **exceedsSheetSizeLimits**(`_maxColumns`: number, `maxRows`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:532](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L532)* **Parameters:** Name | Type | ------ | ------ | `_maxColumns` | number | `maxRows` | number | **Returns:** *boolean* ___ ### expandByColumns ▸ **expandByColumns**(`_numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:520](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L520)* **Parameters:** Name | Type | ------ | ------ | `_numberOfColumns` | number | **Returns:** *void* ___ ### expandByRows ▸ **expandByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:217](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L217)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### getAddress ▸ **getAddress**(`col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:379](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L379)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/AbsoluteCellRange.ts:267](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L208)* **Parameters:** Name | Type | ------ | ------ | `column` | number | **Returns:** *boolean* ___ ### includesRow ▸ **includesRow**(`row`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *boolean* ___ ### intersectionWith ▸ **intersectionWith**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### isFinite ▸ **isFinite**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L234)* **Parameters:** Name | Type | ------ | ------ | `toSheet` | number | **Returns:** *void* ___ ### rangeWithSameHeight ▸ **rangeWithSameHeight**(`startColumn`: number, `numberOfColumns`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:255](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L255)* **Parameters:** Name | Type | ------ | ------ | `startColumn` | number | `numberOfColumns` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### rangeWithSameWidth ▸ **rangeWithSameWidth**(`startRow`: number, `numberOfRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:528](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L528)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `numberOfRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### removeSpan ▸ **removeSpan**(`span`: [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span)): *void* *Defined in [src/AbsoluteCellRange.ts:239](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L239)* **Parameters:** Name | Type | ------ | ------ | `span` | [Span](https://hyperformula.handsontable.com/docs/api/globals.md#span) | **Returns:** *void* ___ ### rowInRange ▸ **rowInRange**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:175](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### sameAs ▸ **sameAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:295](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *boolean* *Defined in [src/AbsoluteCellRange.ts:291](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `other` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *boolean* ___ ### shiftByColumns ▸ **shiftByColumns**(`_numberOfColumns`: number): *void* *Defined in [src/AbsoluteCellRange.ts:516](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L516)* **Parameters:** Name | Type | ------ | ------ | `_numberOfColumns` | number | **Returns:** *void* ___ ### shiftByRows ▸ **shiftByRows**(`numberOfRows`: number): *void* *Defined in [src/AbsoluteCellRange.ts:212](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `numberOfRows` | number | **Returns:** *void* ___ ### shifted ▸ **shifted**(`byCols`: number, `byRows`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:524](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L524)* **Parameters:** Name | Type | ------ | ------ | `byCols` | number | `byRows` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### shouldBeRemoved ▸ **shouldBeRemoved**(): *boolean* *Defined in [src/AbsoluteCellRange.ts:512](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L512)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L263)* **Returns:** *number* ___ ### withStart ▸ **withStart**(`newStart`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:287](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L287)* **Parameters:** Name | Type | ------ | ------ | `newStart` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAst ▸ **fromAst**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromAstOrUndef ▸ **fromAstOrUndef**(`ast`: CellRangeAst | ColumnRangeAst | RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:93](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L93)* **Parameters:** Name | Type | ------ | ------ | `ast` | CellRangeAst | ColumnRangeAst | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* ___ ### fromCellRange ▸ **fromCellRange**(`x`: [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md), `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `x` | [CellRange](https://hyperformula.handsontable.com/docs/api/interfaces/cellrange.md) | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromCoordinates ▸ **fromCoordinates**(`sheet`: number, `x1`: number, `y1`: number, `x2`: number, `y2`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `x1` | number | `y1` | number | `x2` | number | `y2` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### fromRowRangeAst ▸ **fromRowRangeAst**(`x`: RowRangeAst, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* *Defined in [src/AbsoluteCellRange.ts:503](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L503)* **Parameters:** Name | Type | ------ | ------ | `x` | RowRangeAst | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteRowRange](https://hyperformula.handsontable.com/docs/api/classes/absoluterowrange.md)* ___ ### fromSimpleCellAddresses ▸ **fromSimpleCellAddresses**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFrom ▸ **spanFrom**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/AbsoluteCellRange.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* ___ ### spanFromOrUndef ▸ **spanFromOrUndef**(`topLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* *Defined in [src/AbsoluteCellRange.ts:116](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L116)* **Parameters:** Name | Type | ------ | ------ | `topLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)›* --- ## AddSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry # AddSheetUndoEntry ## Constructors ### constructor \+ **new AddSheetUndoEntry**(`sheetName`: string, `sheetId`: number): *[AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)* *Defined in [src/UndoRedo.ts:259](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L259)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | `sheetId` | number | **Returns:** *[AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)* ## Properties ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:262](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L262)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:261](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L261)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:271](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L271)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:267](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L267)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry # AddRowsUndoEntry ## Constructors ### constructor \+ **new AddRowsUndoEntry**(`command`: [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)): *[AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)* *Defined in [src/UndoRedo.ts:94](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L94)* **Parameters:** Name | Type | ------ | ------ | `command` | [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md) | **Returns:** *[AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)* ## Properties ### command • **command**: *[AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)* *Defined in [src/UndoRedo.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L96)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L105)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AddNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry # AddNamedExpressionUndoEntry ## Constructors ### constructor \+ **new AddNamedExpressionUndoEntry**(`name`: string, `newContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:385](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L385)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `newContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `scope?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)* ## Properties ### name • **name**: *string* *Defined in [src/UndoRedo.ts:387](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L387)* ___ ### newContent • **newContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/UndoRedo.ts:388](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L388)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/UndoRedo.ts:390](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L390)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:389](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L389)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:399](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L399)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:395](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L395)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## AdvancedFind URL: https://hyperformula.handsontable.com/docs/api/classes/advancedfind # AdvancedFind ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* --- ## AliasAlreadyExisting URL: https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting # AliasAlreadyExisting Error thrown when alias to a function is already defined. **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) ## Constructors ### constructor \+ **new AliasAlreadyExisting**(`name`: string, `pluginName`: string): *[AliasAlreadyExisting](https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting.md)* *Defined in [src/errors.ts:390](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `pluginName` | string | **Returns:** *[AliasAlreadyExisting](https://hyperformula.handsontable.com/docs/api/classes/aliasalreadyexisting.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ArrayValue URL: https://hyperformula.handsontable.com/docs/api/classes/arrayvalue # ArrayValue ## Constructors ### constructor \+ **new ArrayValue**(`array`: InternalScalarValue[][]): *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)* *Defined in [src/ArrayValue.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `array` | InternalScalarValue[][] | **Returns:** *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L46)* ## Methods ### addColumns ▸ **addColumns**(`aboveColumn`: number, `numberOfColumns`: number): *void* *Defined in [src/ArrayValue.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L75)* **Parameters:** Name | Type | ------ | ------ | `aboveColumn` | number | `numberOfColumns` | number | **Returns:** *void* ___ ### addRows ▸ **addRows**(`aboveRow`: number, `numberOfRows`: number): *void* *Defined in [src/ArrayValue.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L70)* **Parameters:** Name | Type | ------ | ------ | `aboveRow` | number | `numberOfRows` | number | **Returns:** *void* ___ ### get ▸ **get**(`col`: number, `row`: number): *InternalScalarValue* *Defined in [src/ArrayValue.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *InternalScalarValue* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L128)* **Returns:** *number* ___ ### nullArrays ▸ **nullArrays**(`count`: number, `size`: number): *any[][]* *Defined in [src/ArrayValue.ts:102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L102)* **Parameters:** Name | Type | ------ | ------ | `count` | number | `size` | number | **Returns:** *any[][]* ___ ### raw ▸ **raw**(): *InternalScalarValue[][]* *Defined in [src/ArrayValue.ts:132](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L132)* **Returns:** *InternalScalarValue[][]* ___ ### removeColumns ▸ **removeColumns**(`leftmostColumn`: number, `rightmostColumn`: number): *void* *Defined in [src/ArrayValue.ts:91](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L91)* **Parameters:** Name | Type | ------ | ------ | `leftmostColumn` | number | `rightmostColumn` | number | **Returns:** *void* ___ ### removeRows ▸ **removeRows**(`startRow`: number, `endRow`: number): *void* *Defined in [src/ArrayValue.ts:82](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L82)* **Parameters:** Name | Type | ------ | ------ | `startRow` | number | `endRow` | number | **Returns:** *void* ___ ### resize ▸ **resize**(`newSize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *void* *Defined in [src/ArrayValue.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L136)* **Parameters:** Name | Type | ------ | ------ | `newSize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *void* ___ ### set ▸ **set**(`col`: number, `row`: number, `value`: number): *void* *Defined in [src/ArrayValue.ts:117](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L117)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | `value` | number | **Returns:** *void* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/ArrayValue.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L66)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:124](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L124)* **Returns:** *number* ___ ### fromInterpreterValue ▸ **fromInterpreterValue**(`value`: InterpreterValue): *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)‹›* *Defined in [src/ArrayValue.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)‹›* --- ## BaseUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/baseundoentry # BaseUndoEntry ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ArraySizePredictor URL: https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor # ArraySizePredictor ## Constructors ### constructor \+ **new ArraySizePredictor**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `functionRegistry`: FunctionRegistry): *[ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)* *Defined in [src/ArraySize.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `functionRegistry` | FunctionRegistry | **Returns:** *[ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)* ## Methods ### checkArraySize ▸ **checkArraySize**(`ast`: Ast, `formulaAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `formulaAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### checkArraySizeForAst ▸ **checkArraySizeForAst**(`ast`: Ast, `state`: InterpreterState): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `state` | InterpreterState | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* --- ## Boolean URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean # Boolean ## Constructors ### constructor \+ **new Boolean**(`value`: boolean): *[Boolean](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean.md)* *Defined in [src/CellContentParser.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `value` | boolean | **Returns:** *[Boolean](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.boolean.md)* ## Properties ### value • **value**: *boolean* *Defined in [src/CellContentParser.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L40)* --- ## Empty URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty # Empty ## Methods ### getSingletonInstance ▸ **getSingletonInstance**(): *[Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md)‹›* *Defined in [src/CellContentParser.ts:48](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L48)* **Returns:** *[Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md)‹›* --- ## Number URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number # Number ## Constructors ### constructor \+ **new Number**(`value`: ExtendedNumber): *[Number](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number.md)* *Defined in [src/CellContentParser.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L28)* **Parameters:** Name | Type | ------ | ------ | `value` | ExtendedNumber | **Returns:** *[Number](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.number.md)* ## Properties ### value • **value**: *ExtendedNumber* *Defined in [src/CellContentParser.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L29)* --- ## Error URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error # Error ## Constructors ### constructor \+ **new Error**(`errorType`: [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), `message?`: undefined | string): *[Error](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error.md)* *Defined in [src/CellContentParser.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L62)* **Parameters:** Name | Type | ------ | ------ | `errorType` | [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype) | `message?` | undefined | string | **Returns:** *[Error](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.error.md)* ## Properties ### value • **value**: *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/CellContentParser.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L62)* --- ## Formula URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula # Formula ## Constructors ### constructor \+ **new Formula**(`formula`: string): *[Formula](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula.md)* *Defined in [src/CellContentParser.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `formula` | string | **Returns:** *[Formula](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.formula.md)* ## Properties ### formula • **formula**: *string* *Defined in [src/CellContentParser.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L57)* --- ## BatchUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/batchundoentry # BatchUndoEntry ## Properties ### operations • **operations**: *[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)[]* = [] *Defined in [src/UndoRedo.ts:443](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L443)* ## Methods ### add ▸ **add**(`operation`: [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)): *void* *Defined in [src/UndoRedo.ts:445](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L445)* **Parameters:** Name | Type | ------ | ------ | `operation` | [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md) | **Returns:** *void* ___ ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:459](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L459)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:455](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L455)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:463](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L463)* **Returns:** *number[]* ___ ### reversedOperations ▸ **reversedOperations**(): *Generator‹[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md), void, unknown›* *Defined in [src/UndoRedo.ts:449](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L449)* **Returns:** *Generator‹[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md), void, unknown›* --- ## String URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string # String ## Constructors ### constructor \+ **new String**(`value`: string): *[String](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string.md)* *Defined in [src/CellContentParser.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `value` | string | **Returns:** *[String](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.string.md)* ## Properties ### value • **value**: *string* *Defined in [src/CellContentParser.ts:35](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L35)* --- ## ChangeNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry # ChangeNamedExpressionUndoEntry ## Constructors ### constructor \+ **new ChangeNamedExpressionUndoEntry**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `newContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `oldContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:422](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L422)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `newContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `oldContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `scope?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)* ## Properties ### namedExpression • **namedExpression**: *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/UndoRedo.ts:424](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L424)* ___ ### newContent • **newContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/UndoRedo.ts:425](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L425)* ___ ### oldContent • **oldContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/UndoRedo.ts:426](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L426)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/UndoRedo.ts:428](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L428)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:427](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L427)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:437](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L437)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:433](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L433)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ArraySize URL: https://hyperformula.handsontable.com/docs/api/classes/arraysize # ArraySize ## Constructors ### constructor \+ **new ArraySize**(`width`: number, `height`: number, `isRef`: boolean): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L14)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `width` | number | - | `height` | number | - | `isRef` | boolean | false | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ## Properties ### height • **height**: *number* *Defined in [src/ArraySize.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L17)* ___ ### isRef • **isRef**: *boolean* *Defined in [src/ArraySize.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L18)* ___ ### width • **width**: *number* *Defined in [src/ArraySize.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L16)* ## Methods ### isScalar ▸ **isScalar**(): *boolean* *Defined in [src/ArraySize.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L29)* **Returns:** *boolean* ___ ### error ▸ **error**(): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* *Defined in [src/ArraySize.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L21)* **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* ___ ### scalar ▸ **scalar**(): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* *Defined in [src/ArraySize.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L25)* **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* --- ## CellError URL: https://hyperformula.handsontable.com/docs/api/classes/cellerror # CellError ## Constructors ### constructor \+ **new CellError**(`type`: [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), `message?`: undefined | string, `root?`: FormulaVertex): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:149](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L149)* **Parameters:** Name | Type | ------ | ------ | `type` | [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype) | `message?` | undefined | string | `root?` | FormulaVertex | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ## Properties ### message • **message**? : *undefined | string* *Defined in [src/Cell.ts:152](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L152)* ___ ### root • **root**? : *FormulaVertex* *Defined in [src/Cell.ts:153](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L153)* ___ ### type • **type**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)* *Defined in [src/Cell.ts:151](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L151)* ## Methods ### attachRootVertex ▸ **attachRootVertex**(`vertex`: FormulaVertex): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:165](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L165)* **Parameters:** Name | Type | ------ | ------ | `vertex` | FormulaVertex | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### parsingError ▸ **parsingError**(`detailedMessage?`: undefined | string): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/Cell.ts:161](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L161)* Returns a CellError with a given message. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `detailedMessage?` | undefined | string | message to be displayed | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* --- ## ClearSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry # ClearSheetUndoEntry ## Constructors ### constructor \+ **new ClearSheetUndoEntry**(`sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]): *[ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)* *Defined in [src/UndoRedo.ts:329](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L329)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | **Returns:** *[ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)* ## Properties ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:332](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L332)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:331](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L331)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:341](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L341)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:337](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L337)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## CellContentParser URL: https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser # CellContentParser ## Constructors ### constructor \+ **new CellContentParser**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dateHelper`: [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md), `numberLiteralsHelper`: [NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)): *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* *Defined in [src/CellContentParser.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dateHelper` | [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md) | `numberLiteralsHelper` | [NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md) | **Returns:** *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* ## Methods ### parse ▸ **parse**(`content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[Type](https://hyperformula.handsontable.com/docs/api/modules/cellcontent.md#type)* *Defined in [src/CellContentParser.ts:99](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L99)* **Parameters:** Name | Type | ------ | ------ | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *[Type](https://hyperformula.handsontable.com/docs/api/modules/cellcontent.md#type)* --- ## BuildEngineFactory URL: https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory # BuildEngineFactory ## Methods ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/BuildEngineFactory.ts#L62)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### buildFromSheet ▸ **buildFromSheet**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/BuildEngineFactory.ts#L56)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/BuildEngineFactory.ts#L51)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* ___ ### rebuildWithConfig ▸ **rebuildWithConfig**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[], `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* *Defined in [src/BuildEngineFactory.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/BuildEngineFactory.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[EngineState](https://hyperformula.handsontable.com/docs/api/globals.md#enginestate)* --- ## ClipboardOperations URL: https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations # ClipboardOperations ## Constructors ### constructor \+ **new ClipboardOperations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dependencyGraph`: DependencyGraph, `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)): *[ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md)* *Defined in [src/ClipboardOperations.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dependencyGraph` | DependencyGraph | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | **Returns:** *[ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md)* ## Properties ### clipboard • **clipboard**? : *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* *Defined in [src/ClipboardOperations.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L75)* ## Methods ### abortCut ▸ **abortCut**(): *void* *Defined in [src/ClipboardOperations.ts:107](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L107)* **Returns:** *void* ___ ### clear ▸ **clear**(): *void* *Defined in [src/ClipboardOperations.ts:113](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L113)* **Returns:** *void* ___ ### copy ▸ **copy**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/ClipboardOperations.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### cut ▸ **cut**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/ClipboardOperations.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToCopyPaste ▸ **ensureItIsPossibleToCopyPaste**(`destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/ClipboardOperations.ts:117](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L117)* **Parameters:** Name | Type | ------ | ------ | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### isCopyClipboard ▸ **isCopyClipboard**(): *boolean* *Defined in [src/ClipboardOperations.ts:141](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L141)* **Returns:** *boolean* ___ ### isCutClipboard ▸ **isCutClipboard**(): *boolean* *Defined in [src/ClipboardOperations.ts:137](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L137)* **Returns:** *boolean* --- ## Clipboard URL: https://hyperformula.handsontable.com/docs/api/classes/clipboard # Clipboard ## Constructors ### constructor \+ **new Clipboard**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `type`: [ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md), `content?`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]): *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* *Defined in [src/ClipboardOperations.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L51)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `type` | [ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md) | `content?` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | **Returns:** *[Clipboard](https://hyperformula.handsontable.com/docs/api/classes/clipboard.md)* ## Properties ### content • **content**? : *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/ClipboardOperations.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L57)* ___ ### height • **height**: *number* *Defined in [src/ClipboardOperations.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L55)* ___ ### sourceLeftCorner • **sourceLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/ClipboardOperations.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L53)* ___ ### type • **type**: *[ClipboardOperationType](https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype.md)* *Defined in [src/ClipboardOperations.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L56)* ___ ### width • **width**: *number* *Defined in [src/ClipboardOperations.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L54)* ## Methods ### getContent ▸ **getContent**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›* *Defined in [src/ClipboardOperations.ts:61](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L61)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›* --- ## ColumnBinarySearch URL: https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch # ColumnBinarySearch ## Constructors ### constructor \+ **new ColumnBinarySearch**(`dependencyGraph`: DependencyGraph): *[ColumnBinarySearch](https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch.md)* *Defined in [src/Lookup/ColumnBinarySearch.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L15)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[ColumnBinarySearch](https://hyperformula.handsontable.com/docs/api/classes/columnbinarysearch.md)* ## Methods ### add ▸ **add**(`value`: RawScalarValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `value` | RawScalarValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L37)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L33)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawScalarValue | undefined, `newValue`: RawScalarValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawScalarValue | undefined | `newValue` | RawScalarValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `searchOptions`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/ColumnBinarySearch.ts:69](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L69)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `rangeValue` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `searchOptions` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L63)* No-op: ColumnBinarySearch reads cell values directly from the dependency graph on every lookup, so it has no cached data that could become stale. Unlike ColumnIndex, which maintains a separate value-to-address index that must be kept in sync with lazy transformations, binary search always operates on the current graph state. **Returns:** *void* ___ ### moveValues ▸ **moveValues**(`sourceRange`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `sourceRange` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawScalarValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L25)* **Parameters:** Name | Type | ------ | ------ | `value` | RawScalarValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:41](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L41)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/ColumnBinarySearch.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnBinarySearch.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## ConfigValueEmpty URL: https://hyperformula.handsontable.com/docs/api/classes/configvalueempty # ConfigValueEmpty Error thrown when supplied config parameter value is an empty string. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueEmpty**(`paramName`: string): *[ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md)* *Defined in [src/errors.ts:193](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L193)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | **Returns:** *[ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ConfigValueTooBigError URL: https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror # ConfigValueTooBigError Error thrown when supplied config parameter value is too big. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueTooBigError**(`paramName`: string, `maximum`: number): *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* *Defined in [src/errors.ts:225](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L225)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | `maximum` | number | **Returns:** *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ConfigValueTooSmallError URL: https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror # ConfigValueTooSmallError Error thrown when supplied config parameter value is too small. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ConfigValueTooSmallError**(`paramName`: string, `minimum`: number): *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* *Defined in [src/errors.ts:209](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `paramName` | string | `minimum` | number | **Returns:** *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ContentChanges URL: https://hyperformula.handsontable.com/docs/api/classes/contentchanges # ContentChanges ## Methods ### addAll ▸ **addAll**(`other`: [ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/ContentChanges.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `other` | [ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md) | **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### addChange ▸ **addChange**(`newValue`: InterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `oldValue?`: InterpreterValue): *void* *Defined in [src/ContentChanges.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `newValue` | InterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `oldValue?` | InterpreterValue | **Returns:** *void* ___ ### exportChanges ▸ **exportChanges**‹**T**›(`exporter`: [ChangeExporter](https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter.md)‹T›): *T[]* *Defined in [src/ContentChanges.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L40)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `exporter` | [ChangeExporter](https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter.md)‹T› | **Returns:** *T[]* ___ ### getChanges ▸ **getChanges**(): *[ChangeList](https://hyperformula.handsontable.com/docs/api/globals.md#changelist)* *Defined in [src/ContentChanges.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L53)* **Returns:** *[ChangeList](https://hyperformula.handsontable.com/docs/api/globals.md#changelist)* ___ ### isEmpty ▸ **isEmpty**(): *boolean* *Defined in [src/ContentChanges.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L57)* **Returns:** *boolean* ___ ### empty ▸ **empty**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)‹›* *Defined in [src/ContentChanges.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L25)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)‹›* --- ## CrudOperations URL: https://hyperformula.handsontable.com/docs/api/classes/crudoperations # CrudOperations ## Constructors ### constructor \+ **new CrudOperations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md), `undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md), `clipboardOperations`: [ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)): *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* *Defined in [src/CrudOperations.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L70)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | `clipboardOperations` | [ClipboardOperations](https://hyperformula.handsontable.com/docs/api/classes/clipboardoperations.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | **Returns:** *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* ## Properties ### operations • **operations**: *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* *Defined in [src/CrudOperations.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L74)* ___ ### undoRedo • **undoRedo**: *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/CrudOperations.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L75)* ## Methods ### addColumns ▸ **addColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/CrudOperations.ts:382](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L382)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### addRows ▸ **addRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### addSheet ▸ **addSheet**(`name?`: undefined | string): *string* *Defined in [src/CrudOperations.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `name?` | undefined | string | **Returns:** *string* ___ ### beginUndoRedoBatchMode ▸ **beginUndoRedoBatchMode**(): *void* *Defined in [src/CrudOperations.ts:188](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L188)* **Returns:** *void* ___ ### changeNamedExpressionExpression ▸ **changeNamedExpressionExpression**(`expressionName`: string, `sheetId`: number | undefined, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/CrudOperations.ts:390](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L390)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | undefined | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/CrudOperations.ts:200](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L200)* **Returns:** *void* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *void* *Defined in [src/CrudOperations.ts:240](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L240)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### commitUndoRedoBatchMode ▸ **commitUndoRedoBatchMode**(): *void* *Defined in [src/CrudOperations.ts:192](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L192)* **Returns:** *void* ___ ### copy ▸ **copy**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:167](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L167)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### cut ▸ **cut**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:154](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L154)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToAddColumns ▸ **ensureItIsPossibleToAddColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:462](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L462)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToAddNamedExpression ▸ **ensureItIsPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:408](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L408)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### ensureItIsPossibleToAddRows ▸ **ensureItIsPossibleToAddRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:429](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L429)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToAddSheet ▸ **ensureItIsPossibleToAddSheet**(`name`: string): *void* *Defined in [src/CrudOperations.ts:550](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L550)* **Parameters:** Name | Type | ------ | ------ | `name` | string | **Returns:** *void* ___ ### ensureItIsPossibleToChangeCellContents ▸ **ensureItIsPossibleToChangeCellContents**(`inputAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:576](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L576)* **Parameters:** Name | Type | ------ | ------ | `inputAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### ensureItIsPossibleToChangeContent ▸ **ensureItIsPossibleToChangeContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:567](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L567)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### ensureItIsPossibleToChangeNamedExpression ▸ **ensureItIsPossibleToChangeNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:414](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L414)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### ensureItIsPossibleToChangeSheetContents ▸ **ensureItIsPossibleToChangeSheetContents**(`sheetId`: number, `content`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:585](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L585)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `content` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### ensureItIsPossibleToCopy ▸ **ensureItIsPossibleToCopy**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *void* *Defined in [src/CrudOperations.ts:158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveColumns ▸ **ensureItIsPossibleToMoveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *void* *Defined in [src/CrudOperations.ts:523](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L523)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveRows ▸ **ensureItIsPossibleToMoveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *void* *Defined in [src/CrudOperations.ts:496](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L496)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *void* ___ ### ensureItIsPossibleToRemoveColumns ▸ **ensureItIsPossibleToRemoveColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:480](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L480)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToRemoveRows ▸ **ensureItIsPossibleToRemoveRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:447](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L447)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### ensureItIsPossibleToRenameSheet ▸ **ensureItIsPossibleToRenameSheet**(`sheetId`: number, `name`: string): *void* *Defined in [src/CrudOperations.ts:556](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L556)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### ensureRangeInSizeLimits ▸ **ensureRangeInSizeLimits**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *void* *Defined in [src/CrudOperations.ts:591](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L591)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *void* ___ ### ensureScopeIdIsValid ▸ **ensureScopeIdIsValid**(`scopeId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:609](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L609)* **Parameters:** Name | Type | ------ | ------ | `scopeId?` | undefined | number | **Returns:** *void* ___ ### getAndClearContentChanges ▸ **getAndClearContentChanges**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/CrudOperations.ts:605](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L605)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/CrudOperations.ts:196](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L196)* **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *void* *Defined in [src/CrudOperations.ts:422](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L422)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/CrudOperations.ts:601](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L601)* **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/CrudOperations.ts:597](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L597)* **Returns:** *boolean* ___ ### mappingFromOrder ▸ **mappingFromOrder**(`sheetId`: number, `newOrder`: number[], `rowOrColumn`: "row" | "column"): *[number, number][]* *Defined in [src/CrudOperations.ts:349](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L349)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newOrder` | number[] | `rowOrColumn` | "row" | "column" | **Returns:** *[number, number][]* ___ ### moveCells ▸ **moveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L128)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### moveColumns ▸ **moveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *void* *Defined in [src/CrudOperations.ts:147](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L147)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *void* ___ ### moveRows ▸ **moveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *void* *Defined in [src/CrudOperations.ts:139](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L139)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *void* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/CrudOperations.ts:172](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L172)* **Parameters:** Name | Type | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### redo ▸ **redo**(): *void* *Defined in [src/CrudOperations.ts:374](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L374)* **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:119](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L119)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/CrudOperations.ts:398](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L398)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### removeRows ▸ **removeRows**(`sheet`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *void* *Defined in [src/CrudOperations.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/CrudOperations.ts:214](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L214)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/CrudOperations.ts:224](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L224)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *void* *Defined in [src/CrudOperations.ts:249](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L249)* **Parameters:** Name | Type | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *void* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:322](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L322)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:295](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/CrudOperations.ts:283](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L283)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### testColumnOrderForArrays ▸ **testColumnOrderForArrays**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:311](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L311)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### testRowOrderForArrays ▸ **testRowOrderForArrays**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:338](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L338)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* ___ ### undo ▸ **undo**(): *void* *Defined in [src/CrudOperations.ts:366](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L366)* **Returns:** *void* ___ ### validateSwapColumnIndexes ▸ **validateSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:331](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L331)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *void* ___ ### validateSwapRowIndexes ▸ **validateSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *void* *Defined in [src/CrudOperations.ts:304](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L304)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* --- ## DetailedCellError URL: https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror # DetailedCellError ## Constructors ### constructor \+ **new DetailedCellError**(`error`: [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md), `value`: string, `address?`: undefined | string): *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* *Defined in [src/CellValue.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L13)* **Parameters:** Name | Type | ------ | ------ | `error` | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) | `value` | string | `address?` | undefined | string | **Returns:** *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* ## Properties ### address • **address**? : *undefined | string* *Defined in [src/CellValue.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L18)* ___ ### message • **message**: *string* *Defined in [src/CellValue.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L13)* ___ ### type • **type**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)* *Defined in [src/CellValue.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L12)* ___ ### value • **value**: *string* *Defined in [src/CellValue.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L17)* ## Methods ### toString ▸ **toString**(): *string* *Defined in [src/CellValue.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L24)* **Returns:** *string* ___ ### valueOf ▸ **valueOf**(): *string* *Defined in [src/CellValue.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L28)* **Returns:** *string* --- ## DateTimeHelper URL: https://hyperformula.handsontable.com/docs/api/classes/datetimehelper # DateTimeHelper ## Constructors ### constructor \+ **new DateTimeHelper**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *[DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)* *Defined in [src/DateTimeHelper.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *[DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)* ## Methods ### dateStringToDateNumber ▸ **dateStringToDateNumber**(`dateTimeString`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹ExtendedNumber›* *Defined in [src/DateTimeHelper.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹ExtendedNumber›* ___ ### dateToNumber ▸ **dateToNumber**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *number* *Defined in [src/DateTimeHelper.ts:131](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L131)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *number* ___ ### daysInMonth ▸ **daysInMonth**(`year`: number, `month`: number): *number* *Defined in [src/DateTimeHelper.ts:167](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L167)* **Parameters:** Name | Type | ------ | ------ | `year` | number | `month` | number | **Returns:** *number* ___ ### endOfMonth ▸ **endOfMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:175](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L175)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### getEpochYearZero ▸ **getEpochYearZero**(): *number* *Defined in [src/DateTimeHelper.ts:109](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L109)* **Returns:** *number* ___ ### getNullYear ▸ **getNullYear**(): *number* *Defined in [src/DateTimeHelper.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L105)* **Returns:** *number* ___ ### getWithinBounds ▸ **getWithinBounds**(`dayNumber`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* *Defined in [src/DateTimeHelper.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `dayNumber` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* ___ ### isValidDate ▸ **isValidDate**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *boolean* *Defined in [src/DateTimeHelper.ts:113](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *boolean* ___ ### leapYearsCount ▸ **leapYearsCount**(`year`: number): *number* *Defined in [src/DateTimeHelper.ts:163](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L163)* **Parameters:** Name | Type | ------ | ------ | `year` | number | **Returns:** *number* ___ ### numberToSimpleDate ▸ **numberToSimpleDate**(`arg`: number): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:139](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L139)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### numberToSimpleDateTime ▸ **numberToSimpleDateTime**(`arg`: number): *[SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* *Defined in [src/DateTimeHelper.ts:154](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L154)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* ___ ### parseDateTimeFromConfigFormats ▸ **parseDateTimeFromConfigFormats**(`dateTimeString`: string): *Partial‹object›* *Defined in [src/DateTimeHelper.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | **Returns:** *Partial‹object›* ___ ### relativeNumberToAbsoluteNumber ▸ **relativeNumberToAbsoluteNumber**(`arg`: number): *number* *Defined in [src/DateTimeHelper.ts:135](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L135)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *number* ___ ### toBasisUS ▸ **toBasisUS**(`start`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `end`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)]* *Defined in [src/DateTimeHelper.ts:179](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L179)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `end` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)]* ___ ### yearLengthForBasis ▸ **yearLengthForBasis**(`start`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `end`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *number* *Defined in [src/DateTimeHelper.ts:195](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L195)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `end` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *number* --- ## ErroredArray URL: https://hyperformula.handsontable.com/docs/api/classes/erroredarray # ErroredArray ## Constructors ### constructor \+ **new ErroredArray**(`error`: [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md), `size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ErroredArray](https://hyperformula.handsontable.com/docs/api/classes/erroredarray.md)* *Defined in [src/ArrayValue.ts:156](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L156)* **Parameters:** Name | Type | ------ | ------ | `error` | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) | `size` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ErroredArray](https://hyperformula.handsontable.com/docs/api/classes/erroredarray.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:159](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L159)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:164](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L164)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:172](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L172)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:176](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L176)* **Returns:** *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L168)* **Returns:** *number* --- ## EvaluationSuspendedError URL: https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror # EvaluationSuspendedError Error thrown when computations become suspended. To perform any other action wait for the batch to complete or resume the evaluation. Relates to: **`see`** [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) **`see`** [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#suspendevaluation) **`see`** [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation) ## Constructors ### constructor \+ **new EvaluationSuspendedError**(): *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* *Defined in [src/errors.ts:257](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L257)* **Returns:** *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## Emitter URL: https://hyperformula.handsontable.com/docs/api/classes/emitter # Emitter ## Methods ### emit ▸ **emit**‹**Event**›(`event`: Event, ...`args`: Parameters‹Listeners[Event]›): *this* *Defined in [src/Emitter.ts:328](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L328)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `event` | Event | `...args` | Parameters‹Listeners[Event]› | **Returns:** *this* ___ ### off ▸ **off**(`event`: string, `callback?`: Function): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback?` | Function | **Returns:** *this* ___ ### on ▸ **on**(`event`: string, `callback`: Function, `ctx?`: any): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback` | Function | `ctx?` | any | **Returns:** *this* ___ ### once ▸ **once**(`event`: string, `callback`: Function, `ctx?`: any): *this* **Parameters:** Name | Type | ------ | ------ | `event` | string | `callback` | Function | `ctx?` | any | **Returns:** *this* --- ## ErrorMessage URL: https://hyperformula.handsontable.com/docs/api/classes/errormessage # ErrorMessage This is a class for detailed error messages across HyperFormula. ## Properties ### ArrayDimensions ▪ **ArrayDimensions**: *string* = "Array dimensions are not compatible." *Defined in [src/error-message.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L14)* ___ ### BadCriterion ▪ **BadCriterion**: *string* = "Incorrect criterion." *Defined in [src/error-message.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L18)* ___ ### BadMode ▪ **BadMode**: *string* = "Mode not recognized." *Defined in [src/error-message.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L26)* ___ ### BadRef ▪ **BadRef**: *string* = "Address is not correct." *Defined in [src/error-message.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L39)* ___ ### BitshiftLong ▪ **BitshiftLong**: *string* = "Result of bitshift is too long." *Defined in [src/error-message.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L58)* ___ ### CellRangeExpected ▪ **CellRangeExpected**: *string* = "Cell range expected." *Defined in [src/error-message.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L20)* ___ ### CellRefExpected ▪ **CellRefExpected**: *string* = "Cell reference expected." *Defined in [src/error-message.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L37)* ___ ### CharacterCodeBounds ▪ **CharacterCodeBounds**: *string* = "Character code out of bounds." *Defined in [src/error-message.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L67)* ___ ### ComplexNumberExpected ▪ **ComplexNumberExpected**: *string* = "Complex number expected." *Defined in [src/error-message.ts:73](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L73)* ___ ### DateBounds ▪ **DateBounds**: *string* = "Date outside of bounds." *Defined in [src/error-message.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L27)* ___ ### DistinctSigns ▪ **DistinctSigns**: *string* = "Distinct signs." *Defined in [src/error-message.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L10)* ___ ### EmptyArg ▪ **EmptyArg**: *string* = "Empty function argument." *Defined in [src/error-message.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L12)* ___ ### EmptyArray ▪ **EmptyArray**: *string* = "Empty array not allowed." *Defined in [src/error-message.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L13)* ___ ### EmptyRange ▪ **EmptyRange**: *string* = "Empty range not allowed." *Defined in [src/error-message.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L38)* ___ ### EmptyString ▪ **EmptyString**: *string* = "Empty-string argument not allowed." *Defined in [src/error-message.ts:59](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L59)* ___ ### EndStartPeriod ▪ **EndStartPeriod**: *string* = "End period needs to be at least start period." *Defined in [src/error-message.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L36)* ___ ### EqualLength ▪ **EqualLength**: *string* = "Ranges need to be of equal length." *Defined in [src/error-message.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L31)* ___ ### Formula ▪ **Formula**: *string* = "Expected formula." *Defined in [src/error-message.ts:52](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L52)* ___ ### IncorrectDateTime ▪ **IncorrectDateTime**: *string* = "String does not represent correct DateTime." *Defined in [src/error-message.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L66)* ___ ### IndexBounds ▪ **IndexBounds**: *string* = "Index out of bounds." *Defined in [src/error-message.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L50)* ___ ### IndexLarge ▪ **IndexLarge**: *string* = "Index too large." *Defined in [src/error-message.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L51)* ___ ### IntegerExpected ▪ **IntegerExpected**: *string* = "Value needs to be an integer." *Defined in [src/error-message.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L25)* ___ ### InvalidDate ▪ **InvalidDate**: *string* = "Invalid date." *Defined in [src/error-message.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L57)* ___ ### InvalidRoman ▪ **InvalidRoman**: *string* = "Invalid roman numeral." *Defined in [src/error-message.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L71)* ___ ### LengthBounds ▪ **LengthBounds**: *string* = "Length out of bounds." *Defined in [src/error-message.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L60)* ___ ### LessThanOne ▪ **LessThanOne**: *string* = "Argument cannot be less than 1." *Defined in [src/error-message.ts:69](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L69)* ___ ### NaN ▪ **NaN**: *string* = "NaN or infinite value encountered." *Defined in [src/error-message.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L30)* ___ ### Negative ▪ **Negative**: *string* = "Value cannot be negative." *Defined in [src/error-message.ts:32](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L32)* ___ ### NegativeCount ▪ **NegativeCount**: *string* = "Count cannot be negative." *Defined in [src/error-message.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L53)* ___ ### NegativeLength ▪ **NegativeLength**: *string* = "Length cannot be negative." *Defined in [src/error-message.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L45)* ___ ### NegativeTime ▪ **NegativeTime**: *string* = "Time cannot be negative." *Defined in [src/error-message.ts:61](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L61)* ___ ### NoConditionMet ▪ **NoConditionMet**: *string* = "None of the conditions were met." *Defined in [src/error-message.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L63)* ___ ### NoDefault ▪ **NoDefault**: *string* = "No default option." *Defined in [src/error-message.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L62)* ___ ### NoSpaceForArrayResult ▪ **NoSpaceForArrayResult**: *string* = "No space for array result." *Defined in [src/error-message.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L15)* ___ ### NonZero ▪ **NonZero**: *string* = "Argument cannot be 0." *Defined in [src/error-message.ts:68](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L68)* ___ ### NotBinary ▪ **NotBinary**: *string* = "String does not represent a binary number." *Defined in [src/error-message.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L33)* ___ ### NotHex ▪ **NotHex**: *string* = "String does not represent a hexadecimal number." *Defined in [src/error-message.ts:35](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L35)* ___ ### NotOctal ▪ **NotOctal**: *string* = "String does not represent an octal number." *Defined in [src/error-message.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L34)* ___ ### NumberCoercion ▪ **NumberCoercion**: *string* = "Value cannot be coerced to number." *Defined in [src/error-message.ts:23](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L23)* ___ ### NumberExpected ▪ **NumberExpected**: *string* = "Number argument expected." *Defined in [src/error-message.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L24)* ___ ### NumberRange ▪ **NumberRange**: *string* = "Number-only range expected." *Defined in [src/error-message.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L40)* ___ ### OneValue ▪ **OneValue**: *string* = "Needs at least one value." *Defined in [src/error-message.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L47)* ___ ### OutOfSheet ▪ **OutOfSheet**: *string* = "Resulting reference is out of the sheet." *Defined in [src/error-message.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L28)* ___ ### ParseError ▪ **ParseError**: *string* = "Parsing error." *Defined in [src/error-message.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L54)* ___ ### PatternNotFound ▪ **PatternNotFound**: *string* = "Pattern not found." *Defined in [src/error-message.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L46)* ___ ### PeriodLong ▪ **PeriodLong**: *string* = "Period number cannot exceed life length." *Defined in [src/error-message.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L56)* ___ ### RangeManySheets ▪ **RangeManySheets**: *string* = "Range spans more than one sheet." *Defined in [src/error-message.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L19)* ___ ### ResultTooLong ▪ **ResultTooLong**: *string* = "Result exceeds the maximum allowed length." *Defined in [src/error-message.ts:76](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L76)* ___ ### ScalarExpected ▪ **ScalarExpected**: *string* = "Cell range not allowed." *Defined in [src/error-message.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L22)* ___ ### Selector ▪ **Selector**: *string* = "Selector cannot exceed the number of arguments." *Defined in [src/error-message.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L64)* ___ ### SheetRef ▪ **SheetRef**: *string* = "Sheet does not exist." *Defined in [src/error-message.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L55)* ___ ### ShouldBeIorJ ▪ **ShouldBeIorJ**: *string* = "Should be 'i' or 'j'." *Defined in [src/error-message.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L74)* ___ ### SizeMismatch ▪ **SizeMismatch**: *string* = "Array dimensions mismatched." *Defined in [src/error-message.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L75)* ___ ### StartEndDate ▪ **StartEndDate**: *string* = "Start date needs to be earlier than end date." *Defined in [src/error-message.ts:65](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L65)* ___ ### ThreeValues ▪ **ThreeValues**: *string* = "Range needs to contain at least three elements." *Defined in [src/error-message.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L49)* ___ ### TwoValues ▪ **TwoValues**: *string* = "Range needs to contain at least two elements." *Defined in [src/error-message.ts:48](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L48)* ___ ### ValueBaseLarge ▪ **ValueBaseLarge**: *string* = "Value in base too large." *Defined in [src/error-message.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L42)* ___ ### ValueBaseLong ▪ **ValueBaseLong**: *string* = "Value in base too long." *Defined in [src/error-message.ts:44](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L44)* ___ ### ValueBaseSmall ▪ **ValueBaseSmall**: *string* = "Value in base too small." *Defined in [src/error-message.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L43)* ___ ### ValueLarge ▪ **ValueLarge**: *string* = "Value too large." *Defined in [src/error-message.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L17)* ___ ### ValueNotFound ▪ **ValueNotFound**: *string* = "Value not found." *Defined in [src/error-message.ts:41](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L41)* ___ ### ValueSmall ▪ **ValueSmall**: *string* = "Value too small." *Defined in [src/error-message.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L16)* ___ ### WeekendString ▪ **WeekendString**: *string* = "Incorrect weekend bitmask string." *Defined in [src/error-message.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L70)* ___ ### WrongArgNumber ▪ **WrongArgNumber**: *string* = "Wrong number of arguments." *Defined in [src/error-message.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L11)* ___ ### WrongDimension ▪ **WrongDimension**: *string* = "Wrong range dimension." *Defined in [src/error-message.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L21)* ___ ### WrongOrder ▪ **WrongOrder**: *string* = "Wrong order of values." *Defined in [src/error-message.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L72)* ___ ### WrongType ▪ **WrongType**: *string* = "Wrong type of argument." *Defined in [src/error-message.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L29)* ## Methods ### FunctionName ▸ **FunctionName**(`arg`: string): *string* *Defined in [src/error-message.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* ___ ### LicenseKey ▸ **LicenseKey**(`arg`: string): *string* *Defined in [src/error-message.ts:79](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L79)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* ___ ### NamedExpressionName ▸ **NamedExpressionName**(`arg`: string): *string* *Defined in [src/error-message.ts:78](https://github.com/handsontable/hyperformula/blob/b8542ec/src/error-message.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* --- ## ExpectedValueOfTypeError URL: https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror # ExpectedValueOfTypeError Error thrown when the expected value type differs from the given value type. It also displays the expected type. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ExpectedValueOfTypeError**(`expectedType`: string, `paramName`: string): *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* *Defined in [src/errors.ts:177](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L177)* **Parameters:** Name | Type | ------ | ------ | `expectedType` | string | `paramName` | string | **Returns:** *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## ColumnIndex URL: https://hyperformula.handsontable.com/docs/api/classes/columnindex # ColumnIndex ## Constructors ### constructor \+ **new ColumnIndex**(`dependencyGraph`: DependencyGraph, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[ColumnIndex](https://hyperformula.handsontable.com/docs/api/classes/columnindex.md)* *Defined in [src/Lookup/ColumnIndex.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[ColumnIndex](https://hyperformula.handsontable.com/docs/api/classes/columnindex.md)* ## Methods ### add ▸ **add**(`value`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L54)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:165](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L165)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/ColumnIndex.ts:161](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L161)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)*= { returnOccurrence: 'first' } **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/ColumnIndex.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawInterpreterValue | undefined, `newValue`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawInterpreterValue | undefined | `newValue` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### ensureRecentData ▸ **ensureRecentData**(`sheet`: number, `col`: number, `value`: RawInterpreterValue): *void* *Defined in [src/Lookup/ColumnIndex.ts:233](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L233)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `value` | RawInterpreterValue | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/ColumnIndex.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L110)* **Parameters:** ▪ **searchKey**: *RawNoErrorScalarValue* ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `ifNoMatch` | "returnLowerBound" | "returnUpperBound" | "returnNotFound" | `ordering` | "asc" | "desc" | "none" | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/ColumnIndex.ts:192](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L192)* Forces all ValueIndex entries to apply any pending lazy transformations, bringing every entry up to the current LazilyTransformingAstService version. Must be called before compacting LazilyTransformingAstService. **Returns:** *void* ___ ### getColumnMap ▸ **getColumnMap**(`sheet`: number, `col`: number): *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)* *Defined in [src/Lookup/ColumnIndex.ts:205](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L205)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | **Returns:** *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)* ___ ### getValueIndex ▸ **getValueIndex**(`sheet`: number, `col`: number, `value`: RawInterpreterValue): *[ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)* *Defined in [src/Lookup/ColumnIndex.ts:220](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L220)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `value` | RawInterpreterValue | **Returns:** *[ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)* ___ ### moveValues ▸ **moveValues**(`sourceRange`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/ColumnIndex.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `sourceRange` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawInterpreterValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/ColumnIndex.ts:174](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L174)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/ColumnIndex.ts:183](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L183)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/ColumnIndex.ts:104](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L104)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## Evaluator URL: https://hyperformula.handsontable.com/docs/api/classes/evaluator # Evaluator ## Constructors ### constructor \+ **new Evaluator**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `interpreter`: Interpreter, `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)): *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* *Defined in [src/Evaluator.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Evaluator.ts#L22)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `interpreter` | Interpreter | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | **Returns:** *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* ## Properties ### interpreter • **interpreter**: *Interpreter* *Defined in [src/Evaluator.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Evaluator.ts#L27)* ## Methods ### partialRun ▸ **partialRun**(`vertices`: Vertex[]): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/Evaluator.ts:44](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Evaluator.ts#L44)* **Parameters:** Name | Type | ------ | ------ | `vertices` | Vertex[] | **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### run ▸ **run**(): *void* *Defined in [src/Evaluator.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Evaluator.ts#L34)* **Returns:** *void* ___ ### runAndForget ▸ **runAndForget**(`ast`: Ast, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `dependencies`: RelativeDependency[]): *InterpreterValue* *Defined in [src/Evaluator.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Evaluator.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `dependencies` | RelativeDependency[] | **Returns:** *InterpreterValue* --- ## ExportedCellChange URL: https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange # ExportedCellChange A list of cells which values changed after the operation, their absolute addresses and new values. ## Constructors ### constructor \+ **new ExportedCellChange**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `newValue`: [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)): *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* *Defined in [src/Exporter.ts:23](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `newValue` | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | **Returns:** *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Exporter.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L25)* ___ ### newValue • **newValue**: *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L26)* ## Accessors ### col • **get col**(): *number* *Defined in [src/Exporter.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L30)* **Returns:** *number* ___ ### row • **get row**(): *number* *Defined in [src/Exporter.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L34)* **Returns:** *number* ___ ### sheet • **get sheet**(): *number* *Defined in [src/Exporter.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L38)* **Returns:** *number* ___ ### value • **get value**(): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L42)* **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* --- ## ExpectedOneOfValuesError URL: https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror # ExpectedOneOfValuesError Error thrown when the value was expected to be set for a config parameter. It also displays the expected value. This error might be thrown while setting or updating the [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). The following methods accept [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md) as a parameter: **`see`** [buildEmpty](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildempty) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [updateConfig](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) ## Constructors ### constructor \+ **new ExpectedOneOfValuesError**(`values`: string, `paramName`: string): *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* *Defined in [src/errors.ts:242](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L242)* **Parameters:** Name | Type | ------ | ------ | `values` | string | `paramName` | string | **Returns:** *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## Exporter URL: https://hyperformula.handsontable.com/docs/api/classes/exporter # Exporter ## Constructors ### constructor \+ **new Exporter**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md), `sheetMapping`: SheetMapping, `lazilyTransformingService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)): *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* *Defined in [src/Exporter.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | `sheetMapping` | SheetMapping | `lazilyTransformingService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | **Returns:** *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* ## Methods ### exportChange ▸ **exportChange**(`change`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange) | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/Exporter.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `change` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange) | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### exportScalarOrRange ▸ **exportScalarOrRange**(`value`: InterpreterValue): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Exporter.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### exportValue ▸ **exportValue**(`value`: InterpreterValue): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Exporter.ts:94](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L94)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* --- ## GraphBuilder URL: https://hyperformula.handsontable.com/docs/api/classes/graphbuilder # GraphBuilder Service building the graph and mappings. ## Constructors ### constructor \+ **new GraphBuilder**(`dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[GraphBuilder](https://hyperformula.handsontable.com/docs/api/classes/graphbuilder.md)* *Defined in [src/GraphBuilder.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L31)* Configures the building service. **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[GraphBuilder](https://hyperformula.handsontable.com/docs/api/classes/graphbuilder.md)* ## Methods ### buildGraph ▸ **buildGraph**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *void* *Defined in [src/GraphBuilder.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L50)* Builds graph. **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *void* --- ## FunctionPluginValidationError URL: https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror # FunctionPluginValidationError Error thrown when function plugin is invalid. **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* ## Methods ### functionMethodNotFound ▸ **functionMethodNotFound**(`functionName`: string, `pluginName`: string): *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* *Defined in [src/errors.ts:321](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L321)* **Parameters:** Name | Type | ------ | ------ | `functionName` | string | `pluginName` | string | **Returns:** *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* ___ ### functionNotDeclaredInPlugin ▸ **functionNotDeclaredInPlugin**(`functionId`: string, `pluginName`: string): *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* *Defined in [src/errors.ts:317](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L317)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | `pluginName` | string | **Returns:** *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* --- ## EmptyStatistics URL: https://hyperformula.handsontable.com/docs/api/classes/emptystatistics # EmptyStatistics Do not store stats in the memory. Stats are not needed on daily basis ## Methods ### end ▸ **end**(`_name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/EmptyStatistics.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/EmptyStatistics.ts#L27)* **`inheritdoc`** **Parameters:** Name | Type | ------ | ------ | `_name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | **Returns:** *void* ___ ### incrementCriterionFunctionFullCacheUsed ▸ **incrementCriterionFunctionFullCacheUsed**(): *void* *Defined in [src/statistics/EmptyStatistics.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/EmptyStatistics.ts#L12)* **`inheritdoc`** **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/EmptyStatistics.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/EmptyStatistics.ts#L17)* **`inheritdoc`** **Returns:** *void* ___ ### measure ▸ **measure**‹**T**›(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), `func`: function): *T* *Defined in [src/statistics/Statistics.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L80)* Measure given statistic as execution of given function. **Type parameters:** ▪ **T** **Parameters:** ▪ **name**: *[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)* statistic to track ▪ **func**: *function* function to call ▸ (): *T* **Returns:** *T* result of the function call ___ ### reset ▸ **reset**(): *void* *Defined in [src/statistics/Statistics.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L33)* Resets statistics **Returns:** *void* ___ ### snapshot ▸ **snapshot**(): *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* *Defined in [src/statistics/Statistics.ts:90](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L90)* Returns the snapshot of current results **Returns:** *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* ___ ### start ▸ **start**(`_name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/EmptyStatistics.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/EmptyStatistics.ts#L22)* **`inheritdoc`** **Parameters:** Name | Type | ------ | ------ | `_name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | **Returns:** *void* --- ## ExportedNamedExpressionChange URL: https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange # ExportedNamedExpressionChange ## Constructors ### constructor \+ **new ExportedNamedExpressionChange**(`name`: string, `newValue`: [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]): *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* *Defined in [src/Exporter.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `name` | string | `newValue` | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] | **Returns:** *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* ## Properties ### name • **name**: *string* *Defined in [src/Exporter.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L49)* ___ ### newValue • **newValue**: *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Exporter.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L50)* --- ## InternalNamedExpression URL: https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression # InternalNamedExpression ## Constructors ### constructor \+ **new InternalNamedExpression**(`displayName`: string, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `added`: boolean, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L24)* **Parameters:** Name | Type | ------ | ------ | `displayName` | string | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `added` | boolean | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ## Properties ### added • **added**: *boolean* *Defined in [src/NamedExpressions.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L28)* ___ ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/NamedExpressions.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L27)* ___ ### displayName • **displayName**: *string* *Defined in [src/NamedExpressions.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L26)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/NamedExpressions.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L29)* ## Methods ### copy ▸ **copy**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L37)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### normalizeExpressionName ▸ **normalizeExpressionName**(): *string* *Defined in [src/NamedExpressions.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L33)* **Returns:** *string* --- ## LanguageNotRegisteredError URL: https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror # LanguageNotRegisteredError Error thrown when trying to retrieve not registered language **`see`** [getLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-getlanguage) **`see`** [unregisterLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-unregisterlanguage) ## Constructors ### constructor \+ **new LanguageNotRegisteredError**(): *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* *Defined in [src/errors.ts:291](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L291)* **Returns:** *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## InvalidArgumentsError URL: https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror # InvalidArgumentsError Error thrown when the given arguments are invalid ## Constructors ### constructor \+ **new InvalidArgumentsError**(`expectedArguments`: string): *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* *Defined in [src/errors.ts:65](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L65)* **Parameters:** Name | Type | ------ | ------ | `expectedArguments` | string | **Returns:** *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## LanguageAlreadyRegisteredError URL: https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror # LanguageAlreadyRegisteredError Error thrown when trying to register already registered language **`see`** [registerLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerlanguage) ## Constructors ### constructor \+ **new LanguageAlreadyRegisteredError**(): *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* *Defined in [src/errors.ts:302](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L302)* **Returns:** *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## HyperFormula URL: https://hyperformula.handsontable.com/docs/api/classes/hyperformula # HyperFormula This is a class for creating HyperFormula instance, all the following public methods are related to this class. The instance can be created only by calling one of the static methods `buildFromArray`, `buildFromSheets` or `buildEmpty` and should be disposed of with the `destroy` method when it's no longer needed to free the resources. The instance can be seen as a workbook where worksheets can be created and manipulated. They are organized within a widely known structure of columns and rows which can be manipulated as well. The smallest possible data unit are the cells, which may contain simple values or formulas to be calculated. All CRUD methods are called directly on HyperFormula instance and will trigger corresponding lifecycle events. The events are marked accordingly, as well as thrown errors, so they can be correctly handled. ## Static Properties ### buildDate ▪ **buildDate**: *string* = process.env.HT_BUILD_DATE as string *Defined in [src/HyperFormula.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L105)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:121](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L121)* When using the UMD build, this property contains all available languages to use with the [registerLanguage](#registerlanguage) method. For more information, see the [Localizing functions](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) guide. ___ ### releaseDate ▪ **releaseDate**: *string* = process.env.HT_RELEASE_DATE as string *Defined in [src/HyperFormula.ts:112](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L112)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:98](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L98)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:160](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L160)* Returns all of HyperFormula's default [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // returns all default configuration options const defaultConfig = HyperFormula.defaultConfig; ``` **`category`** Static Accessors **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ## Factories ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:353](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L353)* Builds an empty engine instance. Can be configured with the optional parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`example`** ```js const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // build with no initial data and with optional config parameter maxColumns const hfInstance = HyperFormula.buildEmpty({ maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromArray ▸ **buildFromArray**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L279)* Builds the engine for a sheet from a two-dimensional array representation. The engine is created with a single sheet. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified, the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an array const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '=theUltimateQuestionOfLife'], ]; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter maxColumns const hfInstance = HyperFormula.buildFromArray(sheetData, { maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | two-dimensional array representation of sheet | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:326](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L326)* Builds the engine from an object containing multiple sheets with names. The engine is created with one or more sheets. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when any sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an object with sheets: Sheet1 and Sheet2 const sheetData = { 'Sheet1': [ ['1', '', '=Sheet2!$A1'], ['', '2', '=SUM(1, 2, 3)'], ['=Sheet2!$A2', '2', ''], ], 'Sheet2': [ ['', '4', '=Sheet1!$B1'], ['', '8', '=SUM(9, 3, 3)'], ['=Sheet1!$B1', '2', '=theUltimateQuestionOfLife'], ], }; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter useColumnIndex const hfInstance = HyperFormula.buildFromSheets(sheetData, { useColumnIndex: true }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | object with sheets definition | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ## Instance ### destroy ▸ **destroy**(): *void* *Defined in [src/HyperFormula.ts:4846](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4846)* Destroys instance of HyperFormula. **`example`** ```js // destroys the instance hfInstance.destroy(); ``` **Returns:** *void* ___ ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:1278](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1278)* Returns current configuration of the engine instance. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // should return all config metadata including default and those which were added const hfConfig = hfInstance.getConfig(); ``` **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### rebuildAndRecalculate ▸ **rebuildAndRecalculate**(): *void* *Defined in [src/HyperFormula.ts:1292](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1292)* Rebuilds the HyperFormula instance preserving the current sheets data. **`example`** ```js hfInstance.rebuildAndRecalculate(); ``` **Returns:** *void* ___ ### updateConfig ▸ **updateConfig**(`newParams`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *void* *Defined in [src/HyperFormula.ts:1255](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1255)* Updates the config with given new metadata. It is an expensive operation, as it might trigger rebuilding the engine and recalculation of all formulas. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when some parameters of config are of wrong type (e.g., currencySymbol) **`throws`** [ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md) when some parameters of config are of invalid value (e.g., currencySymbol) **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // add a config param, for example maxColumns, // you can check the configuration with getConfig method hfInstance.updateConfig({ maxColumns: 1000 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `newParams` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | configuration options to be updated or added | **Returns:** *void* ___ ## Sheets ### addSheet ▸ **addSheet**(`sheetName?`: undefined | string): *string* *Defined in [src/HyperFormula.ts:2869](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2869)* Adds a new sheet to the HyperFormula instance. Returns given or autogenerated name of a new sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetadded) after the sheet was added **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md) when sheet with a given name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet3' const nameProvided = hfInstance.addSheet('MySheet3'); // should return autogenerated 'Sheet4' // because no name was provided and 3 other ones already exist const generatedName = hfInstance.addSheet(); ``` **Parameters:** Name | Type | ------ | ------ | `sheetName?` | undefined | string | **Returns:** *string* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3017](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3017)* Clears the sheet content. Double-checks if the sheet exists. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0, // }] const changes = hfInstance.clearSheet(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### countSheets ▸ **countSheets**(): *number* *Defined in [src/HyperFormula.ts:3706](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3706)* Returns the number of existing sheets. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return the number of sheets which is '1' const sheetsCount = hfInstance.countSheets(); ``` **Returns:** *number* ___ ### doesSheetExist ▸ **doesSheetExist**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:3425](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3425)* Returns `true` whether sheet with a given name exists. The method accepts sheet name to be checked. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' since 'MySheet1' exists const sheetExist = hfInstance.doesSheetExist('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, case-insensitive. | **Returns:** *boolean* ___ ### getAllSheetsDimensions ▸ **getAllSheetsDimensions**(): *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* *Defined in [src/HyperFormula.ts:1131](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1131)* Returns a map containing dimensions of all sheets for the engine instance represented as a key-value pairs where keys are sheet IDs and dimensions are returned as numbers, width and height respectively. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [ ['1', '2', '=Sheet2!$A1'], ], Sheet2: [ ['3'], ['4'], ], }); // should return the dimensions of all sheets: // { Sheet1: { width: 3, height: 1 }, Sheet2: { width: 1, height: 2 } } const allSheetsDimensions = hfInstance.getAllSheetsDimensions(); ``` **Returns:** *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, (string | undefined)[][]›* *Defined in [src/HyperFormula.ts:1202](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1202)* Returns formulas of all sheets in a form of an object which property keys are strings and values are 2D arrays of strings or possibly `undefined` when the call does not contain a formula. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1+10'], ]); // should return only formulas: { Sheet1: [ [ undefined, undefined, '=A1+10' ] ] } const allSheetsFormulas = hfInstance.getAllSheetsFormulas(); ``` **Returns:** *Record‹string, (string | undefined)[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/HyperFormula.ts:1227](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1227)* Returns formulas or values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent). Each non-formula cell is serialized to the exact value it was set with, preserving its type. For example, a cell set with the string `'1'` is serialized as the string `'1'`, while a cell set with the number `1` is serialized as the number `1`. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', 2, '=A1+10'], ]); // should return all sheets serialized content: { Sheet1: [ [ '1', 2, '=A1+10' ] ] } // note: the string '1' stays a string and the number 2 stays a number const allSheetsSerialized = hfInstance.getAllSheetsSerialized(); ``` **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/HyperFormula.ts:1183](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1183)* Returns values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue). **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '=A1+10', '3'], ]); // should return all sheets values: { Sheet1: [ [ 1, 11, 3 ] ] } const allSheetsValues = hfInstance.getAllSheetsValues(); ``` **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getSheetDimensions ▸ **getSheetDimensions**(`sheetId`: number): *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* *Defined in [src/HyperFormula.ts:1158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1158)* Returns dimensions of a specified sheet. The sheet dimensions is represented with numbers: width and height. Note: Due to the memory optimizations, some of the empty bottom rows and rightmost columns are not counted to the dimensions. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=Sheet2!$A1'], ]); // should return provided sheet's dimensions: { width: 3, height: 1 } const sheetDimensions = hfInstance.getSheetDimensions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheetId`: number): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:1068](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1068)* Returns an array with normalized formula strings from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) or `undefined` for a cells that have no value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all formulas of a sheet: // [ // [undefined, '=SUM(1, 2, 3)', '=A1'], // [undefined, '=TEXT(A2, "0.0%")', '=C1'], // [undefined, '=SUM(A1:C1)', '=C1'], // ]; const sheetFormulas = hfInstance.getSheetFormulas(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *(string | undefined)[][]* ___ ### getSheetId ▸ **getSheetId**(`sheetName`: string): *number | undefined* *Defined in [src/HyperFormula.ts:3400](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3400)* Returns a unique sheet ID assigned to the sheet with a given name or `undefined` if the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return '0' because 'MySheet1' is of ID '0' const sheetID = hfInstance.getSheetId('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, for which we want to retrieve ID, case-insensitive. | **Returns:** *number | undefined* ___ ### getSheetName ▸ **getSheetName**(`sheetId`: number): *string | undefined* *Defined in [src/HyperFormula.ts:3354](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3354)* Returns a unique sheet name assigned to the sheet of a given ID or `undefined` if the there is no sheet with a given ID. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet2' as this sheet is the second one const sheetName = hfInstance.getSheetName(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of the sheet, for which we want to retrieve name | **Returns:** *string | undefined* ___ ### getSheetNames ▸ **getSheetNames**(): *string[]* *Defined in [src/HyperFormula.ts:3376](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3376)* List all sheet names. Returns an array of sheet names as strings. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return all sheets names: ['MySheet1', 'MySheet2'] const sheetNames = hfInstance.getSheetNames(); ``` **Returns:** *string[]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheetId`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:1101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1101)* Returns an array of arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with serialized content of cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), either a cell formula or an explicit value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return: // [ // ['0', '=SUM(1, 2, 3)', '=A1'], // ['1', '=TEXT(A2, "0.0%")', '=C1'], // ['2', '=SUM(A1:C1)', '=C1'], // ]; const serializedContent = hfInstance.getSheetSerialized(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:1035](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1035)* Returns an array of arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) with values of all cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet). Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all values of a sheet: [[0, 6, 0], [1, '1.0%', 0], [2, 6, 0]] const sheetValues = hfInstance.getSheetValues(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isItPossibleToAddSheet ▸ **isItPossibleToAddSheet**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:2830](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2830)* Returns information whether it is possible to add a sheet to the engine. Checks against particular rules to ascertain that addSheet can be called. If returns `true`, doing [addSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addsheet) operation won't throw any errors, and it is possible to add sheet with provided name. Returns `false` if the chosen name is already used. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'false' because 'MySheet2' already exists const isAddable = hfInstance.isItPossibleToAddSheet('MySheet2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | sheet name, case-insensitive | **Returns:** *boolean* ___ ### isItPossibleToClearSheet ▸ **isItPossibleToClearSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2975](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2975)* Returns information whether it is possible to clear a specified sheet. If returns `true`, doing [clearSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#clearsheet) operation won't throw any errors, provided sheet exists and its content can be cleared. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because 'MySheet2' exists and can be cleared const isClearable = hfInstance.isItPossibleToClearSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRemoveSheet ▸ **isItPossibleToRemoveSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2901](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2901)* Returns information whether it is possible to remove sheet for the engine. Returns `true` if the provided sheet exists, and therefore it can be removed, doing [removeSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removesheet) operation won't throw any errors. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet with ID 1 exists and is removable const isRemovable = hfInstance.isItPossibleToRemoveSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRenameSheet ▸ **isItPossibleToRenameSheet**(`sheetId`: number, `newName`: string): *boolean* *Defined in [src/HyperFormula.ts:3733](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3733)* Returns information whether it is possible to rename sheet. Returns `true` if the sheet with provided id exists and new name is available Returns `false` if sheet cannot be renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // returns true hfInstance.isItPossibleToRenameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number | `newName` | string | a name of the sheet to be given | **Returns:** *boolean* ___ ### isItPossibleToReplaceSheetContent ▸ **isItPossibleToReplaceSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *boolean* *Defined in [src/HyperFormula.ts:3047](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3047)* Returns information whether it is possible to replace the sheet content. If returns `true`, doing [setSheetContent](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setsheetcontent) operation won't throw any errors, the provided sheet exists and then its content can be replaced. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet of ID 0 exists // and the provided content can be placed in this sheet const isReplaceable = hfInstance.isItPossibleToReplaceSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *boolean* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2944](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2944)* Removes a sheet Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetremoved) after the sheet was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *void* *Defined in [src/HyperFormula.ts:3771](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3771)* Renames a specified sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRenamed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetrenamed) after the sheet was renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md) when the provided sheet name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // renames the sheet 'MySheet1' hfInstance.renameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet ID | `newName` | string | a name of the sheet to be given, if is the same as the old one the method does nothing | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3084](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3084)* Replaces the sheet content with new values. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when values argument is not an array of arrays **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.setSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Ranges ### getFillRangeData ▸ **getFillRangeData**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `target`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `offsetsFromTarget`: boolean): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2786](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2786)* Returns values to fill target range using source range, with properly extending the range using wrap-around heuristic. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source or target are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([[1, '=A1'], ['=$A$1', '2']]); // should return [['2', '=$A$1', '2'], ['=A3', 1, '=C3'], ['2', '=$A$1', '2']] hfInstance.getFillRangeData( {start: {sheet: 0, row: 0, col: 0}, end: {sheet: 0, row: 1, col: 1}}, {start: {sheet: 0, row: 1, col: 1}, end: {sheet: 0, row: 3, col: 3}}); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | of data | `target` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | range where data is intended to be put | `offsetsFromTarget` | boolean | false | if true, offsets are computed from target corner, otherwise from source corner | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeFormulas ▸ **getRangeFormulas**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:2713](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2713)* Returns cell formulas in given range. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns cell formulas of a given range only: // [ [ '=SUM(1, 2)', undefined ], [ undefined, undefined ] ] const rangeFormulas = hfInstance.getRangeFormulas({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *(string | undefined)[][]* ___ ### getRangeSerialized ▸ **getRangeSerialized**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2752](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2752)* Returns serialized cells in given range. Each non-formula cell is serialized to the exact value it was set with, preserving its type (e.g., a cell set with the string `'2'` is serialized as the string `'2'`, while a cell set with the number `2` is serialized as the number `2`). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', 2, 10], [5, 6, 7], [40, 30, 20], ]); // should return serialized cell content for the given range: // [ [ '=SUM(1, 2)', 2 ], [ 5, 6 ] ] const rangeSerialized = hfInstance.getRangeSerialized({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeValues ▸ **getRangeValues**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2677](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2677)* Returns the cell content of a given range in a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] format. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns calculated cells content: [ [ 3, 2 ], [ 5, 6 ] ] const rangeValues = hfInstance.getRangeValues({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ## Rows ### addRows ▸ **addRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1924](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1924)* Adds multiple rows into a specified position in a given sheet. Does nothing if rows are outside effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.addRows(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddRows ▸ **isItPossibleToAddRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1882](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1882)* Returns information whether it is possible to add rows into a specified position in a given sheet. Checks against particular rules to ascertain that addRows can be called. If returns `true`, doing [addRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addrows) operation won't throw any errors. Returns `false` if adding rows would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // should return 'true' for this example, // it is possible to add one row in the second row of sheet 0 const isAddable = hfInstance.isItPossibleToAddRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveRows ▸ **isItPossibleToMoveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *boolean* *Defined in [src/HyperFormula.ts:2279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2279)* Returns information whether it is possible to move a particular number of rows to a specified position in a given sheet. Checks against particular rules to ascertain that moveRows can be called. If returns `true`, doing [moveRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#moverows) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected rows, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to move one row from row 0 into row 2 const isMovable = hfInstance.isItPossibleToMoveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveRows ▸ **isItPossibleToRemoveRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1955](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1955)* Returns information whether it is possible to remove rows from a specified position in a given sheet. Checks against particular rules to ascertain that removeRows can be called. If returns `true`, doing [removeRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removerows) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to remove one row from row 1 of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetRowOrder ▸ **isItPossibleToSetRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1677](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1677)* Checks if it is possible to reorder rows of a sheet according to a permutation. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`, i.e. the value at index `i` is the new position for the row that is currently at index `i`. See [setRowOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // returns true hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); // returns false (array length must match the number of rows) hfInstance.isItPossibleToSetRowOrder(0, [2]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows | **Returns:** *boolean* ___ ### isItPossibleToSwapRowIndexes ▸ **isItPossibleToSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1590](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1590)* Checks if it is possible to reorder rows of a sheet according to a source-target mapping. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // returns true const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 2], [2, 0]]); // returns false const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *boolean* ___ ### moveRows ▸ **moveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2326](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2326)* Moves a particular number of rows to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.moveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeRows ▸ **removeRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1996](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1996)* Removes multiple rows from a specified position in a given sheet. Does nothing if rows are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return: [{ sheet: 0, col: 1, row: 2, value: null }] for this example const changes = hfInstance.removeRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1642](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1642)* Reorders rows of a sheet according to a permutation of 0-based indexes. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. In other words, the value at index `i` is the new position for the row that is currently at index `i`. Note that this is the opposite of `[ previousPositionForRow0, previousPositionForRow1, ... ]`. This method might be used to [sort the rows of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newRowOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setRowOrder(0, newRowOrder); // Sheet after this operation: [['C'], ['A'], ['B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows; array length must match the number of rows returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapRowIndexes ▸ **swapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1559](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1559)* Reorders rows of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // should set swap rows 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 0, row: 2 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 1, row: 2 }, // newValue: null, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 1, row: 0 }, // newValue: 5, // }] const changes = hfInstance.swapRowIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Columns ### addColumns ▸ **addColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2072](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2072)* Adds multiple columns into a specified position in a given sheet. Does nothing if the columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.92754862796338, // }] const changes = hfInstance.addColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddColumns ▸ **isItPossibleToAddColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2026](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2026)* Returns information whether it is possible to add columns into a specified position in a given sheet. Checks against particular rules to ascertain that addColumns can be called. If returns `true`, doing [addColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addcolumns) operation won't throw any errors. Returns `false` if adding columns would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example, // it is possible to add 1 column in sheet 0, at column 1 const isAddable = hfInstance.isItPossibleToAddColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveColumns ▸ **isItPossibleToMoveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *boolean* *Defined in [src/HyperFormula.ts:2361](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2361)* Returns information whether it is possible to move a particular number of columns to a specified position in a given sheet. Checks against particular rules to ascertain that moveColumns can be called. If returns `true`, doing [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecolumns) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to move one column from column 1 into column 2 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveColumns ▸ **isItPossibleToRemoveColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2102)* Returns information whether it is possible to remove columns from a specified position in a given sheet. Checks against particular rules to ascertain that removeColumns can be called. If returns `true`, doing [removeColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removecolumns) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to remove one column, in place of the second column of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [column, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetColumnOrder ▸ **isItPossibleToSetColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1846](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1846)* Checks if it is possible to reorder columns of a sheet according to a permutation. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`, i.e. the value at index `i` is the new position for the column that is currently at index `i`. See [setColumnOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // returns true hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); // returns false (array length must match the number of columns) hfInstance.isItPossibleToSetColumnOrder(0, [1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns | **Returns:** *boolean* ___ ### isItPossibleToSwapColumnIndexes ▸ **isItPossibleToSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1763](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1763)* Checks if it is possible to reorder columns of a sheet according to a source-target mapping. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // returns true hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 2], [2, 0]]); // returns false hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *boolean* ___ ### moveColumns ▸ **moveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2414](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2414)* Moves a particular number of columns to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3', '=RAND()', '=SUM(A1:C1)'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.16210054671639, // }, { // address: { sheet: 0, col: 4, row: 0 }, // newValue: 6.16210054671639, // }] const changes = hfInstance.moveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeColumns ▸ **removeColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2147](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2147)* Removes multiple columns from a specified position in a given sheet. Does nothing if columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1813](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1813)* Reorders columns of a sheet according to a permutation of 0-based indexes. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. In other words, the value at index `i` is the new position for the column that is currently at index `i`. Note that this is the opposite of `[ previousPositionForColumn0, previousPositionForColumn1, ... ]`. This method might be used to [sort the columns of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newColumnOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setColumnOrder(0, newColumnOrder); // Sheet after this operation: [['C', 'A', 'B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns; array length must match the number of columns returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapColumnIndexes ▸ **swapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1735](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1735)* Reorders columns of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // should set swap columns 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 2, row: 0 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 2, row: 1 }, // newValue: 5, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 0, row: 1 }, // newValue: null, // }] const changes = hfInstance.swapColumnIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `columnMapping` | [number, number][] | array mapping original positions to final positions of columns | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Cells ### doesCellHaveFormula ▸ **doesCellHaveFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3517](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3517)* Returns `true` if the specified cell contains a formula. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the A1 cell contains a formula const A1Formula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the B1 cell does not contain a formula const B1NoFormula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### doesCellHaveSimpleValue ▸ **doesCellHaveSimpleValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3486](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3486)* Returns `true` if the specified cell contains a simple value. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the selected cell contains a simple value const isA1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the selected cell does not contain a simple value const isB1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### getCellFormula ▸ **getCellFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:941](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L941)* Returns a normalized formula string from the cell of a given address or `undefined` for an address that does not exist and empty values. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return a normalized A1 cell formula: '=SUM(1, 2, 3)' const A1Formula = hfInstance.getCellFormula({ sheet: 0, col: 0, row: 0 }); // should return a normalized B1 cell formula: 'undefined' const B1Formula = hfInstance.getCellFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:971](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L971)* Returns the `HYPERLINK` url for a cell of a given address or `undefined` for an address that does not exist or a cell that is not `HYPERLINK` **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=HYPERLINK("https://hyperformula.handsontable.com/", "HyperFormula")', '0'], ]); // should return url of 'HYPERLINK': https://hyperformula.handsontable.com/ const A1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 0, row: 0 }); // should return 'undefined' for a cell that is not 'HYPERLINK' const B1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellSerialized ▸ **getCellSerialized**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/HyperFormula.ts:1003](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1003)* Returns [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with a serialized content of the cell of a given address: either a cell formula, an explicit value, or an error. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return serialized content of A1 cell: '=SUM(1, 2, 3)' const cellA1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 0, row: 0 }); // should return serialized content of B1 cell: '0' const cellB1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellType ▸ **getCellType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/HyperFormula.ts:3454](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3454)* Returns the type of a cell at a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'FORMULA', the cell of given coordinates is of this type const cellA1Type = hfInstance.getCellType({ sheet: 0, col: 0, row: 0 }); // should return 'VALUE', the cell of given coordinates is of this type const cellB1Type = hfInstance.getCellType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValue ▸ **getCellValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/HyperFormula.ts:910](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L910)* Returns the cell value of a given address. Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) when cellAddress is of incorrect type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // get value of A1 cell, should be '6' const A1Value = hfInstance.getCellValue({ sheet: 0, col: 0, row: 0 }); // get value of B1 cell, should be '2' const B1Value = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/HyperFormula.ts:3648](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3648)* Returns detailed type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1%', '1$'], ]); // should return 'NUMBER_PERCENT', cell value type of provided coordinates is a number with a format inference percent. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 }); // should return 'NUMBER_CURRENCY', cell value type of provided coordinates is a number with a format inference currency. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *FormatInfo* *Defined in [src/HyperFormula.ts:3682](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3682)* Returns auxiliary format information of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1$', '1'], ]); // should return '$', cell value type of provided coordinates is a number with a format inference currency, parsed as using '$' as currency. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 0, row: 0 }); // should return undefined, cell value type of provided coordinates is a number with no format information. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *FormatInfo* ___ ### getCellValueType ▸ **getCellValueType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/HyperFormula.ts:3612](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3612)* Returns type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 1, row: 0 }); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### isCellEmpty ▸ **isCellEmpty**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3549](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3549)* Returns`true` if the specified cell is empty. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [null, '1'], ]); // should return 'true', cell of provided coordinates is empty const isEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 0, row: 0 }); // should return 'false', cell of provided coordinates is not empty const isNotEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isCellPartOfArray ▸ **isCellPartOfArray**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3577](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3577)* Returns `true` if a given cell is a part of an array. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['{=TRANSPOSE(B1:B1)}'], ]); // should return 'true', cell of provided coordinates is a part of an array const isPartOfArray = hfInstance.isCellPartOfArray({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isItPossibleToMoveCells ▸ **isItPossibleToMoveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:2183](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2183)* Returns information whether it is possible to move cells to a specified position in a given sheet. Checks against particular rules to ascertain that moveCells can be called. If returns `true`, doing [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if destinationLeftCorner, source, or any of basic type arguments are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return 'true' for this example // it is possible to move a block of width 1 and height 1 // from the corner: column 1 and row 0 of sheet 0 // into destination corner: column 3, row 0 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *boolean* ___ ### isItPossibleToSetCellContents ▸ **isItPossibleToSetCellContents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *boolean* *Defined in [src/HyperFormula.ts:1454](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1454)* Returns information whether it is possible to change the content in a rectangular area bounded by the box. If returns `true`, doing [setCellContents](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcellcontents) operation won't throw any errors. Returns `false` if the address is invalid or the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // top left corner const address1 = { col: 0, row: 0, sheet: 0 }; // bottom right corner const address2 = { col: 1, row: 0, sheet: 0 }; // should return 'true' for this example, it is possible to set content of // width 2, height 1 in the first row and column of sheet 0 const isSettable = hfInstance.isItPossibleToSetCellContents({ start: address1, end: address2 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | single cell or block of cells to check | **Returns:** *boolean* ___ ### moveCells ▸ **moveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2240](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2240)* Moves the content of a cell block from source to the target location. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if destinationLeftCorner or source are of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the target location has array inside - cells cannot be replaced by the array **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0.93524248002062, // }] const changes = hfInstance.moveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1507](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1507)* Sets the content for a block of cells of a given coordinates. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md) when the value is not an array of arrays or a raw cell value **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if topLeftCornerAddress argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // should set the content, returns: // [{ // address: { sheet: 0, col: 3, row: 0 }, // newValue: 2, // }] const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | top left corner of block of cells | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | array with content | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Named Expressions ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4002](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4002)* Adds a specified named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionadded) always, unless [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#batch) mode is used **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md) when the named-expression name is not available. **`throws`** [NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md) when the named-expression name is not valid **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md) when the named-expression formula contains relative references **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add own expression, scope limited to 'Sheet1' (sheetId=0), the method should return a list of cells which values // changed after the operation, their absolute addresses and new values // for this example: // [{ // name: 'prettyName', // newValue: 142, // }] const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### changeNamedExpression ▸ **changeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4224](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4224)* Changes a given named expression to a specified formula. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`throws`** [[ArrayFormulasNotSupportedError]] when the named expression formula is an array formula **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md) when the named expression formula contains relative references **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, scope limited to 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // change the named expression const changes = hfInstance.changeNamedExpression('prettyName', '=Sheet1!$A$1+200'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/HyperFormula.ts:4392](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4392)* Returns all named expressions serialized. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('prettyName3', '=Sheet1!$A$3+100', 0); // get all expressions serialized // should return: // [ // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: undefined}, // {name: 'anotherPrettyName', expression: '=Sheet1!$A$2+100', options: undefined, scope: undefined}, // {name: 'alsoPrettyName', expression: '=Sheet1!$A$3+100', options: undefined, scope: 0} // ] const allExpressions = hfInstance.getAllNamedExpressionsSerialized(); ``` **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getNamedExpression ▸ **getNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* *Defined in [src/HyperFormula.ts:4127](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4127)* Returns a named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a named expression that corresponds to the passed name from 'Sheet1' (sheetId=0) // for this example, returns: // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: 0} const myFormula = hfInstance.getNamedExpression('prettyName', 0); // for a named expression that doesn't exist, returns 'undefined': const myFormulaTwo = hfInstance.getNamedExpression('uglyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* ___ ### getNamedExpressionFormula ▸ **getNamedExpressionFormula**(`expressionName`: string, `scope?`: undefined | number): *string | undefined* *Defined in [src/HyperFormula.ts:4082](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4082)* Returns a normalized formula string for given named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a normalized formula string corresponding to the passed name from 'Sheet1' (sheetId=0), // '=Sheet1!A1+100' for this example const myFormula = hfInstance.getNamedExpressionFormula('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string | undefined* ___ ### getNamedExpressionValue ▸ **getNamedExpressionValue**(`expressionName`: string, `scope?`: undefined | number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* *Defined in [src/HyperFormula.ts:4040](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4040)* Gets specified named expression value. Returns a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) or undefined if the given named expression does not exist. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, only 'Sheet1' (sheetId=0) considered as it is the scope hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 'Sheet1'); // returns the calculated value of a passed named expression, '142' for this example const myFormula = hfInstance.getNamedExpressionValue('prettyName', 'Sheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* ___ ### isItPossibleToAddNamedExpression ▸ **isItPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:3950](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3950)* Returns information whether it is possible to add named expression into a specific scope. Checks against particular rules to ascertain that addNamedExpression can be called. If returns `true`, doing [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#addnamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // should return 'true' for this example, // it is possible to add named expression to global scope const isAddable = hfInstance.isItPossibleToAddNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToChangeNamedExpression ▸ **isItPossibleToChangeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4176](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4176)* Returns information whether it is possible to change named expression in a specific scope. Checks against particular rules to ascertain that changeNamedExpression can be called. If returns `true`, doing [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToChangeNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4260](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4260)* Returns information whether it is possible to remove named expression from a specific scope. Checks against particular rules to ascertain that removeNamedExpression can be called. If returns `true`, doing [removeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToRemoveNamedExpression('prettyName'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### listNamedExpressions ▸ **listNamedExpressions**(`scope?`: undefined | number): *string[]* *Defined in [src/HyperFormula.ts:4354](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4354)* Lists named expressions. - If scope parameter is provided, returns an array of expression names defined for this scope. - If scope parameter is undefined, returns an array of global expression names. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('alsoPrettyName', '=Sheet1!$A$3+100', 0); // list the expressions, should return: ['prettyName', 'anotherPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(); // list the expressions, should return: ['alsoPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `scope?` | undefined | number | scope of the named expressions, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4305](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4305)* Removes a named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionremoved) after the expression was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // remove the named expression const changes = hfInstance.removeNamedExpression('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Helpers ### calculateFormula ▸ **calculateFormula**(`formulaString`: string, `sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:4457](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4457)* Calculates fire-and-forget formula, returns the calculated value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the provided `sheetID` doesn't exist. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [['58']], Sheet2: [['1', '2', '3'], ['4', '5', '6']] }); // returns the calculated formula's value // for this example, returns `68` const calculatedFormula = hfInstance.calculateFormula('=A1+10', 0); // for this example, returns [['11', '12', '13'], ['14', '15', '16']] const calculatedFormula = hfInstance.calculateFormula('=A1:B3+10', 1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | `sheetId` | number | The ID of a sheet in context of which the formula gets evaluated. | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:4622](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4622)* Returns metadata of all functions available in this instance for a function picker, with names translated according to the language set in this instance's configuration. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects this instance's own registry: the built-in functions and any custom (user-registered) functions, plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so their `category` is `'Custom'` and they carry no `shortDescription`. A function with no translation entry for the configured language is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called — in practice, a custom plugin registered without translations for that language. A translation set to an empty string is not a missing entry: it falls back to the canonical id, so the function stays listed under its canonical name. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the list of available functions, translated for the configured language const functions = hfInstance.getAvailableFunctions(); ``` **Returns:** *FunctionListEntry[]* ___ ### getCellDependents ▸ **getCellDependents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3281](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3281)* Returns all the out-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. Including: - All cells with formulas that contain the given cell address or range - Some of the ranges that contain the given cell address or range The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression dependents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if address is not [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) or [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0}); // returns [{ sheet: 0, col: 1, row: 0}, { sheet: 0, col: 2, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getCellPrecedents ▸ **getCellPrecedents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3319](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3319)* Returns all the in-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. In particular: - If the argument is a single cell, `getCellPrecedents()` returns all cells and ranges contained in that cell's formula. - If the argument is a range of cells, `getCellPrecedents()` returns some of the cell addresses and smaller ranges contained in that range (but not all of them). The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression precedents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if address is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellPrecedents({ sheet: 0, col: 2, row: 0}); // returns [{ sheet: 0, col: 0, row: 0}, { sheet: 0, col: 1, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:4666](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4666)* Returns the full metadata of a single function registered in this instance, with names translated according to the language set in this instance's configuration: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Resolves both built-in and custom (user-registered) functions, as well as aliases. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. Returns `undefined` when the function id is unknown, not registered in this instance, or has no translation entry for the configured language (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions)). For a custom function, `category` is `'Custom'`, there is no `shortDescription`, `documentationUrl` or `examples`, and parameters are reported positionally (`Arg1`, `Arg2`, ...). `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: under `plPL` this method reports `localizedName: 'SUMA.JEŻELI'` for `'SUMIF'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the details of the SUMIF function, translated for the configured language const details = hfInstance.getFunctionDetails('SUMIF'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | **Returns:** *FunctionDetails | undefined* ___ ### getNamedExpressionsFromFormula ▸ **getNamedExpressionsFromFormula**(`formulaString`: string): *string[]* *Defined in [src/HyperFormula.ts:4488](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4488)* Return a list of named expressions used by a formula. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // returns a list of named expressions used by a formula // for this example, returns ['foo', 'bar'] const namedExpressions = hfInstance.getNamedExpressionsFromFormula('=foo+bar*2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | **Returns:** *string[]* ___ ### normalizeFormula ▸ **normalizeFormula**(`formulaString`: string): *string* *Defined in [src/HyperFormula.ts:4421](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4421)* Parses and then unparses a formula. Returns a normalized formula (e.g., restores the original capitalization of sheet names, function names, cell addresses, and named expressions). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md) when the provided string is not a valid formula, i.e., does not start with "=" **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ]); // returns '=Sheet1!$A$1+10' const normalizedFormula = hfInstance.normalizeFormula('=SHEET1!$A$1+10'); // returns '=3*$A$1' const normalizedFormula = hfInstance.normalizeFormula('=3*$a$1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *string* ___ ### numberToDate ▸ **numberToDate**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4720](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4720)* Interprets number as a date. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date, for this example: // {year: 2020, month: 1, day: 15} const dateFromNumber = hfInstance.numberToDate(43845); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are ignored. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToDateTime ▸ **numberToDateTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4694](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4694)* Interprets number as a date + time. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date and time, for this example: // {year: 2020, month: 1, day: 15, hours: 2, minutes: 24, seconds: 0} const dateTimeFromNumber = hfInstance.numberToDateTime(43845.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are interpreted as hours/minutes/seconds. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToTime ▸ **numberToTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4745](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4745)* Interprets number as a time (hours/minutes/seconds). For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass a number to be interpreted as a time // should return {hours: 26, minutes: 24} for this example const timeFromNumber = hfInstance.numberToTime(1.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | time in 24h units. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### simpleCellAddressFromString ▸ **simpleCellAddressFromString**(`cellAddress`: string, `contextSheetId`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* *Defined in [src/HyperFormula.ts:3122](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3122)* Computes the simple (absolute) address of a cell address, based on its string representation. - If a sheet name is present in the string representation but is not present in the engine, returns `undefined`. - If no sheet name is present in the string representation, uses `contextSheetId` as a sheet id in the returned address. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // returns { sheet: 42, col: 0, row: 0 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!A6', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!$A$6', 42); // returns 'undefined', as there's no 'Sheet 2' in the HyperFormula instance const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet2!A6', 42); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | string | string representation of cell address in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellAddress` argument | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* ___ ### simpleCellAddressToString ▸ **simpleCellAddressToString**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `optionsOrContextSheetId`: object | number): *undefined | string* *Defined in [src/HyperFormula.ts:3191](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3191)* Computes string representation of an absolute address in A1 notation. If `cellAddress.sheet` is not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const addr = { sheet: 0, col: 1, row: 1 }; // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr); // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: false }); // should return 'Sheet0!B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: true }); // should return 'B2' as context sheet id is the same as addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 0); // should return 'Sheet0!B2' as context sheet id is different from addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | - | object representation of an absolute address | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *undefined | string* ___ ### simpleCellRangeFromString ▸ **simpleCellRangeFromString**(`cellRange`: string, `contextSheetId`: number): *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* *Defined in [src/HyperFormula.ts:3151](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3151)* Computes simple (absolute) address of a cell range based on its string representation. If sheet name is present in string representation but not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // should return { start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 0 } } const simpleCellAddress = hfInstance.simpleCellRangeFromString('A1:A2', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellRange` | string | string representation of cell range in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellRange` argument | **Returns:** *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* ___ ### simpleCellRangeToString ▸ **simpleCellRangeToString**(`cellRange`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `optionsOrContextSheetId`: object | number): *string | undefined* *Defined in [src/HyperFormula.ts:3244](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3244)* Computes string representation of an absolute range in A1 notation. Returns `undefined` if: - `cellRange` is not a valid range, - `cellRange.start.sheet` and `cellRange.start.end` are different, - `cellRange.start.sheet` is not present in the engine, - `cellRange.start.end` is not present in the engine. Note: This method is useful only for cell ranges; does not work with column ranges and row ranges. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const range = { start: { sheet: 0, col: 1, row: 1 }, end: { sheet: 0, col: 2, row: 1 } }; // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range); // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: false }); // should return 'Sheet0!B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: true }); // should return 'B2:C2' as context sheet id is the same as range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 0); // should return 'Sheet0!B2:C2' as context sheet id is different from range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellRange` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | object representation of an absolute range | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *string | undefined* ___ ### validateFormula ▸ **validateFormula**(`formulaString`: string): *boolean* *Defined in [src/HyperFormula.ts:4522](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4522)* Validates the formula. If the provided string starts with "=" and is a parsable formula, the method returns `true`. The validation is purely grammatical: the method doesn't verify if the formula can be calculated or not. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // checks if the given string is a valid formula, should return 'true' for this example const isFormula = hfInstance.validateFormula('=SUM(1, 2)'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *boolean* ___ ## Clipboard ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/HyperFormula.ts:2592](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2592)* Clears the clipboard content. **`example`** ```js // clears the clipboard, isClipboardEmpty() should return true if called afterwards hfInstance.clearClipboard(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *void* ___ ### copy ▸ **copy**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2452](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2452)* Stores a copy of the cell block in internal clipboard for the further paste. Returns the copied values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // it copies [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to copy | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### cut ▸ **cut**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2492](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2492)* Stores information of the cell block in internal clipboard for further paste. Calling [paste](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#paste) right after this method is equivalent to call [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells). Almost any CRUD operation called after this method will abort the cut operation. Returns the cut values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // returns the values that were cut: [ [ 1 ] ] const clipboardContent = hfInstance.cut({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 0, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to cut | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/HyperFormula.ts:2575](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2575)* Returns information whether there is something in the clipboard. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // copy desired content const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns 'false', there is content in the clipboard const isClipboardEmpty = hfInstance.isClipboardEmpty(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *boolean* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2543](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2543)* When called after [copy](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#copy) it pastes copied values and formulas into a cell block. When called after [cut](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#cut) it performs [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#movecells) operation into the cell block. Does nothing if the clipboard is empty. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md) when the evaluation is suspended **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md) when performing this operation would result in sheet size limits exceeding **`throws`** [NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md) when clipboard is empty **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md) when the selected target area has array inside **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if targetLeftCorner is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // [ [ 2 ] ] was copied const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns a list of modified cells: their absolute addresses and new values const changes = hfInstance.paste({ sheet: 0, col: 1, row: 0 }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Undo and Redo ### clearRedoStack ▸ **clearRedoStack**(): *void* *Defined in [src/HyperFormula.ts:2622](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2622)* Clears the redo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // redo the operation hfInstance.redo(); // clear the redo stack hfInstance.clearRedoStack(); ``` **Returns:** *void* ___ ### clearUndoStack ▸ **clearUndoStack**(): *void* *Defined in [src/HyperFormula.ts:2649](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2649)* Clears the undo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // clear the undo stack hfInstance.clearUndoStack(); ``` **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/HyperFormula.ts:1422](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1422)* Checks if there is at least one operation that can be re-done. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js hfInstance.undo(); // when there is an action to redo, this returns 'true' const isSomethingToRedo = hfInstance.isThereSomethingToRedo(); ``` **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/HyperFormula.ts:1403](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1403)* Checks if there is at least one operation that can be undone. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // should return 'true', it is possible to undo last operation // which is removing rows in this example const isSomethingToUndo = hfInstance.isThereSomethingToUndo(); ``` **Returns:** *boolean* ___ ### redo ▸ **redo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1375](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1375)* Re-do recently undone operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md) when there is no operation running that can be re-done **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return previous values: [['1'], ['2'], ['3']] hfInstance.undo(); // do a redo, it should return the values after removing the second row: [['1'], ['3']] const changes = hfInstance.redo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### undo ▸ **undo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1337](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1337)* Undo the previous operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md) when there is no operation running that can be undone **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ['3', ''], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return the changes const changes = hfInstance.undo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Batch ### batch ▸ **batch**(`batchOperations`: function): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3812](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3812)* Runs the provided callback as a single [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) and returns the changed cells. Returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // multiple operations in a single callback will trigger evaluation only once // and only one set of changes is returned as a combined result of all // the operations that were triggered within the callback const changes = hfInstance.batch(() => { hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setCellContents({ col: 4, row: 0, sheet: 0 }, [['=A1']]); }); ``` **Parameters:** ▪ **batchOperations**: *function* a function with operations to be performed ▸ (): *void* **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isEvaluationSuspended ▸ **isEvaluationSuspended**(): *boolean* *Defined in [src/HyperFormula.ts:3921](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3921)* Checks if the dependency graph recalculation process is [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) or not. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // suspend the evaluation hfInstance.suspendEvaluation(); // between suspendEvaluation() and resumeEvaluation() // or inside batch() callback it will return 'true', otherwise 'false' const isEvaluationSuspended = hfInstance.isEvaluationSuspended(); const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *boolean* ___ ### resumeEvaluation ▸ **resumeEvaluation**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3895](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3895)* Resumes the dependency graph recalculation that was [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) with [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#suspendevaluation). It also triggers the recalculation and returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // first, suspend the evaluation hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // resume the evaluation const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### suspendEvaluation ▸ **suspendEvaluation**(): *void* *Defined in [src/HyperFormula.ts:3859](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3859)* Suspends the dependency graph recalculation to start a [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). It allows optimizing the performance. With this method, multiple CRUD operations can be done without triggering recalculation after every operation. Suspending evaluation should result in an overall faster calculation compared to recalculating after each operation separately. To resume the evaluation use [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#resumeevaluation). **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // suspend the evaluation with this method hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // use resumeEvaluation to resume const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *void* ___ ## Events ### off ▸ **off**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4831](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4831)* Unsubscribes from an event or from all events. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a simple function to be called upon emitting an event const handler = ( ) => { console.log('baz') } // subscribe to a 'sheetAdded', pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger an event, // console should print 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from a 'sheetAdded' hfInstance.off('sheetAdded', handler); // add a sheet, the console should not print anything hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4771](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4771)* Subscribes to an event. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.on('sheetAdded', ( ) => { console.log('foo') }); // add a sheet to trigger an event, // console should print 'foo' after each time sheet is added in this example hfInstance.addSheet('FooBar'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4797](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4797)* Subscribes to an event once. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.once('sheetAdded', ( ) => { console.log('foo') }); // call addSheet twice, // console should print 'foo' only once when the sheet is added in this example hfInstance.addSheet('FooBar'); hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ## Custom Functions ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:4591](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4591)* Returns classes of all plugins registered in this instance of HyperFormula **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return classes of all plugins registered, assign to a variable const allNames = hfInstance.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:4573](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4573)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; const hfInstance = HyperFormula.buildEmpty(); // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // get the plugin const myPlugin = hfInstance.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(): *string[]* *Defined in [src/HyperFormula.ts:4543](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4543)* Returns translated names of all functions registered in this instance of HyperFormula according to the language set in the configuration **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return translated names of all functions, assign to a variable const allNames = hfInstance.getRegisteredFunctionNames(); ``` **Returns:** *string[]* ___ ## Static Methods ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:652](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L652)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(`code`: string): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:688](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L688)* Returns metadata of all functions available for a given language, as a short list suitable for a function picker. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects the global registry: the built-in functions and every custom function registered with [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) or [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction), plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so they are listed with `category: 'Custom'` and no `shortDescription` — with one exception: the catalogue is keyed by function id, so a custom plugin registered *over* a built-in id inherits that id's entry and is listed with the built-in's category and description. Use the instance method [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions) for one engine's own registry, which differs from the global one when the instance was built with the `functionPlugins` configuration option. A function with no translation entry for `code` is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called. A translation set to an empty string is not a missing entry — it falls back to the canonical id, so the function stays listed under its canonical name. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when the given language is not registered **`example`** ```js // get the list of available functions, translated for enGB const functions = HyperFormula.getAvailableFunctions('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code, e.g. `'enGB'` | **Returns:** *FunctionListEntry[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string, `code`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:736](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L736)* Returns the full metadata of a single function for a given language: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Returns `undefined` when the function id is unknown, not registered, or has no translation entry for `code` (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions)). The static method resolves everything in the global registry: the built-in functions, their aliases, and the custom (user-registered) ones. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. A custom function has no catalogue entry, so it reports `category: 'Custom'`, no `shortDescription`, `documentationUrl` or `examples`, and positional parameter names (`Arg1`, `Arg2`, ...). A custom plugin registered over a built-in id is the exception: the catalogue is keyed by function id, so it reports that built-in's authored metadata alongside the parameter list of the implementation actually registered. Use the instance method [getFunctionDetails](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getfunctiondetails) for one engine's own registry, which differs from the global one when the instance was built with the `functionPlugins` configuration option. `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: `getFunctionDetails('SUMIF', 'plPL')` reports `localizedName: 'SUMA.JEŻELI'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when the given language is not registered **`example`** ```js // get the details of the SUMIF function, translated for enGB const details = HyperFormula.getFunctionDetails('SUMIF', 'enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | `code` | string | language code, e.g. `'enGB'` | **Returns:** *FunctionDetails | undefined* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:636](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L636)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // return the class of a given plugin const myFunctionClass = HyperFormula.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getLanguage ▸ **getLanguage**(`languageCode`: string): *TranslationPackage* *Defined in [src/HyperFormula.ts:375](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L375)* Returns registered language from its code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when trying to retrieve not registered language **`example`** ```js // return registered language const language = HyperFormula.getLanguage('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *TranslationPackage* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(`code`: string): *string[]* *Defined in [src/HyperFormula.ts:606](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L606)* Returns translated names of all registered functions for a given language **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // return a list of function names registered for enGB const allNames = HyperFormula.getRegisteredFunctionNames('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code | **Returns:** *string[]* ___ ### getRegisteredLanguagesCodes ▸ **getRegisteredLanguagesCodes**(): *string[]* *Defined in [src/HyperFormula.ts:456](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L456)* Returns all registered languages codes. **`example`** ```js // should return all registered language codes: ['enGB', 'plPL'] const registeredLanguages = HyperFormula.getRegisteredLanguagesCodes(); ``` **Returns:** *string[]* ___ ### registerFunction ▸ **registerFunction**(`functionId`: string, `plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:540](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L540)* Registers a function with a given id if such exists in a plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when function with a given id does not exist in plugin or plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | translations for the function name | **Returns:** *void* ___ ### registerFunctionPlugin ▸ **registerFunctionPlugin**(`plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:486](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L486)* Registers all functions in a given plugin with optional translations. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: FunctionPlugins must be registered prior to the creation of HyperFormula instances in which they are used. HyperFormula instances created prior to the registration of a FunctionPlugin are unable to access the FunctionPlugin. Registering a FunctionPlugin with [[custom-functions]] requires the translations parameter. **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md) when plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register the plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | optional package of function names translations | **Returns:** *void* ___ ### registerLanguage ▸ **registerLanguage**(`languageCode`: string, `languagePackage`: RawTranslationPackage): *void* *Defined in [src/HyperFormula.ts:406](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L406)* Registers language under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md) when trying to register translation for protected function **`throws`** [LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md) when given language is already registered **`example`** ```js // return registered language HyperFormula.registerLanguage('enUS', enUS); const engine = HyperFormula.buildEmpty({language: 'enUS'}); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | `languagePackage` | RawTranslationPackage | translation package to be registered | **Returns:** *void* ___ ### unregisterAllFunctions ▸ **unregisterAllFunctions**(): *void* *Defined in [src/HyperFormula.ts:587](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L587)* Clears function registry. Note: This method does not affect the existing HyperFormula instances. **`example`** ```js HyperFormula.unregisterAllFunctions(); ``` **Returns:** *void* ___ ### unregisterFunction ▸ **unregisterFunction**(`functionId`: string): *void* *Defined in [src/HyperFormula.ts:570](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L570)* Unregisters a function with a given id. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); // unregister a function HyperFormula.unregisterFunction('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | **Returns:** *void* ___ ### unregisterFunctionPlugin ▸ **unregisterFunctionPlugin**(`plugin`: FunctionPluginDefinition): *void* *Defined in [src/HyperFormula.ts:510](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L510)* Unregisters all functions defined in given plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`example`** ```js // get the class of a plugin const registeredPluginClass = HyperFormula.getFunctionPlugin('EXAMPLE'); // unregister all functions defined in a plugin of ID 'EXAMPLE' HyperFormula.unregisterFunctionPlugin(registeredPluginClass); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | **Returns:** *void* ___ ### unregisterLanguage ▸ **unregisterLanguage**(`languageCode`: string): *void* *Defined in [src/HyperFormula.ts:436](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L436)* Unregisters language that is registered under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md) when given language is not registered **`example`** ```js // register the language for the instance HyperFormula.registerLanguage('plPL', plPL); // unregister plPL HyperFormula.unregisterLanguage('plPL'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *void* --- ## InvalidAddressError URL: https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror # InvalidAddressError Error thrown when the given address is invalid. ## Constructors ### constructor \+ **new InvalidAddressError**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* *Defined in [src/errors.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## LazilyTransformingAstService URL: https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice # LazilyTransformingAstService Manages lazy application of formula AST transformations. ## Problem Structural operations (adding/removing rows/columns, moving cells, renaming sheets) require updating every formula that references the affected area. Applying these transformations eagerly to all formulas after every operation is expensive, especially for large spreadsheets with many formulas. ## Solution: Lazy Transformation Instead of transforming all formulas immediately, this service stores transformations in a queue. Each formula vertex (FormulaVertex) and column index entry (ValueIndex) tracks its own version number. When a consumer needs up-to-date data, it calls `applyTransformations()` with its current version and receives all transformations accumulated since that version. ## Compaction Over time, the transformations array grows unboundedly. To prevent this memory leak, the engine periodically triggers compaction when the number of accumulated transformations reaches the configurable `maxPendingLazyTransformations`: 1. All FormulaVertex instances are forced to apply pending transformations (via `DependencyGraph.forceApplyPostponedTransformations()`). 2. All ColumnIndex entries are forced to apply pending transformations (via `ColumnSearchStrategy.forceApplyPostponedTransformations()`). 3. `compact()` is called, which advances `versionOffset` and clears the transformations array. 4. `UndoRedo.cleanupOrphanedOldData()` removes any oldData entries that were written during forced application but belong to already-evicted undo entries. The `versionOffset` ensures that version numbers remain globally consistent after compaction: `version() = versionOffset + transformations.length`. ## Constructors ### constructor \+ **new LazilyTransformingAstService**(`stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `maxPendingLazyTransformations`: number): *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* *Defined in [src/LazilyTransformingAstService.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L54)* **Parameters:** Name | Type | ------ | ------ | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `maxPendingLazyTransformations` | number | **Returns:** *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* ## Properties ### parser • **parser**? : *ParserWithCaching* *Defined in [src/LazilyTransformingAstService.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L49)* ___ ### undoRedo • **undoRedo**? : *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/LazilyTransformingAstService.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L50)* ## Methods ### addTransformation ▸ **addTransformation**(`transformation`: FormulaTransformer): *number* *Defined in [src/LazilyTransformingAstService.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `transformation` | FormulaTransformer | **Returns:** *number* ___ ### applyTransformations ▸ **applyTransformations**(`ast`: Ast, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `version`: number): *[Ast, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), number]* *Defined in [src/LazilyTransformingAstService.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L88)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `version` | number | **Returns:** *[Ast, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), number]* ___ ### beginCombinedMode ▸ **beginCombinedMode**(`sheet`: number): *void* *Defined in [src/LazilyTransformingAstService.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L75)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *void* ___ ### commitCombinedMode ▸ **commitCombinedMode**(): *number* *Defined in [src/LazilyTransformingAstService.ts:79](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L79)* **Returns:** *number* ___ ### compact ▸ **compact**(): *void* *Defined in [src/LazilyTransformingAstService.ts:135](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L135)* Compacts the transformations array by discarding all entries that have already been applied by every consumer. Safe to call only after all FormulaVertex and ColumnIndex consumers have been brought up to the current version. After calling, UndoRedo.cleanupOrphanedOldData() must be invoked to remove oldData entries written during forceApplyPostponedTransformations for already-evicted undo entries. **Returns:** *void* ___ ### getTransformationsFrom ▸ **getTransformationsFrom**(`version`: number, `filter?`: undefined | function): *IterableIterator‹FormulaTransformer›* *Defined in [src/LazilyTransformingAstService.ts:109](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L109)* **Parameters:** Name | Type | ------ | ------ | `version` | number | `filter?` | undefined | function | **Returns:** *IterableIterator‹FormulaTransformer›* ___ ### needsCompaction ▸ **needsCompaction**(): *boolean* *Defined in [src/LazilyTransformingAstService.ts:123](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L123)* Returns true when enough transformations have accumulated to justify the cost of forcing all consumers (FormulaVertex, ColumnIndex) to apply pending changes. **Returns:** *boolean* ___ ### version ▸ **version**(): *number* *Defined in [src/LazilyTransformingAstService.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/LazilyTransformingAstService.ts#L62)* **Returns:** *number* --- ## MoveCellsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry # MoveCellsUndoEntry ## Constructors ### constructor \+ **new MoveCellsUndoEntry**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `overwrittenCellsData`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][], `addedGlobalNamedExpressions`: string[], `version`: number): *[MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)* *Defined in [src/UndoRedo.ts:68](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L68)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `overwrittenCellsData` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | `addedGlobalNamedExpressions` | string[] | `version` | number | **Returns:** *[MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)* ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/UndoRedo.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L75)* ___ ### destinationLeftCorner • **destinationLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:73](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L73)* ___ ### height • **height**: *number* *Defined in [src/UndoRedo.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L72)* ___ ### overwrittenCellsData • **overwrittenCellsData**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L74)* ___ ### sourceLeftCorner • **sourceLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L70)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:76](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L76)* ___ ### width • **width**: *number* *Defined in [src/UndoRedo.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L71)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:85](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L85)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:89](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L89)* **Returns:** *number[]* --- ## HyperFormulaNS URL: https://hyperformula.handsontable.com/docs/api/classes/hyperformulans # HyperFormulaNS Aggregate class for default export ## Other ### ArraySize ▪ **ArraySize**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* = ArraySize *Defined in [src/index.ts:79](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L79)* ___ ### CellError ▪ **CellError**: *[CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* = CellError *Defined in [src/index.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L67)* ___ ### CellType ▪ **CellType**: *[CellType](https://hyperformula.handsontable.com/docs/api/enums/celltype.md)* = CellType *Defined in [src/index.ts:68](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L68)* ___ ### CellValueDetailedType ▪ **CellValueDetailedType**: *object* = CellValueDetailedType *Defined in [src/index.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L70)* #### Type declaration: ___ ### CellValueType ▪ **CellValueType**: *object* = CellValueType *Defined in [src/index.ts:69](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L69)* #### Type declaration: ___ ### ConfigValueTooBigError ▪ **ConfigValueTooBigError**: *[ConfigValueTooBigError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoobigerror.md)* = ConfigValueTooBigError *Defined in [src/index.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L74)* ___ ### ConfigValueTooSmallError ▪ **ConfigValueTooSmallError**: *[ConfigValueTooSmallError](https://hyperformula.handsontable.com/docs/api/classes/configvaluetoosmallerror.md)* = ConfigValueTooSmallError *Defined in [src/index.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L75)* ___ ### DetailedCellError ▪ **DetailedCellError**: *[DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* = DetailedCellError *Defined in [src/index.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L71)* ___ ### EmptyValue ▪ **EmptyValue**: *symbol* = EmptyValue *Defined in [src/index.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L81)* ___ ### ErrorType ▪ **ErrorType**: *[ErrorType](https://hyperformula.handsontable.com/docs/api/enums/errortype.md)* = ErrorType *Defined in [src/index.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L66)* ___ ### EvaluationSuspendedError ▪ **EvaluationSuspendedError**: *[EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/evaluationsuspendederror.md)* = EvaluationSuspendedError *Defined in [src/index.ts:76](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L76)* ___ ### ExpectedOneOfValuesError ▪ **ExpectedOneOfValuesError**: *[ExpectedOneOfValuesError](https://hyperformula.handsontable.com/docs/api/classes/expectedoneofvalueserror.md)* = ExpectedOneOfValuesError *Defined in [src/index.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L77)* ___ ### ExpectedValueOfTypeError ▪ **ExpectedValueOfTypeError**: *[ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/expectedvalueoftypeerror.md)* = ExpectedValueOfTypeError *Defined in [src/index.ts:78](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L78)* ___ ### ExportedCellChange ▪ **ExportedCellChange**: *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md)* = ExportedCellChange *Defined in [src/index.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L72)* ___ ### ExportedNamedExpressionChange ▪ **ExportedNamedExpressionChange**: *[ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* = ExportedNamedExpressionChange *Defined in [src/index.ts:73](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L73)* ___ ### FunctionArgumentType ▪ **FunctionArgumentType**: *FunctionArgumentType* = FunctionArgumentType *Defined in [src/index.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L83)* ___ ### FunctionPlugin ▪ **FunctionPlugin**: *FunctionPlugin* = FunctionPlugin *Defined in [src/index.ts:82](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L82)* ___ ### FunctionPluginValidationError ▪ **FunctionPluginValidationError**: *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* = FunctionPluginValidationError *Defined in [src/index.ts:84](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L84)* ___ ### HyperFormula ▪ **HyperFormula**: *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* = HyperFormula *Defined in [src/index.ts:65](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L65)* ___ ### InvalidAddressError ▪ **InvalidAddressError**: *[InvalidAddressError](https://hyperformula.handsontable.com/docs/api/classes/invalidaddresserror.md)* = InvalidAddressError *Defined in [src/index.ts:85](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L85)* ___ ### InvalidArgumentsError ▪ **InvalidArgumentsError**: *[InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/invalidargumentserror.md)* = InvalidArgumentsError *Defined in [src/index.ts:86](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L86)* ___ ### LanguageAlreadyRegisteredError ▪ **LanguageAlreadyRegisteredError**: *[LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagealreadyregisterederror.md)* = LanguageAlreadyRegisteredError *Defined in [src/index.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L88)* ___ ### LanguageNotRegisteredError ▪ **LanguageNotRegisteredError**: *[LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/languagenotregisterederror.md)* = LanguageNotRegisteredError *Defined in [src/index.ts:87](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L87)* ___ ### MissingTranslationError ▪ **MissingTranslationError**: *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* = MissingTranslationError *Defined in [src/index.ts:89](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L89)* ___ ### NamedExpressionDoesNotExistError ▪ **NamedExpressionDoesNotExistError**: *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* = NamedExpressionDoesNotExistError *Defined in [src/index.ts:90](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L90)* ___ ### NamedExpressionNameIsAlreadyTakenError ▪ **NamedExpressionNameIsAlreadyTakenError**: *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* = NamedExpressionNameIsAlreadyTakenError *Defined in [src/index.ts:91](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L91)* ___ ### NamedExpressionNameIsInvalidError ▪ **NamedExpressionNameIsInvalidError**: *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* = NamedExpressionNameIsInvalidError *Defined in [src/index.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L92)* ___ ### NoOperationToRedoError ▪ **NoOperationToRedoError**: *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* = NoOperationToRedoError *Defined in [src/index.ts:93](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L93)* ___ ### NoOperationToUndoError ▪ **NoOperationToUndoError**: *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* = NoOperationToUndoError *Defined in [src/index.ts:94](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L94)* ___ ### NoRelativeAddressesAllowedError ▪ **NoRelativeAddressesAllowedError**: *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* = NoRelativeAddressesAllowedError *Defined in [src/index.ts:95](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L95)* ___ ### NoSheetWithIdError ▪ **NoSheetWithIdError**: *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* = NoSheetWithIdError *Defined in [src/index.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L96)* ___ ### NoSheetWithNameError ▪ **NoSheetWithNameError**: *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* = NoSheetWithNameError *Defined in [src/index.ts:97](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L97)* ___ ### NotAFormulaError ▪ **NotAFormulaError**: *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* = NotAFormulaError *Defined in [src/index.ts:98](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L98)* ___ ### NothingToPasteError ▪ **NothingToPasteError**: *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* = NothingToPasteError *Defined in [src/index.ts:99](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L99)* ___ ### ProtectedFunctionTranslationError ▪ **ProtectedFunctionTranslationError**: *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* = ProtectedFunctionTranslationError *Defined in [src/index.ts:100](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L100)* ___ ### SheetNameAlreadyTakenError ▪ **SheetNameAlreadyTakenError**: *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* = SheetNameAlreadyTakenError *Defined in [src/index.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L101)* ___ ### SheetSizeLimitExceededError ▪ **SheetSizeLimitExceededError**: *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* = SheetSizeLimitExceededError *Defined in [src/index.ts:102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L102)* ___ ### SimpleRangeValue ▪ **SimpleRangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* = SimpleRangeValue *Defined in [src/index.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L80)* ___ ### SourceLocationHasArrayError ▪ **SourceLocationHasArrayError**: *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* = SourceLocationHasArrayError *Defined in [src/index.ts:103](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L103)* ___ ### TargetLocationHasArrayError ▪ **TargetLocationHasArrayError**: *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* = TargetLocationHasArrayError *Defined in [src/index.ts:104](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L104)* ___ ### UnableToParseError ▪ **UnableToParseError**: *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* = UnableToParseError *Defined in [src/index.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L105)* ___ ## Static Properties ### buildDate ▪ **buildDate**: *string* = process.env.HT_BUILD_DATE as string *Defined in [src/HyperFormula.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L105)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:121](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L121)* When using the UMD build, this property contains all available languages to use with the [registerLanguage](#registerlanguage) method. For more information, see the [Localizing functions](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) guide. ___ ### releaseDate ▪ **releaseDate**: *string* = process.env.HT_RELEASE_DATE as string *Defined in [src/HyperFormula.ts:112](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L112)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:98](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L98)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:160](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L160)* Returns all of HyperFormula's default [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // returns all default configuration options const defaultConfig = HyperFormula.defaultConfig; ``` **`category`** Static Accessors **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ## Factories ### buildEmpty ▸ **buildEmpty**(`configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:353](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L353)* Builds an empty engine instance. Can be configured with the optional parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`example`** ```js const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // build with no initial data and with optional config parameter maxColumns const hfInstance = HyperFormula.buildEmpty({ maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromArray ▸ **buildFromArray**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L279)* Builds the engine for a sheet from a two-dimensional array representation. The engine is created with a single sheet. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified, the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an array const sheetData = [ ['0', '=SUM(1, 2, 3)', '52'], ['=SUM(A1:C1)', '', '=A1'], ['2', '=SUM(A1:C1)', '=theUltimateQuestionOfLife'], ]; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter maxColumns const hfInstance = HyperFormula.buildFromArray(sheetData, { maxColumns: 1000 }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | - | two-dimensional array representation of sheet | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ### buildFromSheets ▸ **buildFromSheets**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets), `configInput`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `namedExpressions`: [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]): *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* *Defined in [src/HyperFormula.ts:326](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L326)* Builds the engine from an object containing multiple sheets with names. The engine is created with one or more sheets. Can be configured with the optional second parameter that represents a [ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md). If not specified the engine will be built with the default configuration. **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when sheet size exceeds the limits **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when any sheet is not an array of arrays **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`example`** ```js // data represented as an object with sheets: Sheet1 and Sheet2 const sheetData = { 'Sheet1': [ ['1', '', '=Sheet2!$A1'], ['', '2', '=SUM(1, 2, 3)'], ['=Sheet2!$A2', '2', ''], ], 'Sheet2': [ ['', '4', '=Sheet1!$B1'], ['', '8', '=SUM(9, 3, 3)'], ['=Sheet1!$B1', '2', '=theUltimateQuestionOfLife'], ], }; const namedExpressions = [ { name: 'theUltimateQuestionOfLife', expression: '=42', }, ]; // method with optional config parameter useColumnIndex const hfInstance = HyperFormula.buildFromSheets(sheetData, { useColumnIndex: true }, namedExpressions); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | - | object with sheets definition | `configInput` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | engine configuration | `namedExpressions` | [SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[] | [] | starting named expressions | **Returns:** *[HyperFormula](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md)* ___ ## Instance ### destroy ▸ **destroy**(): *void* *Defined in [src/HyperFormula.ts:4846](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4846)* Destroys instance of HyperFormula. **`example`** ```js // destroys the instance hfInstance.destroy(); ``` **Returns:** *void* ___ ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:1278](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1278)* Returns current configuration of the engine instance. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`example`** ```js // should return all config metadata including default and those which were added const hfConfig = hfInstance.getConfig(); ``` **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### rebuildAndRecalculate ▸ **rebuildAndRecalculate**(): *void* *Defined in [src/HyperFormula.ts:1292](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1292)* Rebuilds the HyperFormula instance preserving the current sheets data. **`example`** ```js hfInstance.rebuildAndRecalculate(); ``` **Returns:** *void* ___ ### updateConfig ▸ **updateConfig**(`newParams`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *void* *Defined in [src/HyperFormula.ts:1255](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1255)* Updates the config with given new metadata. It is an expensive operation, as it might trigger rebuilding the engine and recalculation of all formulas. For more information, see the [Configuration options guide](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when some parameters of config are of wrong type (e.g., currencySymbol) **`throws`** [ConfigValueEmpty](https://hyperformula.handsontable.com/docs/api/classes/configvalueempty.md) when some parameters of config are of invalid value (e.g., currencySymbol) **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // add a config param, for example maxColumns, // you can check the configuration with getConfig method hfInstance.updateConfig({ maxColumns: 1000 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `newParams` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | configuration options to be updated or added | **Returns:** *void* ___ ## Sheets ### addSheet ▸ **addSheet**(`sheetName?`: undefined | string): *string* *Defined in [src/HyperFormula.ts:2869](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2869)* Adds a new sheet to the HyperFormula instance. Returns given or autogenerated name of a new sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetadded) after the sheet was added **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetnamealreadytakenerror) when sheet with a given name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet3' const nameProvided = hfInstance.addSheet('MySheet3'); // should return autogenerated 'Sheet4' // because no name was provided and 3 other ones already exist const generatedName = hfInstance.addSheet(); ``` **Parameters:** Name | Type | ------ | ------ | `sheetName?` | undefined | string | **Returns:** *string* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3017](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3017)* Clears the sheet content. Double-checks if the sheet exists. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0, // }] const changes = hfInstance.clearSheet(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### countSheets ▸ **countSheets**(): *number* *Defined in [src/HyperFormula.ts:3706](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3706)* Returns the number of existing sheets. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return the number of sheets which is '1' const sheetsCount = hfInstance.countSheets(); ``` **Returns:** *number* ___ ### doesSheetExist ▸ **doesSheetExist**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:3425](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3425)* Returns `true` whether sheet with a given name exists. The method accepts sheet name to be checked. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' since 'MySheet1' exists const sheetExist = hfInstance.doesSheetExist('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, case-insensitive. | **Returns:** *boolean* ___ ### getAllSheetsDimensions ▸ **getAllSheetsDimensions**(): *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* *Defined in [src/HyperFormula.ts:1131](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1131)* Returns a map containing dimensions of all sheets for the engine instance represented as a key-value pairs where keys are sheet IDs and dimensions are returned as numbers, width and height respectively. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [ ['1', '2', '=Sheet2!$A1'], ], Sheet2: [ ['3'], ['4'], ], }); // should return the dimensions of all sheets: // { Sheet1: { width: 3, height: 1 }, Sheet2: { width: 1, height: 2 } } const allSheetsDimensions = hfInstance.getAllSheetsDimensions(); ``` **Returns:** *Record‹string, [SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)›* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, (string | undefined)[][]›* *Defined in [src/HyperFormula.ts:1202](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1202)* Returns formulas of all sheets in a form of an object which property keys are strings and values are 2D arrays of strings or possibly `undefined` when the call does not contain a formula. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1+10'], ]); // should return only formulas: { Sheet1: [ [ undefined, undefined, '=A1+10' ] ] } const allSheetsFormulas = hfInstance.getAllSheetsFormulas(); ``` **Returns:** *Record‹string, (string | undefined)[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/HyperFormula.ts:1227](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1227)* Returns formulas or values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent). Each non-formula cell is serialized to the exact value it was set with, preserving its type. For example, a cell set with the string `'1'` is serialized as the string `'1'`, while a cell set with the number `1` is serialized as the number `1`. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', 2, '=A1+10'], ]); // should return all sheets serialized content: { Sheet1: [ [ '1', 2, '=A1+10' ] ] } // note: the string '1' stays a string and the number 2 stays a number const allSheetsSerialized = hfInstance.getAllSheetsSerialized(); ``` **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/HyperFormula.ts:1183](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1183)* Returns values of all sheets in a form of an object which property keys are strings and values are 2D arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue). **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '=A1+10', '3'], ]); // should return all sheets values: { Sheet1: [ [ 1, 11, 3 ] ] } const allSheetsValues = hfInstance.getAllSheetsValues(); ``` **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getSheetDimensions ▸ **getSheetDimensions**(`sheetId`: number): *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* *Defined in [src/HyperFormula.ts:1158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1158)* Returns dimensions of a specified sheet. The sheet dimensions is represented with numbers: width and height. Note: Due to the memory optimizations, some of the empty bottom rows and rightmost columns are not counted to the dimensions. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=Sheet2!$A1'], ]); // should return provided sheet's dimensions: { width: 3, height: 1 } const sheetDimensions = hfInstance.getSheetDimensions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[SheetDimensions](https://hyperformula.handsontable.com/docs/api/globals.md#sheetdimensions)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheetId`: number): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:1068](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1068)* Returns an array with normalized formula strings from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) or `undefined` for a cells that have no value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all formulas of a sheet: // [ // [undefined, '=SUM(1, 2, 3)', '=A1'], // [undefined, '=TEXT(A2, "0.0%")', '=C1'], // [undefined, '=SUM(A1:C1)', '=C1'], // ]; const sheetFormulas = hfInstance.getSheetFormulas(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *(string | undefined)[][]* ___ ### getSheetId ▸ **getSheetId**(`sheetName`: string): *number | undefined* *Defined in [src/HyperFormula.ts:3400](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3400)* Returns a unique sheet ID assigned to the sheet with a given name or `undefined` if the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return '0' because 'MySheet1' is of ID '0' const sheetID = hfInstance.getSheetId('MySheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | name of the sheet, for which we want to retrieve ID, case-insensitive. | **Returns:** *number | undefined* ___ ### getSheetName ▸ **getSheetName**(`sheetId`: number): *string | undefined* *Defined in [src/HyperFormula.ts:3354](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3354)* Returns a unique sheet name assigned to the sheet of a given ID or `undefined` if the there is no sheet with a given ID. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'MySheet2' as this sheet is the second one const sheetName = hfInstance.getSheetName(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of the sheet, for which we want to retrieve name | **Returns:** *string | undefined* ___ ### getSheetNames ▸ **getSheetNames**(): *string[]* *Defined in [src/HyperFormula.ts:3376](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3376)* List all sheet names. Returns an array of sheet names as strings. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return all sheets names: ['MySheet1', 'MySheet2'] const sheetNames = hfInstance.getSheetNames(); ``` **Returns:** *string[]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheetId`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:1101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1101)* Returns an array of arrays of [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with serialized content of cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet), either a cell formula or an explicit value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return: // [ // ['0', '=SUM(1, 2, 3)', '=A1'], // ['1', '=TEXT(A2, "0.0%")', '=C1'], // ['2', '=SUM(A1:C1)', '=C1'], // ]; const serializedContent = hfInstance.getSheetSerialized(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:1035](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1035)* Returns an array of arrays of [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) with values of all cells from [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet). Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ['1', '=TEXT(A2, "0.0%")', '=C1'], ['2', '=SUM(A1:C1)', '=C1'], ]); // should return all values of a sheet: [[0, 6, 0], [1, '1.0%', 0], [2, 6, 0]] const sheetValues = hfInstance.getSheetValues(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isItPossibleToAddSheet ▸ **isItPossibleToAddSheet**(`sheetName`: string): *boolean* *Defined in [src/HyperFormula.ts:2830](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2830)* Returns information whether it is possible to add a sheet to the engine. Checks against particular rules to ascertain that addSheet can be called. If returns `true`, doing [addSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addsheet) operation won't throw any errors, and it is possible to add sheet with provided name. Returns `false` if the chosen name is already used. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'false' because 'MySheet2' already exists const isAddable = hfInstance.isItPossibleToAddSheet('MySheet2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetName` | string | sheet name, case-insensitive | **Returns:** *boolean* ___ ### isItPossibleToClearSheet ▸ **isItPossibleToClearSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2975](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2975)* Returns information whether it is possible to clear a specified sheet. If returns `true`, doing [clearSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#clearsheet) operation won't throw any errors, provided sheet exists and its content can be cleared. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because 'MySheet2' exists and can be cleared const isClearable = hfInstance.isItPossibleToClearSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRemoveSheet ▸ **isItPossibleToRemoveSheet**(`sheetId`: number): *boolean* *Defined in [src/HyperFormula.ts:2901](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2901)* Returns information whether it is possible to remove sheet for the engine. Returns `true` if the provided sheet exists, and therefore it can be removed, doing [removeSheet](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removesheet) operation won't throw any errors. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet with ID 1 exists and is removable const isRemovable = hfInstance.isItPossibleToRemoveSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *boolean* ___ ### isItPossibleToRenameSheet ▸ **isItPossibleToRenameSheet**(`sheetId`: number, `newName`: string): *boolean* *Defined in [src/HyperFormula.ts:3733](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3733)* Returns information whether it is possible to rename sheet. Returns `true` if the sheet with provided id exists and new name is available Returns `false` if sheet cannot be renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // returns true hfInstance.isItPossibleToRenameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number | `newName` | string | a name of the sheet to be given | **Returns:** *boolean* ___ ### isItPossibleToReplaceSheetContent ▸ **isItPossibleToReplaceSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *boolean* *Defined in [src/HyperFormula.ts:3047](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3047)* Returns information whether it is possible to replace the sheet content. If returns `true`, doing [setSheetContent](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setsheetcontent) operation won't throw any errors, the provided sheet exists and then its content can be replaced. Returns `false` otherwise **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return 'true' because sheet of ID 0 exists // and the provided content can be placed in this sheet const isReplaceable = hfInstance.isItPossibleToReplaceSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *boolean* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2944](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2944)* Removes a sheet Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetremoved) after the sheet was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeSheet(1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *void* *Defined in [src/HyperFormula.ts:3771](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3771)* Renames a specified sheet. Note that this method may trigger dependency graph recalculation. **`fires`** [sheetRenamed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#sheetrenamed) after the sheet was renamed **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetnamealreadytakenerror) when the provided sheet name already exists **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // renames the sheet 'MySheet1' hfInstance.renameSheet(0, 'MySheet0'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet ID | `newName` | string | a name of the sheet to be given, if is the same as the old one the method does nothing | **Returns:** *void* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `values`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3084](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3084)* Replaces the sheet content with new values. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when values argument is not an array of arrays **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.setSheetContent(0, [['50'], ['60']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID. | `values` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | array of new values | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Ranges ### getFillRangeData ▸ **getFillRangeData**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `target`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `offsetsFromTarget`: boolean): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2786](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2786)* Returns values to fill target range using source range, with properly extending the range using wrap-around heuristic. **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source or target are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([[1, '=A1'], ['=$A$1', '2']]); // should return [['2', '=$A$1', '2'], ['=A3', 1, '=C3'], ['2', '=$A$1', '2']] hfInstance.getFillRangeData( {start: {sheet: 0, row: 0, col: 0}, end: {sheet: 0, row: 1, col: 1}}, {start: {sheet: 0, row: 1, col: 1}, end: {sheet: 0, row: 3, col: 3}}); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | of data | `target` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | range where data is intended to be put | `offsetsFromTarget` | boolean | false | if true, offsets are computed from target corner, otherwise from source corner | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeFormulas ▸ **getRangeFormulas**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *(string | undefined)[][]* *Defined in [src/HyperFormula.ts:2713](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2713)* Returns cell formulas in given range. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns cell formulas of a given range only: // [ [ '=SUM(1, 2)', undefined ], [ undefined, undefined ] ] const rangeFormulas = hfInstance.getRangeFormulas({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *(string | undefined)[][]* ___ ### getRangeSerialized ▸ **getRangeSerialized**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/HyperFormula.ts:2752](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2752)* Returns serialized cells in given range. Each non-formula cell is serialized to the exact value it was set with, preserving its type (e.g., a cell set with the string `'2'` is serialized as the string `'2'`, while a cell set with the number `2` is serialized as the number `2`). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', 2, 10], [5, 6, 7], [40, 30, 20], ]); // should return serialized cell content for the given range: // [ [ '=SUM(1, 2)', 2 ], [ 5, 6 ] ] const rangeSerialized = hfInstance.getRangeSerialized({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getRangeValues ▸ **getRangeValues**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2677](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2677)* Returns the cell content of a given range in a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][] format. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2)', '2', '10'], ['5', '6', '7'], ['40', '30', '20'], ]); // returns calculated cells content: [ [ 3, 2 ], [ 5, 6 ] ] const rangeValues = hfInstance.getRangeValues({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 1 } }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangular range | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ## Rows ### addRows ▸ **addRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1924](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1924)* Adds multiple rows into a specified position in a given sheet. Does nothing if rows are outside effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.addRows(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddRows ▸ **isItPossibleToAddRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1882](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1882)* Returns information whether it is possible to add rows into a specified position in a given sheet. Checks against particular rules to ascertain that addRows can be called. If returns `true`, doing [addRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addrows) operation won't throw any errors. Returns `false` if adding rows would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // should return 'true' for this example, // it is possible to add one row in the second row of sheet 0 const isAddable = hfInstance.isItPossibleToAddRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which rows will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [row, amount], where row is a row number above which the rows will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveRows ▸ **isItPossibleToMoveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *boolean* *Defined in [src/HyperFormula.ts:2279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2279)* Returns information whether it is possible to move a particular number of rows to a specified position in a given sheet. Checks against particular rules to ascertain that moveRows can be called. If returns `true`, doing [moveRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#moverows) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected rows, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to move one row from row 0 into row 2 const isMovable = hfInstance.isItPossibleToMoveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveRows ▸ **isItPossibleToRemoveRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:1955](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1955)* Returns information whether it is possible to remove rows from a specified position in a given sheet. Checks against particular rules to ascertain that removeRows can be called. If returns `true`, doing [removeRows](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removerows) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return 'true' for this example // it is possible to remove one row from row 1 of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetRowOrder ▸ **isItPossibleToSetRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1677](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1677)* Checks if it is possible to reorder rows of a sheet according to a permutation. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`, i.e. the value at index `i` is the new position for the row that is currently at index `i`. See [setRowOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setroworder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // returns true hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); // returns false (array length must match the number of rows) hfInstance.isItPossibleToSetRowOrder(0, [2]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows | **Returns:** *boolean* ___ ### isItPossibleToSwapRowIndexes ▸ **isItPossibleToSwapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1590](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1590)* Checks if it is possible to reorder rows of a sheet according to a source-target mapping. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // returns true const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 2], [2, 0]]); // returns false const isSwappable = hfInstance.isItPossibleToSwapRowIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *boolean* ___ ### moveRows ▸ **moveRows**(`sheetId`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2326](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2326)* Moves a particular number of rows to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values const changes = hfInstance.moveRows(0, 0, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startRow` | number | number of the first row to move | `numberOfRows` | number | number of rows to move | `targetRow` | number | row number before which rows will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeRows ▸ **removeRows**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1996](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1996)* Removes multiple rows from a specified position in a given sheet. Does nothing if rows are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ]); // should return: [{ sheet: 0, col: 1, row: 2, value: null }] for this example const changes = hfInstance.removeRows(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which rows will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [row, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `newRowOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1642](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1642)* Reorders rows of a sheet according to a permutation of 0-based indexes. Parameter `newRowOrder` should have the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. In other words, the value at index `i` is the new position for the row that is currently at index `i`. Note that this is the opposite of `[ previousPositionForRow0, previousPositionForRow1, ... ]`. This method might be used to [sort the rows of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newRowOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setRowOrder(0, newRowOrder); // Sheet after this operation: [['C'], ['A'], ['B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newRowOrder` | number[] | permutation of rows; array length must match the number of rows returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapRowIndexes ▸ **swapRowIndexes**(`sheetId`: number, `rowMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1559](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1559)* Reorders rows of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when rowMapping does not define correct row permutation for some subset of rows of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1], [2], [4, 5], ]); // should set swap rows 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 0, row: 2 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 1, row: 2 }, // newValue: null, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 1, row: 0 }, // newValue: 5, // }] const changes = hfInstance.swapRowIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `rowMapping` | [number, number][] | array mapping original positions to final positions of rows | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Columns ### addColumns ▸ **addColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2072](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2072)* Adds multiple columns into a specified position in a given sheet. Does nothing if the columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.92754862796338, // }] const changes = hfInstance.addColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isItPossibleToAddColumns ▸ **isItPossibleToAddColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2026](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2026)* Returns information whether it is possible to add columns into a specified position in a given sheet. Checks against particular rules to ascertain that addColumns can be called. If returns `true`, doing [addColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addcolumns) operation won't throw any errors. Returns `false` if adding columns would exceed the sheet size limit or given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example, // it is possible to add 1 column in sheet 0, at column 1 const isAddable = hfInstance.isItPossibleToAddColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID in which columns will be added | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount], where column is a column number from which new columns will be added | **Returns:** *boolean* ___ ### isItPossibleToMoveColumns ▸ **isItPossibleToMoveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *boolean* *Defined in [src/HyperFormula.ts:2361](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2361)* Returns information whether it is possible to move a particular number of columns to a specified position in a given sheet. Checks against particular rules to ascertain that moveColumns can be called. If returns `true`, doing [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecolumns) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to move one column from column 1 into column 2 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *boolean* ___ ### isItPossibleToRemoveColumns ▸ **isItPossibleToRemoveColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *boolean* *Defined in [src/HyperFormula.ts:2102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2102)* Returns information whether it is possible to remove columns from a specified position in a given sheet. Checks against particular rules to ascertain that removeColumns can be called. If returns `true`, doing [removeColumns](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removecolumns) operation won't throw any errors. Returns `false` if given arguments are invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // should return 'true' for this example // it is possible to remove one column, in place of the second column of sheet 0 const isRemovable = hfInstance.isItPossibleToRemoveColumns(0, [1, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format [column, amount] | **Returns:** *boolean* ___ ### isItPossibleToSetColumnOrder ▸ **isItPossibleToSetColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *boolean* *Defined in [src/HyperFormula.ts:1846](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1846)* Checks if it is possible to reorder columns of a sheet according to a permutation. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`, i.e. the value at index `i` is the new position for the column that is currently at index `i`. See [setColumnOrder](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setcolumnorder) for details. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // returns true hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); // returns false (array length must match the number of columns) hfInstance.isItPossibleToSetColumnOrder(0, [1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns | **Returns:** *boolean* ___ ### isItPossibleToSwapColumnIndexes ▸ **isItPossibleToSwapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *boolean* *Defined in [src/HyperFormula.ts:1763](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1763)* Checks if it is possible to reorder columns of a sheet according to a source-target mapping. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // returns true hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 2], [2, 0]]); // returns false hfInstance.isItPossibleToSwapColumnIndexes(0, [[0, 1]]); ``` **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *boolean* ___ ### moveColumns ▸ **moveColumns**(`sheetId`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2414](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2414)* Moves a particular number of columns to a specified position in a given sheet. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3', '=RAND()', '=SUM(A1:C1)'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 0.16210054671639, // }, { // address: { sheet: 0, col: 4, row: 0 }, // newValue: 6.16210054671639, // }] const changes = hfInstance.moveColumns(0, 1, 1, 2); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | a sheet number in which the operation will be performed | `startColumn` | number | number of the first column to move | `numberOfColumns` | number | number of columns to move | `targetColumn` | number | column number before which columns will be moved | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### removeColumns ▸ **removeColumns**(`sheetId`: number, ...`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2147](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2147)* Removes multiple columns from a specified position in a given sheet. Does nothing if columns are outside the effective sheet size. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['0', '=SUM(1, 2, 3)', '=A1'], ]); // should return a list of cells which values changed after the operation, // their absolute addresses and new values, in this example it will return: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: { error: [CellError], value: '#REF!' }, // }] const changes = hfInstance.removeColumns(0, [0, 1]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | sheet ID from which columns will be removed | `...indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | non-contiguous indexes with format: [column, amount] | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `newColumnOrder`: number[]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1813](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1813)* Reorders columns of a sheet according to a permutation of 0-based indexes. Parameter `newColumnOrder` should have the form `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. In other words, the value at index `i` is the new position for the column that is currently at index `i`. Note that this is the opposite of `[ previousPositionForColumn0, previousPositionForColumn1, ... ]`. This method might be used to [sort the columns of a sheet](https://hyperformula.handsontable.com/docs/guide/sorting-data.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note: This method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // Move 'A' to index 1, 'B' to index 2, and 'C' to index 0. const newColumnOrder = [1, 2, 0]; // [ newPosForA, newPosForB, newPosForC ] const changes = hfInstance.setColumnOrder(0, newColumnOrder); // Sheet after this operation: [['C', 'A', 'B']] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `newColumnOrder` | number[] | permutation of columns; array length must match the number of columns returned by [getSheetDimensions()](#getsheetdimensions) | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### swapColumnIndexes ▸ **swapColumnIndexes**(`sheetId`: number, `columnMapping`: [number, number][]): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1735](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1735)* Reorders columns of a sheet according to a source-target mapping. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when columnMapping does not define correct column permutation for some subset of columns of the given sheet **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the selected position has array inside **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [1, 2, 4], [5] ]); // should set swap columns 0 and 2 in place, returns: // [{ // address: { sheet: 0, col: 2, row: 0 }, // newValue: 1, // }, // { // address: { sheet: 0, col: 2, row: 1 }, // newValue: 5, // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 4, // }, // { // address: { sheet: 0, col: 0, row: 1 }, // newValue: null, // }] const changes = hfInstance.swapColumnIndexes(0, [[0, 2], [2, 0]]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheetId` | number | ID of a sheet to operate on | `columnMapping` | [number, number][] | array mapping original positions to final positions of columns | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Cells ### doesCellHaveFormula ▸ **doesCellHaveFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3517](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3517)* Returns `true` if the specified cell contains a formula. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the A1 cell contains a formula const A1Formula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the B1 cell does not contain a formula const B1NoFormula = hfInstance.doesCellHaveFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### doesCellHaveSimpleValue ▸ **doesCellHaveSimpleValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3486](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3486)* Returns `true` if the specified cell contains a simple value. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'true' since the selected cell contains a simple value const isA1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 0, row: 0 }); // should return 'false' since the selected cell does not contain a simple value const isB1Simple = hfInstance.doesCellHaveSimpleValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### getCellFormula ▸ **getCellFormula**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:941](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L941)* Returns a normalized formula string from the cell of a given address or `undefined` for an address that does not exist and empty values. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return a normalized A1 cell formula: '=SUM(1, 2, 3)' const A1Formula = hfInstance.getCellFormula({ sheet: 0, col: 0, row: 0 }); // should return a normalized B1 cell formula: 'undefined' const B1Formula = hfInstance.getCellFormula({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string | undefined* *Defined in [src/HyperFormula.ts:971](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L971)* Returns the `HYPERLINK` url for a cell of a given address or `undefined` for an address that does not exist or a cell that is not `HYPERLINK` **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=HYPERLINK("https://hyperformula.handsontable.com/", "HyperFormula")', '0'], ]); // should return url of 'HYPERLINK': https://hyperformula.handsontable.com/ const A1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 0, row: 0 }); // should return 'undefined' for a cell that is not 'HYPERLINK' const B1Hyperlink = hfInstance.getCellHyperlink({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *string | undefined* ___ ### getCellSerialized ▸ **getCellSerialized**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/HyperFormula.ts:1003](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1003)* Returns [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) with a serialized content of the cell of a given address: either a cell formula, an explicit value, or an error. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '0'], ]); // should return serialized content of A1 cell: '=SUM(1, 2, 3)' const cellA1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 0, row: 0 }); // should return serialized content of B1 cell: '0' const cellB1Serialized = hfInstance.getCellSerialized({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellType ▸ **getCellType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/HyperFormula.ts:3454](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3454)* Returns the type of a cell at a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(A2:A3)', '2'], ]); // should return 'FORMULA', the cell of given coordinates is of this type const cellA1Type = hfInstance.getCellType({ sheet: 0, col: 0, row: 0 }); // should return 'VALUE', the cell of given coordinates is of this type const cellB1Type = hfInstance.getCellType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValue ▸ **getCellValue**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/HyperFormula.ts:910](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L910)* Returns the cell value of a given address. Applies rounding and post-processing. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) when cellAddress is of incorrect type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // get value of A1 cell, should be '6' const A1Value = hfInstance.getCellValue({ sheet: 0, col: 0, row: 0 }); // get value of B1 cell, should be '2' const B1Value = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/HyperFormula.ts:3648](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3648)* Returns detailed type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1%', '1$'], ]); // should return 'NUMBER_PERCENT', cell value type of provided coordinates is a number with a format inference percent. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 }); // should return 'NUMBER_CURRENCY', cell value type of provided coordinates is a number with a format inference currency. const cellType = hfInstance.getCellValueDetailedType({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *FormatInfo* *Defined in [src/HyperFormula.ts:3682](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3682)* Returns auxiliary format information of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1$', '1'], ]); // should return '$', cell value type of provided coordinates is a number with a format inference currency, parsed as using '$' as currency. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 0, row: 0 }); // should return undefined, cell value type of provided coordinates is a number with no format information. const cellFormat = hfInstance.getCellValueFormat({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *FormatInfo* ___ ### getCellValueType ▸ **getCellValueType**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/HyperFormula.ts:3612](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3612)* Returns type of the cell value of a given address. The method accepts cell coordinates as object with column, row and sheet numbers. For more information, see the [Types of values guide](https://hyperformula.handsontable.com/docs/guide/types-of-values.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=SUM(1, 2, 3)', '2'], ]); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 1, row: 0 }); // should return 'NUMBER', cell value type of provided coordinates is a number const cellValue = hfInstance.getCellValueType({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### isCellEmpty ▸ **isCellEmpty**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3549](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3549)* Returns`true` if the specified cell is empty. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ [null, '1'], ]); // should return 'true', cell of provided coordinates is empty const isEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 0, row: 0 }); // should return 'false', cell of provided coordinates is not empty const isNotEmpty = hfInstance.isCellEmpty({ sheet: 0, col: 1, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isCellPartOfArray ▸ **isCellPartOfArray**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:3577](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3577)* Returns `true` if a given cell is a part of an array. The method accepts cell coordinates as object with column, row and sheet numbers. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if cellAddress is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['{=TRANSPOSE(B1:B1)}'], ]); // should return 'true', cell of provided coordinates is a part of an array const isPartOfArray = hfInstance.isCellPartOfArray({ sheet: 0, col: 0, row: 0 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | cell coordinates | **Returns:** *boolean* ___ ### isItPossibleToMoveCells ▸ **isItPossibleToMoveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/HyperFormula.ts:2183](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2183)* Returns information whether it is possible to move cells to a specified position in a given sheet. Checks against particular rules to ascertain that moveCells can be called. If returns `true`, doing [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells) operation won't throw any errors. Returns `false` if the operation might be disrupted and causes side effects by the fact that there is an array inside the selected columns, the target location includes an array or the provided address is invalid. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if destinationLeftCorner, source, or any of basic type arguments are of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return 'true' for this example // it is possible to move a block of width 1 and height 1 // from the corner: column 1 and row 0 of sheet 0 // into destination corner: column 3, row 0 of sheet 0 const isMovable = hfInstance.isItPossibleToMoveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *boolean* ___ ### isItPossibleToSetCellContents ▸ **isItPossibleToSetCellContents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *boolean* *Defined in [src/HyperFormula.ts:1454](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1454)* Returns information whether it is possible to change the content in a rectangular area bounded by the box. If returns `true`, doing [setCellContents](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#setcellcontents) operation won't throw any errors. Returns `false` if the address is invalid or the sheet does not exist. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // top left corner const address1 = { col: 0, row: 0, sheet: 0 }; // bottom right corner const address2 = { col: 1, row: 0, sheet: 0 }; // should return 'true' for this example, it is possible to set content of // width 2, height 1 in the first row and column of sheet 0 const isSettable = hfInstance.isItPossibleToSetCellContents({ start: address1, end: address2 }); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | single cell or block of cells to check | **Returns:** *boolean* ___ ### moveCells ▸ **moveCells**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2240](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2240)* Moves the content of a cell block from source to the target location. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if destinationLeftCorner or source are of wrong type **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the given arguments are invalid **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sourcelocationhasarrayerror) when the source location has array inside - array cannot be moved **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the target location has array inside - cells cannot be replaced by the array **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['=RAND()', '42'], ]); // choose the coordinates and assign them to variables const source = { sheet: 0, col: 1, row: 0 }; const destination = { sheet: 0, col: 3, row: 0 }; // should return a list of cells which values changed after the operation, // their absolute addresses and new values, for this example: // [{ // address: { sheet: 0, col: 0, row: 0 }, // newValue: 0.93524248002062, // }] const changes = hfInstance.moveCells({ start: source, end: source }, destination); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | range for a moved block | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### setCellContents ▸ **setCellContents**(`topLeftCornerAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `cellContents`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1507](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1507)* Sets the content for a block of cells of a given coordinates. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [InvalidArgumentsError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-invalidargumentserror) when the value is not an array of arrays or a raw cell value **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if topLeftCornerAddress argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // should set the content, returns: // [{ // address: { sheet: 0, col: 3, row: 0 }, // newValue: 2, // }] const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `topLeftCornerAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | top left corner of block of cells | `cellContents` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | array with content | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Named Expressions ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4002](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4002)* Adds a specified named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionAdded](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionadded) always, unless [batch](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#batch) mode is used **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressionnameisalreadytakenerror) when the named-expression name is not available. **`throws`** [NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressionnameisinvaliderror) when the named-expression name is not valid **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-norelativeaddressesallowederror) when the named-expression formula contains relative references **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add own expression, scope limited to 'Sheet1' (sheetId=0), the method should return a list of cells which values // changed after the operation, their absolute addresses and new values // for this example: // [{ // name: 'prettyName', // newValue: 142, // }] const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### changeNamedExpression ▸ **changeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4224](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4224)* Changes a given named expression to a specified formula. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressiondoesnotexisterror) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`throws`** [[ArrayFormulasNotSupportedError]] when the named expression formula is an array formula **`throws`** [NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-norelativeaddressesallowederror) when the named expression formula contains relative references **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, scope limited to 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // change the named expression const changes = hfInstance.changeNamedExpression('prettyName', '=Sheet1!$A$1+200'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | additional metadata related to named expression | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/HyperFormula.ts:4392](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4392)* Returns all named expressions serialized. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('prettyName3', '=Sheet1!$A$3+100', 0); // get all expressions serialized // should return: // [ // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: undefined}, // {name: 'anotherPrettyName', expression: '=Sheet1!$A$2+100', options: undefined, scope: undefined}, // {name: 'alsoPrettyName', expression: '=Sheet1!$A$3+100', options: undefined, scope: 0} // ] const allExpressions = hfInstance.getAllNamedExpressionsSerialized(); ``` **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getNamedExpression ▸ **getNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* *Defined in [src/HyperFormula.ts:4127](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4127)* Returns a named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a named expression that corresponds to the passed name from 'Sheet1' (sheetId=0) // for this example, returns: // {name: 'prettyName', expression: '=Sheet1!$A$1+100', options: undefined, scope: 0} const myFormula = hfInstance.getNamedExpression('prettyName', 0); // for a named expression that doesn't exist, returns 'undefined': const myFormulaTwo = hfInstance.getNamedExpression('uglyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[NamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression.md) | undefined* ___ ### getNamedExpressionFormula ▸ **getNamedExpressionFormula**(`expressionName`: string, `scope?`: undefined | number): *string | undefined* *Defined in [src/HyperFormula.ts:4082](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4082)* Returns a normalized formula string for given named expression, or `undefined` for a named expression that does not exist or does not hold a formula. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression in 'Sheet1' (sheetId=0) hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // returns a normalized formula string corresponding to the passed name from 'Sheet1' (sheetId=0), // '=Sheet1!A1+100' for this example const myFormula = hfInstance.getNamedExpressionFormula('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string | undefined* ___ ### getNamedExpressionValue ▸ **getNamedExpressionValue**(`expressionName`: string, `scope?`: undefined | number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* *Defined in [src/HyperFormula.ts:4040](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4040)* Gets specified named expression value. Returns a [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) or undefined if the given named expression does not exist. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression, only 'Sheet1' (sheetId=0) considered as it is the scope hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 'Sheet1'); // returns the calculated value of a passed named expression, '142' for this example const myFormula = hfInstance.getNamedExpressionValue('prettyName', 'Sheet1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | undefined* ___ ### isItPossibleToAddNamedExpression ▸ **isItPossibleToAddNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:3950](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3950)* Returns information whether it is possible to add named expression into a specific scope. Checks against particular rules to ascertain that addNamedExpression can be called. If returns `true`, doing [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#addnamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // should return 'true' for this example, // it is possible to add named expression to global scope const isAddable = hfInstance.isItPossibleToAddNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | a name of the expression to be added | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | the expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToChangeNamedExpression ▸ **isItPossibleToChangeNamedExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4176](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4176)* Returns information whether it is possible to change named expression in a specific scope. Checks against particular rules to ascertain that changeNamedExpression can be called. If returns `true`, doing [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#changenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToChangeNamedExpression('prettyName', '=Sheet1!$A$1+100'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | a new expression | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### isItPossibleToRemoveNamedExpression ▸ **isItPossibleToRemoveNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *boolean* *Defined in [src/HyperFormula.ts:4260](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4260)* Returns information whether it is possible to remove named expression from a specific scope. Checks against particular rules to ascertain that removeNamedExpression can be called. If returns `true`, doing [removeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#removenamedexpression) operation won't throw any errors. Returns `false` if the operation might be disrupted. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); // should return 'true' for this example, // it is possible to change named expression const isAddable = hfInstance.isItPossibleToRemoveNamedExpression('prettyName'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | an expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *boolean* ___ ### listNamedExpressions ▸ **listNamedExpressions**(`scope?`: undefined | number): *string[]* *Defined in [src/HyperFormula.ts:4354](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4354)* Lists named expressions. - If scope parameter is provided, returns an array of expression names defined for this scope. - If scope parameter is undefined, returns an array of global expression names. For more information, see the [Named expressions guide](https://hyperformula.handsontable.com/docs/guide/named-expressions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ['60'], ]); // add two named expressions and one scoped hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100'); hfInstance.addNamedExpression('anotherPrettyName', '=Sheet1!$A$2+100'); hfInstance.addNamedExpression('alsoPrettyName', '=Sheet1!$A$3+100', 0); // list the expressions, should return: ['prettyName', 'anotherPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(); // list the expressions, should return: ['alsoPrettyName'] for this example const listOfExpressions = hfInstance.listNamedExpressions(0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `scope?` | undefined | number | scope of the named expressions, `sheetId` for local scope or `undefined` for global scope | **Returns:** *string[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `scope?`: undefined | number): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:4305](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4305)* Removes a named expression. Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [namedExpressionRemoved](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#namedexpressionremoved) after the expression was removed **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-namedexpressiondoesnotexisterror) when the given expression does not exist. **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) if no sheet with given sheetId exists **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // add a named expression hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // remove the named expression const changes = hfInstance.removeNamedExpression('prettyName', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `expressionName` | string | expression name, case-insensitive. | `scope?` | undefined | number | scope definition, `sheetId` for local scope or `undefined` for global scope | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Helpers ### calculateFormula ▸ **calculateFormula**(`formulaString`: string, `sheetId`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:4457](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4457)* Calculates fire-and-forget formula, returns the calculated value. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the provided `sheetID` doesn't exist. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ Sheet1: [['58']], Sheet2: [['1', '2', '3'], ['4', '5', '6']] }); // returns the calculated formula's value // for this example, returns `68` const calculatedFormula = hfInstance.calculateFormula('=A1+10', 0); // for this example, returns [['11', '12', '13'], ['14', '15', '16']] const calculatedFormula = hfInstance.calculateFormula('=A1:B3+10', 1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | `sheetId` | number | The ID of a sheet in context of which the formula gets evaluated. | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue) | [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:4622](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4622)* Returns metadata of all functions available in this instance for a function picker, with names translated according to the language set in this instance's configuration. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects this instance's own registry: the built-in functions and any custom (user-registered) functions, plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so their `category` is `'Custom'` and they carry no `shortDescription`. A function with no translation entry for the configured language is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called — in practice, a custom plugin registered without translations for that language. A translation set to an empty string is not a missing entry: it falls back to the canonical id, so the function stays listed under its canonical name. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the list of available functions, translated for the configured language const functions = hfInstance.getAvailableFunctions(); ``` **Returns:** *FunctionListEntry[]* ___ ### getCellDependents ▸ **getCellDependents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3281](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3281)* Returns all the out-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. Including: - All cells with formulas that contain the given cell address or range - Some of the ranges that contain the given cell address or range The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression dependents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if address is not [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) or [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0}); // returns [{ sheet: 0, col: 1, row: 0}, { sheet: 0, col: 2, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getCellPrecedents ▸ **getCellPrecedents**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* *Defined in [src/HyperFormula.ts:3319](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3319)* Returns all the in-neighbors in the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md) for a given cell address or range. In particular: - If the argument is a single cell, `getCellPrecedents()` returns all cells and ranges contained in that cell's formula. - If the argument is a range of cells, `getCellPrecedents()` returns some of the cell addresses and smaller ranges contained in that range (but not all of them). The exact result depends on the optimizations applied by the HyperFormula to the dependency graph, some of which are described in the section ["Optimizations for large ranges"](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md#optimizations-for-large-ranges). The returned array includes also named expression precedents. They are represented as cell references with sheet ID `-1`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if address is of wrong type **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray( [ ['1', '=A1', '=A1+B1'] ] ); hfInstance.getCellPrecedents({ sheet: 0, col: 2, row: 0}); // returns [{ sheet: 0, col: 0, row: 0}, { sheet: 0, col: 1, row: 0}] ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | object representation of an absolute address or range of addresses | **Returns:** *([SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md))[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:4666](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4666)* Returns the full metadata of a single function registered in this instance, with names translated according to the language set in this instance's configuration: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Resolves both built-in and custom (user-registered) functions, as well as aliases. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. Returns `undefined` when the function id is unknown, not registered in this instance, or has no translation entry for the configured language (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions)). For a custom function, `category` is `'Custom'`, there is no `shortDescription`, `documentationUrl` or `examples`, and parameters are reported positionally (`Arg1`, `Arg2`, ...). `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: under `plPL` this method reports `localizedName: 'SUMA.JEŻELI'` for `'SUMIF'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // get the details of the SUMIF function, translated for the configured language const details = hfInstance.getFunctionDetails('SUMIF'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | **Returns:** *FunctionDetails | undefined* ___ ### getNamedExpressionsFromFormula ▸ **getNamedExpressionsFromFormula**(`formulaString`: string): *string[]* *Defined in [src/HyperFormula.ts:4488](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4488)* Return a list of named expressions used by a formula. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type arguments is of wrong type. **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula (i.e., doesn't start with `=`). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // returns a list of named expressions used by a formula // for this example, returns ['foo', 'bar'] const namedExpressions = hfInstance.getNamedExpressionsFromFormula('=foo+bar*2'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | A formula in a proper format, starting with `=`. | **Returns:** *string[]* ___ ### normalizeFormula ▸ **normalizeFormula**(`formulaString`: string): *string* *Defined in [src/HyperFormula.ts:4421](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4421)* Parses and then unparses a formula. Returns a normalized formula (e.g., restores the original capitalization of sheet names, function names, cell addresses, and named expressions). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-notaformulaerror) when the provided string is not a valid formula, i.e., does not start with "=" **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ['50'], ]); // returns '=Sheet1!$A$1+10' const normalizedFormula = hfInstance.normalizeFormula('=SHEET1!$A$1+10'); // returns '=3*$A$1' const normalizedFormula = hfInstance.normalizeFormula('=3*$a$1'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *string* ___ ### numberToDate ▸ **numberToDate**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4720](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4720)* Interprets number as a date. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date, for this example: // {year: 2020, month: 1, day: 15} const dateFromNumber = hfInstance.numberToDate(43845); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are ignored. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToDateTime ▸ **numberToDateTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4694](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4694)* Interprets number as a date + time. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass the number of days since nullDate // the method should return formatted date and time, for this example: // {year: 2020, month: 1, day: 15, hours: 2, minutes: 24, seconds: 0} const dateTimeFromNumber = hfInstance.numberToDateTime(43845.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | number of days since nullDate, should be non-negative, fractions are interpreted as hours/minutes/seconds. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### numberToTime ▸ **numberToTime**(`inputNumber`: number): *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* *Defined in [src/HyperFormula.ts:4745](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4745)* Interprets number as a time (hours/minutes/seconds). For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // pass a number to be interpreted as a time // should return {hours: 26, minutes: 24} for this example const timeFromNumber = hfInstance.numberToTime(1.1); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `inputNumber` | number | time in 24h units. | **Returns:** *[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)* ___ ### simpleCellAddressFromString ▸ **simpleCellAddressFromString**(`cellAddress`: string, `contextSheetId`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* *Defined in [src/HyperFormula.ts:3122](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3122)* Computes the simple (absolute) address of a cell address, based on its string representation. - If a sheet name is present in the string representation but is not present in the engine, returns `undefined`. - If no sheet name is present in the string representation, uses `contextSheetId` as a sheet id in the returned address. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // returns { sheet: 42, col: 0, row: 0 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!A6', 42); // returns { sheet: 0, col: 0, row: 5 } const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet0!$A$6', 42); // returns 'undefined', as there's no 'Sheet 2' in the HyperFormula instance const simpleCellAddress = hfInstance.simpleCellAddressFromString('Sheet2!A6', 42); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellAddress` | string | string representation of cell address in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellAddress` argument | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | undefined* ___ ### simpleCellAddressToString ▸ **simpleCellAddressToString**(`cellAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `optionsOrContextSheetId`: object | number): *undefined | string* *Defined in [src/HyperFormula.ts:3191](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3191)* Computes string representation of an absolute address in A1 notation. If `cellAddress.sheet` is not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const addr = { sheet: 0, col: 1, row: 1 }; // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr); // should return 'B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: false }); // should return 'Sheet0!B2' const A1Notation = hfInstance.simpleCellAddressToString(addr, { includeSheetName: true }); // should return 'B2' as context sheet id is the same as addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 0); // should return 'Sheet0!B2' as context sheet id is different from addr.sheet const A1Notation = hfInstance.simpleCellAddressToString(addr, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | - | object representation of an absolute address | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *undefined | string* ___ ### simpleCellRangeFromString ▸ **simpleCellRangeFromString**(`cellRange`: string, `contextSheetId`: number): *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* *Defined in [src/HyperFormula.ts:3151](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3151)* Computes simple (absolute) address of a cell range based on its string representation. If sheet name is present in string representation but not present in the engine, returns `undefined`. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 // should return { start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 1, row: 0 } } const simpleCellAddress = hfInstance.simpleCellRangeFromString('A1:A2', 0); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `cellRange` | string | string representation of cell range in A1 notation | `contextSheetId` | number | sheet id used to construct the simple address in case of missing sheet name in `cellRange` argument | **Returns:** *[SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | undefined* ___ ### simpleCellRangeToString ▸ **simpleCellRangeToString**(`cellRange`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md), `optionsOrContextSheetId`: object | number): *string | undefined* *Defined in [src/HyperFormula.ts:3244](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3244)* Computes string representation of an absolute range in A1 notation. Returns `undefined` if: - `cellRange` is not a valid range, - `cellRange.start.sheet` and `cellRange.start.end` are different, - `cellRange.start.sheet` is not present in the engine, - `cellRange.start.end` is not present in the engine. Note: This method is useful only for cell ranges; does not work with column ranges and row ranges. For more information, see the [Cell references guide](https://hyperformula.handsontable.com/docs/guide/cell-references.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if its arguments are of wrong type **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); hfInstance.addSheet('Sheet0'); //sheetId = 0 const range = { start: { sheet: 0, col: 1, row: 1 }, end: { sheet: 0, col: 2, row: 1 } }; // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range); // should return 'B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: false }); // should return 'Sheet0!B2:C2' const A1Notation = hfInstance.simpleCellRangeToString(range, { includeSheetName: true }); // should return 'B2:C2' as context sheet id is the same as range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 0); // should return 'Sheet0!B2:C2' as context sheet id is different from range.start.sheet and range.end.sheet const A1Notation = hfInstance.simpleCellRangeToString(range, 42); ``` **Parameters:** Name | Type | Default | Description | ------ | ------ | ------ | ------ | `cellRange` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | - | object representation of an absolute range | `optionsOrContextSheetId` | object | number | {} | options object or number used as context sheet id to construct the string address (see examples) | **Returns:** *string | undefined* ___ ### validateFormula ▸ **validateFormula**(`formulaString`: string): *boolean* *Defined in [src/HyperFormula.ts:4522](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4522)* Validates the formula. If the provided string starts with "=" and is a parsable formula, the method returns `true`. The validation is purely grammatical: the method doesn't verify if the formula can be calculated or not. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // checks if the given string is a valid formula, should return 'true' for this example const isFormula = hfInstance.validateFormula('=SUM(1, 2)'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `formulaString` | string | a formula in a proper format - it must start with "=" | **Returns:** *boolean* ___ ## Clipboard ### clearClipboard ▸ **clearClipboard**(): *void* *Defined in [src/HyperFormula.ts:2592](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2592)* Clears the clipboard content. **`example`** ```js // clears the clipboard, isClipboardEmpty() should return true if called afterwards hfInstance.clearClipboard(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *void* ___ ### copy ▸ **copy**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2452](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2452)* Stores a copy of the cell block in internal clipboard for the further paste. Returns the copied values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // it copies [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to copy | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### cut ▸ **cut**(`source`: [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/HyperFormula.ts:2492](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2492)* Stores information of the cell block in internal clipboard for further paste. Calling [paste](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#paste) right after this method is equivalent to call [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells). Almost any CRUD operation called after this method will abort the cut operation. Returns the cut values for use in external clipboard. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if source is of wrong type **`throws`** [SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md) if range provided has distinct sheet numbers for start and end **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // returns the values that were cut: [ [ 1 ] ] const clipboardContent = hfInstance.cut({ start: { sheet: 0, col: 0, row: 0 }, end: { sheet: 0, col: 0, row: 0 }, }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `source` | [SimpleCellRange](https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange.md) | rectangle range to cut | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### isClipboardEmpty ▸ **isClipboardEmpty**(): *boolean* *Defined in [src/HyperFormula.ts:2575](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2575)* Returns information whether there is something in the clipboard. **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // copy desired content const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns 'false', there is content in the clipboard const isClipboardEmpty = hfInstance.isClipboardEmpty(); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Returns:** *boolean* ___ ### paste ▸ **paste**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:2543](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2543)* When called after [copy](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#copy) it pastes copied values and formulas into a cell block. When called after [cut](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#cut) it performs [moveCells](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#movecells) operation into the cell block. Does nothing if the clipboard is empty. For more information, see the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nosheetwithiderror) when the given sheet ID does not exist **`throws`** [EvaluationSuspendedError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-evaluationsuspendederror) when the evaluation is suspended **`throws`** [SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-sheetsizelimitexceedederror) when performing this operation would result in sheet size limits exceeding **`throws`** [NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nothingtopasteerror) when clipboard is empty **`throws`** [TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-targetlocationhasarrayerror) when the selected target area has array inside **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if targetLeftCorner is of wrong type **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // [ [ 2 ] ] was copied const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 }, }); // returns a list of modified cells: their absolute addresses and new values const changes = hfInstance.paste({ sheet: 0, col: 1, row: 0 }); ``` The usage of the internal clipboard is described thoroughly in the [Clipboard Operations guide](https://hyperformula.handsontable.com/docs/guide/clipboard-operations.md). **Parameters:** Name | Type | Description | ------ | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | upper left address of the target cell block | **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Undo and Redo ### clearRedoStack ▸ **clearRedoStack**(): *void* *Defined in [src/HyperFormula.ts:2622](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2622)* Clears the redo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // redo the operation hfInstance.redo(); // clear the redo stack hfInstance.clearRedoStack(); ``` **Returns:** *void* ___ ### clearUndoStack ▸ **clearUndoStack**(): *void* *Defined in [src/HyperFormula.ts:2649](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L2649)* Clears the undo stack in undoRedo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '3'], ]); // do an operation, for example remove columns hfInstance.removeColumns(0, [0, 1]); // undo the operation hfInstance.undo(); // clear the undo stack hfInstance.clearUndoStack(); ``` **Returns:** *void* ___ ### isThereSomethingToRedo ▸ **isThereSomethingToRedo**(): *boolean* *Defined in [src/HyperFormula.ts:1422](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1422)* Checks if there is at least one operation that can be re-done. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js hfInstance.undo(); // when there is an action to redo, this returns 'true' const isSomethingToRedo = hfInstance.isThereSomethingToRedo(); ``` **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/HyperFormula.ts:1403](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1403)* Checks if there is at least one operation that can be undone. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // should return 'true', it is possible to undo last operation // which is removing rows in this example const isSomethingToUndo = hfInstance.isThereSomethingToUndo(); ``` **Returns:** *boolean* ___ ### redo ▸ **redo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1375](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1375)* Re-do recently undone operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nooperationtoredoerror) when there is no operation running that can be re-done **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1'], ['2'], ['3'], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return previous values: [['1'], ['2'], ['3']] hfInstance.undo(); // do a redo, it should return the values after removing the second row: [['1'], ['3']] const changes = hfInstance.redo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### undo ▸ **undo**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:1337](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L1337)* Undo the previous operation. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). Returns [an array of cells whose values changed as a result of this operation](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`throws`** [NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-nooperationtoundoerror) when there is no operation running that can be undone **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ['3', ''], ]); // perform CRUD operation, for example remove the second row hfInstance.removeRows(0, [1, 1]); // undo the operation, it should return the changes const changes = hfInstance.undo(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ## Batch ### batch ▸ **batch**(`batchOperations`: function): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3812](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3812)* Runs the provided callback as a single [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) and returns the changed cells. Returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). Note that this method may trigger dependency graph recalculation. **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // multiple operations in a single callback will trigger evaluation only once // and only one set of changes is returned as a combined result of all // the operations that were triggered within the callback const changes = hfInstance.batch(() => { hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setCellContents({ col: 4, row: 0, sheet: 0 }, [['=A1']]); }); ``` **Parameters:** ▪ **batchOperations**: *function* a function with operations to be performed ▸ (): *void* **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### isEvaluationSuspended ▸ **isEvaluationSuspended**(): *boolean* *Defined in [src/HyperFormula.ts:3921](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3921)* Checks if the dependency graph recalculation process is [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) or not. **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // suspend the evaluation hfInstance.suspendEvaluation(); // between suspendEvaluation() and resumeEvaluation() // or inside batch() callback it will return 'true', otherwise 'false' const isEvaluationSuspended = hfInstance.isEvaluationSuspended(); const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *boolean* ___ ### resumeEvaluation ▸ **resumeEvaluation**(): *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* *Defined in [src/HyperFormula.ts:3895](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3895)* Resumes the dependency graph recalculation that was [suspended](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) with [suspendEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#suspendevaluation). It also triggers the recalculation and returns [an array of cells whose values changed as a result of all batched operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). **`fires`** [valuesUpdated](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#valuesupdated) if recalculation was triggered by this change **`fires`** [evaluationResumed](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationresumed) after the recomputation of necessary values **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // first, suspend the evaluation hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // resume the evaluation const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *[ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]* ___ ### suspendEvaluation ▸ **suspendEvaluation**(): *void* *Defined in [src/HyperFormula.ts:3859](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L3859)* Suspends the dependency graph recalculation to start a [batch operation](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). It allows optimizing the performance. With this method, multiple CRUD operations can be done without triggering recalculation after every operation. Suspending evaluation should result in an overall faster calculation compared to recalculating after each operation separately. To resume the evaluation use [resumeEvaluation](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#resumeevaluation). **`fires`** [evaluationSuspended](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md#evaluationsuspended) always **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ], }); // similar to batch() but operations are not within a callback, // one method suspends the recalculation // the second will resume calculations and return the changes // suspend the evaluation with this method hfInstance.suspendEvaluation(); // perform operations hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); hfInstance.setSheetContent(1, [['50'], ['60']]); // use resumeEvaluation to resume const changes = hfInstance.resumeEvaluation(); ``` **Returns:** *void* ___ ## Events ### off ▸ **off**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4831](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4831)* Unsubscribes from an event or from all events. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a simple function to be called upon emitting an event const handler = ( ) => { console.log('baz') } // subscribe to a 'sheetAdded', pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger an event, // console should print 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from a 'sheetAdded' hfInstance.off('sheetAdded', handler); // add a sheet, the console should not print anything hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4771](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4771)* Subscribes to an event. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.on('sheetAdded', ( ) => { console.log('foo') }); // add a sheet to trigger an event, // console should print 'foo' after each time sheet is added in this example hfInstance.addSheet('FooBar'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`event`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/HyperFormula.ts:4797](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4797)* Subscribes to an event once. For the list of all available events, see [Listeners](https://hyperformula.handsontable.com/docs/api/interfaces/listeners.md). **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // subscribe to a 'sheetAdded', pass a simple handler hfInstance.once('sheetAdded', ( ) => { console.log('foo') }); // call addSheet twice, // console should print 'foo' only once when the sheet is added in this example hfInstance.addSheet('FooBar'); hfInstance.addSheet('FooBaz'); ``` **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | Description | ------ | ------ | ------ | `event` | Event | the name of the event to subscribe to | `listener` | Listeners[Event] | to be called when event is emitted | **Returns:** *void* ___ ## Custom Functions ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:4591](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4591)* Returns classes of all plugins registered in this instance of HyperFormula **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return classes of all plugins registered, assign to a variable const allNames = hfInstance.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:4573](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4573)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; const hfInstance = HyperFormula.buildEmpty(); // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // get the plugin const myPlugin = hfInstance.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(): *string[]* *Defined in [src/HyperFormula.ts:4543](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L4543)* Returns translated names of all functions registered in this instance of HyperFormula according to the language set in the configuration **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // return translated names of all functions, assign to a variable const allNames = hfInstance.getRegisteredFunctionNames(); ``` **Returns:** *string[]* ___ ## Static Methods ### getAllFunctionPlugins ▸ **getAllFunctionPlugins**(): *FunctionPluginDefinition[]* *Defined in [src/HyperFormula.ts:652](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L652)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getAvailableFunctions ▸ **getAvailableFunctions**(`code`: string): *FunctionListEntry[]* *Defined in [src/HyperFormula.ts:688](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L688)* Returns metadata of all functions available for a given language, as a short list suitable for a function picker. Each entry contains the translated name, the language-independent canonical name, the category, and a short description. Entries are sorted alphabetically by their localized name, using the collation rules of the host environment, so the exact order of names that differ only by case or diacritics may vary between hosts. The list reflects the global registry: the built-in functions and every custom function registered with [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-registerfunctionplugin) or [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-registerfunction), plus their aliases. An alias is listed under its own id, borrowing its target's category and description, with the target id exposed as `aliasOf`. Custom functions ship no catalogue entry, so they are listed with `category: 'Custom'` and no `shortDescription` — with one exception: the catalogue is keyed by function id, so a custom plugin registered *over* a built-in id inherits that id's entry and is listed with the built-in's category and description. Use the instance method [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions) for one engine's own registry, which differs from the global one when the instance was built with the `functionPlugins` configuration option. A function with no translation entry for `code` is omitted: the interpreter refuses to evaluate an untranslated id, so listing it would advertise a function that cannot be called. A translation set to an empty string is not a missing entry — it falls back to the canonical id, so the function stays listed under its canonical name. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when the given language is not registered **`example`** ```js // get the list of available functions, translated for enGB const functions = HyperFormula.getAvailableFunctions('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code, e.g. `'enGB'` | **Returns:** *FunctionListEntry[]* ___ ### getFunctionDetails ▸ **getFunctionDetails**(`canonicalName`: string, `code`: string): *FunctionDetails | undefined* *Defined in [src/HyperFormula.ts:736](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L736)* Returns the full metadata of a single function for a given language: the parameter list (with per-parameter optionality), the number of trailing parameters that repeat (`repeatLastArgs`), the category, a short description, and the documentation link (`documentationUrl`) and usage examples (`examples`) — every built-in authors both. Returns `undefined` when the function id is unknown, not registered, or has no translation entry for `code` (an untranslated id cannot be evaluated, so it is not described either, which keeps this method consistent with [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions)). The static method resolves everything in the global registry: the built-in functions, their aliases, and the custom (user-registered) ones. An alias reports its target's metadata (including examples, which spell the target's name) under the alias id, with the target id exposed as `aliasOf`. A custom function has no catalogue entry, so it reports `category: 'Custom'`, no `shortDescription`, `documentationUrl` or `examples`, and positional parameter names (`Arg1`, `Arg2`, ...). A custom plugin registered over a built-in id is the exception: the catalogue is keyed by function id, so it reports that built-in's authored metadata alongside the parameter list of the implementation actually registered. Use the instance method [getFunctionDetails](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getfunctiondetails) for one engine's own registry, which differs from the global one when the instance was built with the `functionPlugins` configuration option. `canonicalName` is matched exactly, in two ways worth knowing: - It is **case-sensitive**, unlike formula syntax. `'SUMIF'` resolves; `'sumif'` and `'SumIf'` return `undefined`, even though `=sumif(...)` evaluates. - It must be the **canonical (English) id, never a localized name**. `localizedName` is output only: `getFunctionDetails('SUMIF', 'plPL')` reports `localizedName: 'SUMA.JEŻELI'`, but passing `'SUMA.JEŻELI'` back in returns `undefined`. To look up an entry from [getAvailableFunctions](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#getavailablefunctions), pass its `canonicalName`. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when the given language is not registered **`example`** ```js // get the details of the SUMIF function, translated for enGB const details = HyperFormula.getFunctionDetails('SUMIF', 'enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `canonicalName` | string | the language-independent function id, e.g. `'SUMIF'` | `code` | string | language code, e.g. `'enGB'` | **Returns:** *FunctionDetails | undefined* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:636](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L636)* Returns class of a plugin used by function with given id For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); // return the class of a given plugin const myFunctionClass = HyperFormula.getFunctionPlugin('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | id of a function, e.g., 'SUMIF' | **Returns:** *FunctionPluginDefinition | undefined* ___ ### getLanguage ▸ **getLanguage**(`languageCode`: string): *TranslationPackage* *Defined in [src/HyperFormula.ts:375](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L375)* Returns registered language from its code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when trying to retrieve not registered language **`example`** ```js // return registered language const language = HyperFormula.getLanguage('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *TranslationPackage* ___ ### getRegisteredFunctionNames ▸ **getRegisteredFunctionNames**(`code`: string): *string[]* *Defined in [src/HyperFormula.ts:606](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L606)* Returns translated names of all registered functions for a given language **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // return a list of function names registered for enGB const allNames = HyperFormula.getRegisteredFunctionNames('enGB'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `code` | string | language code | **Returns:** *string[]* ___ ### getRegisteredLanguagesCodes ▸ **getRegisteredLanguagesCodes**(): *string[]* *Defined in [src/HyperFormula.ts:456](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L456)* Returns all registered languages codes. **`example`** ```js // should return all registered language codes: ['enGB', 'plPL'] const registeredLanguages = HyperFormula.getRegisteredLanguagesCodes(); ``` **Returns:** *string[]* ___ ### registerFunction ▸ **registerFunction**(`functionId`: string, `plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:540](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L540)* Registers a function with a given id if such exists in a plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when function with a given id does not exist in plugin or plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | translations for the function name | **Returns:** *void* ___ ### registerFunctionPlugin ▸ **registerFunctionPlugin**(`plugin`: FunctionPluginDefinition, `translations?`: FunctionTranslationsPackage): *void* *Defined in [src/HyperFormula.ts:486](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L486)* Registers all functions in a given plugin with optional translations. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: FunctionPlugins must be registered prior to the creation of HyperFormula instances in which they are used. HyperFormula instances created prior to the registration of a FunctionPlugin are unable to access the FunctionPlugin. Registering a FunctionPlugin with [[custom-functions]] requires the translations parameter. **`throws`** [FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-functionpluginvalidationerror) when plugin class definition is not consistent with metadata **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register the plugin HyperFormula.registerFunctionPlugin(MyExamplePlugin); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | `translations?` | FunctionTranslationsPackage | optional package of function names translations | **Returns:** *void* ___ ### registerLanguage ▸ **registerLanguage**(`languageCode`: string, `languagePackage`: RawTranslationPackage): *void* *Defined in [src/HyperFormula.ts:406](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L406)* Registers language under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-protectedfunctiontranslationerror) when trying to register translation for protected function **`throws`** [LanguageAlreadyRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagealreadyregisterederror) when given language is already registered **`example`** ```js // return registered language HyperFormula.registerLanguage('enUS', enUS); const engine = HyperFormula.buildEmpty({language: 'enUS'}); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | `languagePackage` | RawTranslationPackage | translation package to be registered | **Returns:** *void* ___ ### unregisterAllFunctions ▸ **unregisterAllFunctions**(): *void* *Defined in [src/HyperFormula.ts:587](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L587)* Clears function registry. Note: This method does not affect the existing HyperFormula instances. **`example`** ```js HyperFormula.unregisterAllFunctions(); ``` **Returns:** *void* ___ ### unregisterFunction ▸ **unregisterFunction**(`functionId`: string): *void* *Defined in [src/HyperFormula.ts:570](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L570)* Unregisters a function with a given id. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`example`** ```js // import your own plugin import { MyExamplePlugin } from './file_with_your_plugin'; // register a function HyperFormula.registerFunction('EXAMPLE', MyExamplePlugin); // unregister a function HyperFormula.unregisterFunction('EXAMPLE'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `functionId` | string | function id, e.g., 'SUMIF' | **Returns:** *void* ___ ### unregisterFunctionPlugin ▸ **unregisterFunctionPlugin**(`plugin`: FunctionPluginDefinition): *void* *Defined in [src/HyperFormula.ts:510](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L510)* Unregisters all functions defined in given plugin. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). Note: This method does not affect the existing HyperFormula instances. **`example`** ```js // get the class of a plugin const registeredPluginClass = HyperFormula.getFunctionPlugin('EXAMPLE'); // unregister all functions defined in a plugin of ID 'EXAMPLE' HyperFormula.unregisterFunctionPlugin(registeredPluginClass); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `plugin` | FunctionPluginDefinition | plugin class | **Returns:** *void* ___ ### unregisterLanguage ▸ **unregisterLanguage**(`languageCode`: string): *void* *Defined in [src/HyperFormula.ts:436](https://github.com/handsontable/hyperformula/blob/b8542ec/src/HyperFormula.ts#L436)* Unregisters language that is registered under given code string. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`throws`** [ExpectedValueOfTypeError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-expectedvalueoftypeerror) if any of its basic type argument is of wrong type **`throws`** [LanguageNotRegisteredError](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-languagenotregisterederror) when given language is not registered **`example`** ```js // register the language for the instance HyperFormula.registerLanguage('plPL', plPL); // unregister plPL HyperFormula.unregisterLanguage('plPL'); ``` **Parameters:** Name | Type | Description | ------ | ------ | ------ | `languageCode` | string | code string of the translation package | **Returns:** *void* --- ## MissingTranslationError URL: https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror # MissingTranslationError Error thrown when translation is missing in translation package. ## Constructors ### constructor \+ **new MissingTranslationError**(`key`: string): *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* *Defined in [src/errors.ts:266](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L266)* **Parameters:** Name | Type | ------ | ------ | `key` | string | **Returns:** *[MissingTranslationError](https://hyperformula.handsontable.com/docs/api/classes/missingtranslationerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## MoveColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry # MoveColumnsUndoEntry ## Constructors ### constructor \+ **new MoveColumnsUndoEntry**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number, `version`: number): *[MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:195](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L195)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | `version` | number | **Returns:** *[MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)* ## Properties ### numberOfColumns • **numberOfColumns**: *number* *Defined in [src/UndoRedo.ts:200](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L200)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:198](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L198)* ___ ### startColumn • **startColumn**: *number* *Defined in [src/UndoRedo.ts:199](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L199)* ___ ### targetColumn • **targetColumn**: *number* *Defined in [src/UndoRedo.ts:201](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L201)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:195](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L195)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:194](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L194)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:202](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L202)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:213](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L213)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:209](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:217](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L217)* **Returns:** *number[]* --- ## MoveRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry # MoveRowsUndoEntry ## Constructors ### constructor \+ **new MoveRowsUndoEntry**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number, `version`: number): *[MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)* *Defined in [src/UndoRedo.ts:166](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L166)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | `version` | number | **Returns:** *[MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)* ## Properties ### numberOfRows • **numberOfRows**: *number* *Defined in [src/UndoRedo.ts:171](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L171)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:169](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L169)* ___ ### startRow • **startRow**: *number* *Defined in [src/UndoRedo.ts:170](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L170)* ___ ### targetRow • **targetRow**: *number* *Defined in [src/UndoRedo.ts:172](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L172)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:166](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L166)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:165](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L165)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:173](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L173)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:184](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L184)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:180](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L180)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:188](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L188)* **Returns:** *number[]* --- ## NamedExpressionDoesNotExistError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror # NamedExpressionDoesNotExistError Error thrown when the given named expression does not exist. ## Constructors ### constructor \+ **new NamedExpressionDoesNotExistError**(`expressionName`: string): *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* *Defined in [src/errors.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L101)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionDoesNotExistError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressiondoesnotexisterror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NamedExpressionNameIsAlreadyTakenError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror # NamedExpressionNameIsAlreadyTakenError Error thrown when the given named expression already exists in the workbook and therefore it cannot be added. ## Constructors ### constructor \+ **new NamedExpressionNameIsAlreadyTakenError**(`expressionName`: string): *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* *Defined in [src/errors.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L83)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionNameIsAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisalreadytakenerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NamedExpressionNameIsInvalidError URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror # NamedExpressionNameIsInvalidError Error thrown when the name given for the named expression is invalid. ## Constructors ### constructor \+ **new NamedExpressionNameIsInvalidError**(`expressionName`: string): *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* *Defined in [src/errors.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[NamedExpressionNameIsInvalidError](https://hyperformula.handsontable.com/docs/api/classes/namedexpressionnameisinvaliderror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoOperationToRedoError URL: https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror # NoOperationToRedoError Error thrown when there are no operations to redo by the [redo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#redo) method. ## Constructors ### constructor \+ **new NoOperationToRedoError**(): *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* *Defined in [src/errors.ts:119](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L119)* **Returns:** *[NoOperationToRedoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoredoerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NamedExpressions URL: https://hyperformula.handsontable.com/docs/api/classes/namedexpressions # NamedExpressions ## Properties ### SHEET_FOR_WORKBOOK_EXPRESSIONS ▪ **SHEET_FOR_WORKBOOK_EXPRESSIONS**: *number* = -1 *Defined in [src/NamedExpressions.ts:127](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L127)* ## Methods ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:189](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L189)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *object[]* *Defined in [src/NamedExpressions.ts:251](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L251)* **Returns:** *object[]* ___ ### getAllNamedExpressionsForScope ▸ **getAllNamedExpressionsForScope**(`scope?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:273](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L273)* **Parameters:** Name | Type | ------ | ------ | `scope?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### getAllNamedExpressionsNames ▸ **getAllNamedExpressionsNames**(): *string[]* *Defined in [src/NamedExpressions.ts:247](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L247)* **Returns:** *string[]* ___ ### getAllNamedExpressionsNamesInScope ▸ **getAllNamedExpressionsNamesInScope**(`sheetId?`: undefined | number): *string[]* *Defined in [src/NamedExpressions.ts:243](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L243)* **Parameters:** Name | Type | ------ | ------ | `sheetId?` | undefined | number | **Returns:** *string[]* ___ ### isExpressionInScope ▸ **isExpressionInScope**(`expressionName`: string, `sheetId`: number): *boolean* *Defined in [src/NamedExpressions.ts:162](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L162)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string, `sheetId?`: undefined | number): *boolean* *Defined in [src/NamedExpressions.ts:133](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L133)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *boolean* ___ ### isNameValid ▸ **isNameValid**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:177](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L177)* Checks the validity of a named-expression's name. The name: - Must start with a Unicode letter or with an underscore (`_`). - Can contain only Unicode letters, numbers, underscores, and periods (`.`). - Can't be the same as any possible reference in the A1 notation (`[A-Za-z]+[0-9]+`). - Can't be the same as any possible reference in the R1C1 notation (`[rR][0-9]*[cC][0-9]*`). The naming rules follow the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#__RefHeading__1017964_715980110) standard. **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### namedExpressionForScope ▸ **namedExpressionForScope**(`expressionName`: string, `sheetId?`: undefined | number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:150](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L150)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### namedExpressionInAddress ▸ **namedExpressionInAddress**(`row`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:141](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `row` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### namedExpressionOrPlaceholder ▸ **namedExpressionOrPlaceholder**(`expressionName`: string, `sheetId`: number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:212](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L212)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### nearestNamedExpression ▸ **nearestNamedExpression**(`expressionName`: string, `sheetId`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### remove ▸ **remove**(`expressionName`: string, `sheetId?`: undefined | number): *void* *Defined in [src/NamedExpressions.ts:225](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L225)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *void* ___ ### restoreNamedExpression ▸ **restoreNamedExpression**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `sheetId?`: undefined | number): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L204)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `sheetId?` | undefined | number | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* ___ ### workbookNamedExpressionOrPlaceholder ▸ **workbookNamedExpressionOrPlaceholder**(`expressionName`: string): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/NamedExpressions.ts:216](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L216)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* --- ## NoOperationToUndoError URL: https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror # NoOperationToUndoError Error thrown when there are no operations to be undone by the [undo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#undo) method. ## Constructors ### constructor \+ **new NoOperationToUndoError**(): *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* *Defined in [src/errors.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L110)* **Returns:** *[NoOperationToUndoError](https://hyperformula.handsontable.com/docs/api/classes/nooperationtoundoerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoSheetWithNameError URL: https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror # NoSheetWithNameError Error thrown when the sheet of a given name does not exist. ## Constructors ### constructor \+ **new NoSheetWithNameError**(`sheetName`: string): *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* *Defined in [src/errors.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[NoSheetWithNameError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithnameerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NotAFormulaError URL: https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror # NotAFormulaError Error thrown when the the provided string is not a valid formula, i.e does not start with "=" ## Constructors ### constructor \+ **new NotAFormulaError**(): *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* *Defined in [src/errors.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L47)* **Returns:** *[NotAFormulaError](https://hyperformula.handsontable.com/docs/api/classes/notaformulaerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoSheetWithIdError URL: https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror # NoSheetWithIdError Error thrown when the sheet of a given ID does not exist. ## Constructors ### constructor \+ **new NoSheetWithIdError**(`sheetId`: number): *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* *Defined in [src/errors.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *[NoSheetWithIdError](https://hyperformula.handsontable.com/docs/api/classes/nosheetwithiderror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NotComputedArray URL: https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray # NotComputedArray ## Constructors ### constructor \+ **new NotComputedArray**(`size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[NotComputedArray](https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray.md)* *Defined in [src/ArrayValue.ts:23](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `size` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[NotComputedArray](https://hyperformula.handsontable.com/docs/api/classes/notcomputedarray.md)* ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L24)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *number* *Defined in [src/ArrayValue.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L36)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *number* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L31)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/ArrayValue.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L40)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L27)* **Returns:** *number* --- ## NothingToPasteError URL: https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror # NothingToPasteError Error thrown when there is nothing to paste by the [paste](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#paste) method. ## Constructors ### constructor \+ **new NothingToPasteError**(): *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* *Defined in [src/errors.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L128)* **Returns:** *[NothingToPasteError](https://hyperformula.handsontable.com/docs/api/classes/nothingtopasteerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NumberLiteralHelper URL: https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper # NumberLiteralHelper ## Constructors ### constructor \+ **new NumberLiteralHelper**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *[NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)* *Defined in [src/NumberLiteralHelper.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NumberLiteralHelper.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *[NumberLiteralHelper](https://hyperformula.handsontable.com/docs/api/classes/numberliteralhelper.md)* ## Methods ### numericStringToMaybeNumber ▸ **numericStringToMaybeNumber**(`input`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* *Defined in [src/NumberLiteralHelper.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NumberLiteralHelper.ts#L27)* **Parameters:** Name | Type | ------ | ------ | `input` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹number›* ___ ### numericStringToNumber ▸ **numericStringToNumber**(`input`: string): *number* *Defined in [src/NumberLiteralHelper.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NumberLiteralHelper.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `input` | string | **Returns:** *number* --- ## Operations URL: https://hyperformula.handsontable.com/docs/api/classes/operations # Operations ## Constructors ### constructor \+ **new Operations**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dependencyGraph`: DependencyGraph, `columnSearch`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `parser`: ParserWithCaching, `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `lazilyTransformingAstService`: [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* *Defined in [src/Operations.ts:160](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L160)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dependencyGraph` | DependencyGraph | `columnSearch` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `parser` | ParserWithCaching | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `lazilyTransformingAstService` | [LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)* ## Methods ### addColumns ▸ **addColumns**(`cmd`: [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md)): *void* *Defined in [src/Operations.ts:203](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L203)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [AddColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/addcolumnscommand.md) | **Returns:** *void* ___ ### addNamedExpression ▸ **addNamedExpression**(`expressionName`: string, `expression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *void* *Defined in [src/Operations.ts:420](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L420)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `expression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *void* ___ ### addPlaceholderSheetWithId ▸ **addPlaceholderSheetWithId**(`sheetId`: number, `name`: string): *void* *Defined in [src/Operations.ts:253](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L253)* Adds a placeholder sheet with a specific ID for undo operations. Used to restore previously merged placeholder sheets. Note: Unlike `addSheetWithId`, this does NOT call `dependencyGraph.addSheet()` because placeholders don't need dirty marking or strategy changes - they only need to exist in the mappings so formulas can reference them again. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### addRows ▸ **addRows**(`cmd`: [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md)): *void* *Defined in [src/Operations.ts:197](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L197)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [AddRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/addrowscommand.md) | **Returns:** *void* ___ ### addSheet ▸ **addSheet**(`name?`: undefined | string): *object* *Defined in [src/Operations.ts:231](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L231)* Adds a new sheet to the workbook. **Parameters:** Name | Type | ------ | ------ | `name?` | undefined | string | **Returns:** *object* * **sheetId**: *number* * **sheetName**: *string* ___ ### addSheetWithId ▸ **addSheetWithId**(`sheetId`: number, `name`: string): *void* *Defined in [src/Operations.ts:240](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L240)* Adds a sheet with a specific ID for redo operations. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `name` | string | **Returns:** *void* ___ ### changeNamedExpressionExpression ▸ **changeNamedExpressionExpression**(`expressionName`: string, `newExpression`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent), `sheetId?`: undefined | number, `options?`: [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:433](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L433)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `newExpression` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | `sheetId?` | undefined | number | `options?` | [NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions) | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *void* *Defined in [src/Operations.ts:223](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L223)* Clears the sheet content. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### ensureItIsPossibleToMoveCells ▸ **ensureItIsPossibleToMoveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:466](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L466)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Operations.ts:745](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L745)* Forces all formula vertices and column index entries to apply pending lazy transformations, bringing them up to the current LazilyTransformingAstService version. Called before undo of move operations and before compaction. **Returns:** *void* ___ ### getAndClearContentChanges ▸ **getAndClearContentChanges**(): *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* *Defined in [src/Operations.ts:734](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L734)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)* ___ ### getClipboardCell ▸ **getClipboardCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/Operations.ts:549](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L549)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* ___ ### getOldContent ▸ **getOldContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:530](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L530)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### getRangeClipboardCells ▸ **getRangeClipboardCells**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:590](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L590)* **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### getSheetClipboardCells ▸ **getSheetClipboardCells**(`sheet`: number): *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/Operations.ts:574](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L574)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* ___ ### moveCells ▸ **moveCells**(`sourceLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number, `destinationLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[MoveCellsResult](https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult.md)* *Defined in [src/Operations.ts:343](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L343)* **Parameters:** Name | Type | ------ | ------ | `sourceLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | `destinationLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[MoveCellsResult](https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult.md)* ___ ### moveColumns ▸ **moveColumns**(`sheet`: number, `startColumn`: number, `numberOfColumns`: number, `targetColumn`: number): *number* *Defined in [src/Operations.ts:324](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L324)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startColumn` | number | `numberOfColumns` | number | `targetColumn` | number | **Returns:** *number* ___ ### moveRows ▸ **moveRows**(`sheet`: number, `startRow`: number, `numberOfRows`: number, `targetRow`: number): *number* *Defined in [src/Operations.ts:305](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L305)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `startRow` | number | `numberOfRows` | number | `targetRow` | number | **Returns:** *number* ___ ### removeColumns ▸ **removeColumns**(`cmd`: [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)): *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* *Defined in [src/Operations.ts:209](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md) | **Returns:** *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* ___ ### removeNamedExpression ▸ **removeNamedExpression**(`expressionName`: string, `sheetId?`: undefined | number): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:447](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L447)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | `sheetId?` | undefined | number | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### removeRows ▸ **removeRows**(`cmd`: [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)): *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* *Defined in [src/Operations.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L186)* **Parameters:** Name | Type | ------ | ------ | `cmd` | [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md) | **Returns:** *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:261](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L261)* Removes a sheet from the workbook. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### removeSheetByName ▸ **removeSheetByName**(`sheetName`: string): *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹›, [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:273](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L273)* Removes a sheet from the workbook by name. **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹›, [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### renameSheet ▸ **renameSheet**(`sheetId`: number, `newName`: string): *object* *Defined in [src/Operations.ts:281](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L281)* Renames a sheet in the workbook. **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newName` | string | **Returns:** *object* * **mergedPlaceholderSheetId**? : *undefined | number* * **previousDisplayName**: *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* * **version**? : *undefined | number* ___ ### restoreCell ▸ **restoreCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `clipboardCell`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)): *void* *Defined in [src/Operations.ts:509](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L509)* Restores a single cell. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `clipboardCell` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | **Returns:** *void* ___ ### restoreClipboardCells ▸ **restoreClipboardCells**(`sourceSheetId`: number, `cells`: IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]›): *string[]* *Defined in [src/Operations.ts:493](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L493)* **Parameters:** Name | Type | ------ | ------ | `sourceSheetId` | number | `cells` | IterableIterator‹[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]› | **Returns:** *string[]* ___ ### restoreNamedExpression ▸ **restoreNamedExpression**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `content`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `sheetId?`: undefined | number): *void* *Defined in [src/Operations.ts:426](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L426)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `content` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `sheetId?` | undefined | number | **Returns:** *void* ___ ### rowEffectivelyNotInSheet ▸ **rowEffectivelyNotInSheet**(`row`: number, `sheet`: number): *boolean* *Defined in [src/Operations.ts:729](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L729)* Returns true if row number is outside of given sheet. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `row` | number | row number | `sheet` | number | sheet ID number | **Returns:** *boolean* ___ ### setCellContent ▸ **setCellContent**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `newCellContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* *Defined in [src/Operations.ts:598](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L598)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `newCellContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent) | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)]* ___ ### setCellEmpty ▸ **setCellEmpty**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:695](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L695)* Sets cell content to an empty value. Creates an EmptyCellVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setColumnOrder ▸ **setColumnOrder**(`sheetId`: number, `columnMapping`: [number, number][]): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:399](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L399)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### setFormulaToCell ▸ **setFormulaToCell**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `size`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md), `__namedParameters`: object): *void* *Defined in [src/Operations.ts:663](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L663)* Sets cell content to a formula. Creates a ScalarFormulaVertex and updates the dependency graph and column search index. **Parameters:** ▪ **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ▪ **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `ast` | Ast | `dependencies` | RelativeDependency[] | `hasStructuralChangeFunction` | boolean | `hasVolatileFunction` | boolean | **Returns:** *void* ___ ### setFormulaToCellFromCache ▸ **setFormulaToCellFromCache**(`formulaHash`: string, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:709](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L709)* **Parameters:** Name | Type | ------ | ------ | `formulaHash` | string | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setParsingErrorToCell ▸ **setParsingErrorToCell**(`rawInput`: string, `errors`: ParsingError[], `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:648](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L648)* Sets cell content to an instance of parsing error. Creates a ParsingErrorVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `rawInput` | string | `errors` | ParsingError[] | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### setRowOrder ▸ **setRowOrder**(`sheetId`: number, `rowMapping`: [number, number][]): *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:378](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L378)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* ___ ### setSheetContent ▸ **setSheetContent**(`sheetId`: number, `newSheetContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *void* *Defined in [src/Operations.ts:634](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L634)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `newSheetContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *void* ___ ### setValueToCell ▸ **setValueToCell**(`value`: RawAndParsedValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Operations.ts:681](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L681)* Sets cell content to a value. Creates a ValueCellVertex and updates the dependency graph and column search index. **Parameters:** Name | Type | ------ | ------ | `value` | RawAndParsedValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* --- ## ProtectedFunctionError URL: https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror # ProtectedFunctionError Error thrown when trying to register, override or remove function with reserved id. **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [unregisterFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-unregisterfunction) ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* ## Methods ### cannotRegisterFunctionWithId ▸ **cannotRegisterFunctionWithId**(`functionId`: string): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:334](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L334)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* ___ ### cannotUnregisterFunctionWithId ▸ **cannotUnregisterFunctionWithId**(`functionId`: string): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:338](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L338)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* ___ ### cannotUnregisterProtectedPlugin ▸ **cannotUnregisterProtectedPlugin**(): *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* *Defined in [src/errors.ts:342](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L342)* **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* --- ## PasteUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry # PasteUndoEntry ## Constructors ### constructor \+ **new PasteUndoEntry**(`targetLeftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][], `newContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `addedGlobalNamedExpressions`: string[]): *[PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)* *Defined in [src/UndoRedo.ts:366](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L366)* **Parameters:** Name | Type | ------ | ------ | `targetLeftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | `newContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `addedGlobalNamedExpressions` | string[] | **Returns:** *[PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)* ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/UndoRedo.ts:371](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L371)* ___ ### newContent • **newContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:370](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L370)* ___ ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:369](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L369)* ___ ### targetLeftCorner • **targetLeftCorner**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/UndoRedo.ts:368](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L368)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:380](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L380)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:376](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L376)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## ProtectedFunctionTranslationError URL: https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror # ProtectedFunctionTranslationError Error thrown when trying to override protected translation. **`see`** [registerLanguage](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerlanguage) **`see`** [registerFunction](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunction) **`see`** [registerFunctionPlugin](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-registerfunctionplugin) ## Constructors ### constructor \+ **new ProtectedFunctionTranslationError**(`key`: string): *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* *Defined in [src/errors.ts:279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L279)* **Parameters:** Name | Type | ------ | ------ | `key` | string | **Returns:** *[ProtectedFunctionTranslationError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctiontranslationerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## RemoveColumnsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry # RemoveColumnsUndoEntry ## Constructors ### constructor \+ **new RemoveColumnsUndoEntry**(`command`: [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md), `columnsRemovals`: [ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]): *[RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)* *Defined in [src/UndoRedo.ts:238](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L238)* **Parameters:** Name | Type | ------ | ------ | `command` | [RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md) | `columnsRemovals` | [ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[] | **Returns:** *[RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)* ## Properties ### columnsRemovals • **columnsRemovals**: *[ColumnsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval.md)[]* *Defined in [src/UndoRedo.ts:241](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L241)* ___ ### command • **command**: *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* *Defined in [src/UndoRedo.ts:240](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L240)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:250](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L250)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:246](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L246)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:254](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L254)* **Returns:** *number[]* --- ## RemoveNamedExpressionUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry # RemoveNamedExpressionUndoEntry ## Constructors ### constructor \+ **new RemoveNamedExpressionUndoEntry**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), `content`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell), `scope?`: undefined | number): *[RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)* *Defined in [src/UndoRedo.ts:404](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L404)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | `content` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell) | `scope?` | undefined | number | **Returns:** *[RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)* ## Properties ### content • **content**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/UndoRedo.ts:407](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L407)* ___ ### namedExpression • **namedExpression**: *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* *Defined in [src/UndoRedo.ts:406](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L406)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:408](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L408)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:417](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L417)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:413](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L413)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## RemoveRowsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/removerowscommand # RemoveRowsCommand ## Constructors ### constructor \+ **new RemoveRowsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* *Defined in [src/Operations.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L60)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L63)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L62)* ## Methods ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L67)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### rowsSpans ▸ **rowsSpans**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* *Defined in [src/Operations.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L71)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## RemoveColumnsCommand URL: https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand # RemoveColumnsCommand ## Constructors ### constructor \+ **new RemoveColumnsCommand**(`sheet`: number, `indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* *Defined in [src/Operations.ts:114](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L114)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[RemoveColumnsCommand](https://hyperformula.handsontable.com/docs/api/classes/removecolumnscommand.md)* ## Properties ### indexes • **indexes**: *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:117](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L117)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:116](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L116)* ## Methods ### columnsSpans ▸ **columnsSpans**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* *Defined in [src/Operations.ts:125](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L125)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)[]* ___ ### normalizedIndexes ▸ **normalizedIndexes**(): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:121](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L121)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* --- ## RenameSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry # RenameSheetUndoEntry Undo entry for renaming a sheet. When renaming a sheet to a name that was previously referenced (but didn't exist), a placeholder sheet gets merged into the renamed sheet. In this case: - `version` contains the transformation version for restoring formulas during undo - `mergedPlaceholderSheetId` contains the ID of the placeholder sheet that was merged When renaming to a name not previously referenced, both optional params are undefined. ## Constructors ### constructor \+ **new RenameSheetUndoEntry**(`sheetId`: number, `oldName`: string, `newName`: string, `version?`: undefined | number, `mergedPlaceholderSheetId?`: undefined | number): *[RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)* *Defined in [src/UndoRedo.ts:305](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L305)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldName` | string | `newName` | string | `version?` | undefined | number | `mergedPlaceholderSheetId?` | undefined | number | **Returns:** *[RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)* ## Properties ### mergedPlaceholderSheetId • **mergedPlaceholderSheetId**? : *undefined | number* *Defined in [src/UndoRedo.ts:311](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L311)* ___ ### newName • **newName**: *string* *Defined in [src/UndoRedo.ts:309](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L309)* ___ ### oldName • **oldName**: *string* *Defined in [src/UndoRedo.ts:308](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L308)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:307](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L307)* ___ ### version • **version**? : *undefined | number* *Defined in [src/UndoRedo.ts:310](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L310)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:320](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L320)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:316](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L316)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:324](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L324)* **Returns:** *number[]* --- ## RemoveRowsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry # RemoveRowsUndoEntry ## Constructors ### constructor \+ **new RemoveRowsUndoEntry**(`command`: [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md), `rowsRemovals`: [RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]): *[RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)* *Defined in [src/UndoRedo.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `command` | [RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md) | `rowsRemovals` | [RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[] | **Returns:** *[RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)* ## Properties ### command • **command**: *[RemoveRowsCommand](https://hyperformula.handsontable.com/docs/api/classes/removerowscommand.md)* *Defined in [src/UndoRedo.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L49)* ___ ### rowsRemovals • **rowsRemovals**: *[RowsRemoval](https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval.md)[]* *Defined in [src/UndoRedo.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L50)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:59](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L59)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L63)* **Returns:** *number[]* --- ## RemoveSheetUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry # RemoveSheetUndoEntry ## Constructors ### constructor \+ **new RemoveSheetUndoEntry**(`sheetName`: string, `sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `scopedNamedExpressions`: [[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)* *Defined in [src/UndoRedo.ts:276](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L276)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `scopedNamedExpressions` | [[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)* ## Properties ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:280](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L280)* ___ ### scopedNamedExpressions • **scopedNamedExpressions**: *[[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:281](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L281)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:279](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L279)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:278](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L278)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:290](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L290)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:286](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L286)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## Config URL: https://hyperformula.handsontable.com/docs/api/classes/config # Config ## Constructors ### constructor \+ **new Config**(`options`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›, `showDeprecatedWarns`: boolean): *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* *Defined in [src/Config.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L168)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `options` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | {} | `showDeprecatedWarns` | boolean | true | **Returns:** *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* ## Properties ### accentSensitive • **accentSensitive**: *boolean* *Defined in [src/Config.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L81)* When set to `true`, makes string comparison accent-sensitive. Applies only to comparison operators. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### arrayColumnSeparator • **arrayColumnSeparator**: *"," | ";"* *Defined in [src/Config.ts:91](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L91)* Sets a column separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ',' ___ ### arrayRowSeparator • **arrayRowSeparator**: *";" | "|"* *Defined in [src/Config.ts:93](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L93)* Sets a row separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ';' ___ ### caseFirst • **caseFirst**: *"upper" | "lower" | "false"* *Defined in [src/Config.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L83)* When set to `upper`, upper case sorts first. When set to `lower`, lower case sorts first. When set to `false`, uses the locale's default. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** 'lower' ___ ### caseSensitive • **caseSensitive**: *boolean* *Defined in [src/Config.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L77)* When set to `true`, makes string comparison case-sensitive. Applies to comparison operators only. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *ChooseAddressMapping* *Defined in [src/Config.ts:79](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L79)* Sets the address mapping policy to be used. Built-in implementations: - `DenseSparseChooseBasedOnThreshold`: sets the address mapping policy separately for each sheet, based on fill ratio. - `AlwaysDense`: uses `DenseStrategy` for all sheets. - `AlwaysSparse`: uses `SparseStrategy` for all sheets. For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** AlwaysDense ___ ### context • **context**: *unknown* *Defined in [src/Config.ts:144](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L144)* A generic parameter that can be used to pass data to custom functions. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** undefined ___ ### currencySymbol • **currencySymbol**: *string[]* *Defined in [src/Config.ts:138](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L138)* Sets symbols that denote currency numbers. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ['$'] ___ ### dateFormats • **dateFormats**: *string[]* *Defined in [src/Config.ts:85](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L85)* Sets the date formats accepted by the date-parsing function. A format must be specified as a string consisting of tokens and separators. Supported tokens: - `DD` (day of month) - `MM` (month as a number) - `YYYY` (year as a 4-digit number) - `YY` (year as a 2-digit number) Supported separators: - `/` (slash) - `-` (dash) - `.` (dot) - ` ` (empty space) Regardless of the separator specified in the format string, all of the above are accepted by the date-parsing function. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** ['DD/MM/YYYY', 'DD/MM/YY'] ___ ### decimalSeparator • **decimalSeparator**: *"." | ","* *Defined in [src/Config.ts:95](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L95)* Sets a decimal separator used for parsing numerical literals. Can be one of the following: - `.` (period) - `,` (comma) Must be different from [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '.' ___ ### evaluateNullToZero • **evaluateNullToZero**: *boolean* *Defined in [src/Config.ts:114](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L114)* When set to `true`, formulas evaluating to `null` evaluate to `0` instead. **`default`** false ___ ### functionArgSeparator • **functionArgSeparator**: *string* *Defined in [src/Config.ts:89](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L89)* Sets a separator character that separates procedure arguments in formulas. Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ',' ___ ### functionPlugins • **functionPlugins**: *FunctionPluginDefinition[]* *Defined in [src/Config.ts:106](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L106)* Lists additional function plugins to be used by the formula interpreter. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** [] ___ ### ignorePunctuation • **ignorePunctuation**: *boolean* *Defined in [src/Config.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L110)* When set to `true`, string comparison ignores punctuation. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard" | "any"* *Defined in [src/Config.ts:101](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L101)* Controls the set of whitespace characters that are allowed inside a formula. When set to `'standard'`, allows only SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), and CARRIAGE RETURN (U+000D) (compliant with OpenFormula Standard 1.3) When set to `'any'`, allows all whitespace characters that would be captured by the `\s` character class of the JavaScript regular expressions. **`default`** 'standard' ___ ### language • **language**: *string* *Defined in [src/Config.ts:99](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L99)* Sets a translation package for function and error names. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`default`** 'enGB' ___ ### leapYear1900 • **leapYear1900**: *boolean* *Defined in [src/Config.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L108)* Sets year 1900 as a leap year. For compatibility with Lotus 1-2-3 and Microsoft Excel, set this option to `true`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md) and [nullDate](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). **`default`** false ___ ### licenseKey • **licenseKey**: *string* *Defined in [src/Config.ts:103](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L103)* Sets your HyperFormula license key. To use HyperFormula on the GPLv3 license terms, set this option to `gpl-v3`. To use HyperFormula with your proprietary license, set this option to your valid license key string. For more information, go [here](https://hyperformula.handsontable.com/docs/guide/license-key.md). **`default`** undefined ___ ### localeLang • **localeLang**: *string* *Defined in [src/Config.ts:112](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L112)* Sets the locale for language-sensitive string comparison. Accepts **IETF BCP 47** language tags. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** 'en' ___ ### matchWholeCell • **matchWholeCell**: *boolean* *Defined in [src/Config.ts:168](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L168)* When set to `true`, function criteria require whole cells to match the pattern. When set to `false`, function criteria require just a sub-word to match the pattern. **`default`** true ___ ### maxColumns • **maxColumns**: *number* *Defined in [src/Config.ts:155](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L155)* Sets the maximum number of columns. **`default`** 18.278 (Columns A, B, ..., ZZZ) ___ ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* *Defined in [src/Config.ts:142](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L142)* Controls memory usage for long-running instances by limiting the number of pending lazy transformations before cleanup occurs. Structural operations (adding/removing rows/columns, moving cells) create transformations that are applied lazily to formulas. This setting determines how many can accumulate before they are flushed and memory is reclaimed. Lower values reduce peak memory usage but may slightly increase CPU overhead. Higher values reduce overhead but allow more memory accumulation. **`default`** 50 ___ ### maxRows • **maxRows**: *number* *Defined in [src/Config.ts:153](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L153)* Sets the maximum number of rows. **`default`** 40.000 ___ ### nullDate • **nullDate**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/Config.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L136)* Internally, each date is represented as a number of days that passed since `nullDate`. This option sets a specific date from which that number of days is counted. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** {year: 1899, month: 12, day: 30} ___ ### nullYear • **nullYear**: *number* *Defined in [src/Config.ts:116](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L116)* Sets the interpretation of two-digit year values. Two-digit year values (`xx`) can either become `19xx` or `20xx`. If `xx` is less or equal to `nullYear`, two-digit year values become `20xx`. If `xx` is more than `nullYear`, two-digit year values become `19xx`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** 30 ___ ### parseDateTime • **parseDateTime**: *function* *Defined in [src/Config.ts:118](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L118)* Sets a function that parses strings representing date-time into actual date-time values. The function should return a [DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultParseToDateTime #### Type declaration: ▸ (`dateTimeString`: string, `dateFormat?`: undefined | string, `timeFormat?`: undefined | string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | `dateFormat?` | undefined | string | `timeFormat?` | undefined | string | ___ ### precisionEpsilon • **precisionEpsilon**: *number* *Defined in [src/Config.ts:126](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L126)* Sets how far two numerical values need to be from each other to be treated as non-equal. `a` and `b` are equal if all three of the following conditions are met: - Both `a` and `b` are of the same sign - `abs(a)` <= `(1+precisionEpsilon) * abs(b)` - `abs(b)` <= `(1+precisionEpsilon) * abs(a)` Additionally, this option controls the snap-to-zero behavior for additions and subtractions: - For `c=a+b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` - For `c=a-b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` **`default`** 1e-13 ___ ### precisionRounding • **precisionRounding**: *number* *Defined in [src/Config.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L128)* Sets the precision level of calculations' output. Internally, all arithmetic operations are performed using JavaScript's built-in numbers. But when HyperFormula exports a cell's value, it rounds the output to the `precisionRounding` number of significant digits. Setting `precisionRounding` too low can cause large numbers' imprecision (for example, with `precisionRounding` set to `4`, 100005 becomes 100010). Setting precisionRounding too high will expose the floating-point calculation errors. For example, with `precisionRounding` set to `15`, `0.1 + 0.2` results in `0.3000000000000001`. **`default`** 10 ___ ### smartRounding • **smartRounding**: *boolean* *Defined in [src/Config.ts:130](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L130)* When set to `false`, no rounding happens, and numbers are equal if and only if they are of truly identical value. For more information, see [precisionEpsilon](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon). **`default`** true ___ ### stringifyCurrency • **stringifyCurrency**: *function* *Defined in [src/Config.ts:124](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L124)* Sets a function that converts numeric values into currency-formatted strings. The function receives the raw value and the format string passed to `TEXT` and should return a string or `undefined`. The formatter calls this for every format string that reaches it, not only currency-shaped ones — return `undefined` for any format your callback does not handle and HyperFormula will fall through to the built-in number formatter. For more information, see the [Currency handling guide](https://hyperformula.handsontable.com/docs/guide/currency-handling.md). **`default`** defaultStringifyCurrency #### Type declaration: ▸ (`value`: number, `currencyFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `value` | number | `currencyFormat` | string | ___ ### stringifyDateTime • **stringifyDateTime**: *function* *Defined in [src/Config.ts:120](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L120)* Sets a function that converts date-time values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDateTime #### Type declaration: ▸ (`date`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | `formatArg` | string | ___ ### stringifyDuration • **stringifyDuration**: *function* *Defined in [src/Config.ts:122](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L122)* Sets a function that converts time duration values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDuration #### Type declaration: ▸ (`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | `formatArg` | string | ___ ### thousandSeparator • **thousandSeparator**: *"" | "," | " " | "."* *Defined in [src/Config.ts:97](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L97)* Sets the thousands' separator symbol for parsing numerical literals. Can be one of the following: - empty - `,` (comma) - ` ` (empty space) Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '' ___ ### timeFormats • **timeFormats**: *string[]* *Defined in [src/Config.ts:87](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L87)* Sets the time formats accepted by the time-parsing function. A format must be specified as a string consisting of at least two tokens separated by `:` (a colon). Supported tokens: - `hh` (hours) - `mm` (minutes) - `ss`, `ss.s`, `ss.ss`, `ss.sss`, `ss.ssss`, etc. (seconds) The number of decimal places in the seconds token does not matter. All versions of the seconds token are equivalent in the context of parsing time values. Regardless of the time format specified, the hours-minutes-seconds value may be followed by the AM/PM designator. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`example`** E.g., for `timeFormats = ['hh:mm:ss.sss']`, valid time strings include: - `1:33:33` - `1:33:33.3` - `1:33:33.33` - `1:33:33.333` - `01:33:33` - `1:33:33 AM` - `1:33:33 PM` - `1:33:33 am` - `1:33:33 pm` - `1:33:33AM` - `1:33:33PM` **`default`** ['hh:mm', 'hh:mm:ss.sss'] ___ ### undoLimit • **undoLimit**: *number* *Defined in [src/Config.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L140)* Sets the number of elements kept in the undo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`default`** 20 ___ ### useArrayArithmetic • **useArrayArithmetic**: *boolean* *Defined in [src/Config.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L75)* When set to `true`, array arithmetic is enabled globally. When set to `false`, array arithmetic is enabled only inside array functions (`ARRAYFORMULA`, `FILTER`, and `ARRAY_CONSTRAIN`). For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** false ___ ### useColumnIndex • **useColumnIndex**: *boolean* *Defined in [src/Config.ts:132](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L132)* When set to `true`, switches column search strategy from binary search to column index. Using column index improves efficiency of the `VLOOKUP` and `MATCH` functions, but increases memory usage. When searching with wildcards or regular expressions, column search strategy falls back to binary search (even with `useColumnIndex` set to `true`). For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** false ___ ### useRegularExpressions • **useRegularExpressions**: *boolean* *Defined in [src/Config.ts:164](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L164)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) are allowed to use regular expressions. **`default`** false ___ ### useStats • **useStats**: *boolean* *Defined in [src/Config.ts:134](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L134)* When set to `true`, enables gathering engine statistics and timings. Useful for testing and benchmarking. **`default`** false ___ ### useWildcards • **useWildcards**: *boolean* *Defined in [src/Config.ts:166](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L166)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) can use the `*` and `?` wildcards. **`default`** true ## Methods ### getConfig ▸ **getConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:311](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L311)* **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### mergeConfig ▸ **mergeConfig**(`init`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* *Defined in [src/Config.ts:315](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `init` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | **Returns:** *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* ## Object literals ### defaultConfig ### ▪ **defaultConfig**: *object* *Defined in [src/Config.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L31)* ### accentSensitive • **accentSensitive**: *false* = false *Defined in [src/Config.ts:32](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L32)* ### arrayColumnSeparator • **arrayColumnSeparator**: *","* = "," *Defined in [src/Config.ts:50](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L50)* ### arrayRowSeparator • **arrayRowSeparator**: *";"* = ";" *Defined in [src/Config.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L51)* ### caseFirst • **caseFirst**: *"lower"* = "lower" *Defined in [src/Config.ts:35](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L35)* ### caseSensitive • **caseSensitive**: *false* = false *Defined in [src/Config.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L34)* ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *AlwaysDense‹›* = new AlwaysDense() *Defined in [src/Config.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L37)* ### context • **context**: *undefined* = undefined *Defined in [src/Config.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L36)* ### currencySymbol • **currencySymbol**: *string[]* = ['$'] *Defined in [src/Config.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L33)* ### dateFormats • **dateFormats**: *string[]* = ['DD/MM/YYYY', 'DD/MM/YY'] *Defined in [src/Config.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L38)* ### decimalSeparator • **decimalSeparator**: *"."* = "." *Defined in [src/Config.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L39)* ### evaluateNullToZero • **evaluateNullToZero**: *false* = false *Defined in [src/Config.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L40)* ### functionArgSeparator • **functionArgSeparator**: *string* = "," *Defined in [src/Config.ts:41](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L41)* ### functionPlugins • **functionPlugins**: *never[]* = [] *Defined in [src/Config.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L42)* ### ignorePunctuation • **ignorePunctuation**: *false* = false *Defined in [src/Config.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L43)* ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard"* = "standard" *Defined in [src/Config.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L45)* ### language • **language**: *string* = "enGB" *Defined in [src/Config.ts:44](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L44)* ### leapYear1900 • **leapYear1900**: *false* = false *Defined in [src/Config.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L47)* ### licenseKey • **licenseKey**: *string* = "" *Defined in [src/Config.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L46)* ### localeLang • **localeLang**: *string* = "en" *Defined in [src/Config.ts:48](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L48)* ### matchWholeCell • **matchWholeCell**: *true* = true *Defined in [src/Config.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L49)* ### maxColumns • **maxColumns**: *number* = 18278 *Defined in [src/Config.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L53)* ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* = 50 *Defined in [src/Config.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L66)* ### maxRows • **maxRows**: *number* = 40000 *Defined in [src/Config.ts:52](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L52)* ### nullYear • **nullYear**: *number* = 30 *Defined in [src/Config.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L54)* ### parseDateTime • **parseDateTime**: *[defaultParseToDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultparsetodatetime)* = defaultParseToDateTime *Defined in [src/Config.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L56)* ### precisionEpsilon • **precisionEpsilon**: *number* = 1e-13 *Defined in [src/Config.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L57)* ### precisionRounding • **precisionRounding**: *number* = 10 *Defined in [src/Config.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L58)* ### smartRounding • **smartRounding**: *true* = true *Defined in [src/Config.ts:59](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L59)* ### stringifyCurrency • **stringifyCurrency**: *[defaultStringifyCurrency](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifycurrency)* = defaultStringifyCurrency *Defined in [src/Config.ts:62](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L62)* ### stringifyDateTime • **stringifyDateTime**: *[defaultStringifyDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifydatetime)* = defaultStringifyDateTime *Defined in [src/Config.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L60)* ### stringifyDuration • **stringifyDuration**: *[defaultStringifyDuration](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifyduration)* = defaultStringifyDuration *Defined in [src/Config.ts:61](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L61)* ### thousandSeparator • **thousandSeparator**: *""* = "" *Defined in [src/Config.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L64)* ### timeFormats • **timeFormats**: *string[]* = ['hh:mm', 'hh:mm:ss.sss'] *Defined in [src/Config.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L63)* ### undoLimit • **undoLimit**: *number* = 20 *Defined in [src/Config.ts:65](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L65)* ### useArrayArithmetic • **useArrayArithmetic**: *false* = false *Defined in [src/Config.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L71)* ### useColumnIndex • **useColumnIndex**: *false* = false *Defined in [src/Config.ts:69](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L69)* ### useRegularExpressions • **useRegularExpressions**: *false* = false *Defined in [src/Config.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L67)* ### useStats • **useStats**: *false* = false *Defined in [src/Config.ts:70](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L70)* ### useWildcards • **useWildcards**: *true* = true *Defined in [src/Config.ts:68](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L68)* ▪ **nullDate**: *object* *Defined in [src/Config.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L55)* * **day**: *number* = 30 * **month**: *number* = 12 * **year**: *number* = 1899 --- ## RowsSpan URL: https://hyperformula.handsontable.com/docs/api/classes/rowsspan # RowsSpan ## Constructors ### constructor \+ **new RowsSpan**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* *Defined in [src/Span.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* ## Properties ### rowEnd • **rowEnd**: *number* *Defined in [src/Span.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L16)* ___ ### rowStart • **rowStart**: *number* *Defined in [src/Span.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L15)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L14)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L34)* **Returns:** *number* ___ ### numberOfRows • **get numberOfRows**(): *number* *Defined in [src/Span.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L26)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L30)* **Returns:** *number* ## Methods ### firstRow ▸ **firstRow**(): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* *Defined in [src/Span.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L64)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)* ___ ### intersect ▸ **intersect**(`otherSpan`: [RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | null* *Defined in [src/Span.ts:52](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L52)* **Parameters:** Name | Type | ------ | ------ | `otherSpan` | [RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | null* ___ ### rows ▸ **rows**(): *IterableIterator‹number›* *Defined in [src/Span.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L46)* **Returns:** *IterableIterator‹number›* ___ ### fromNumberOfRows ▸ **fromNumberOfRows**(`sheet`: number, `rowStart`: number, `numberOfRows`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* *Defined in [src/Span.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L38)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `numberOfRows` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* ___ ### fromRowStartAndEnd ▸ **fromRowStartAndEnd**(`sheet`: number, `rowStart`: number, `rowEnd`: number): *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* *Defined in [src/Span.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `rowStart` | number | `rowEnd` | number | **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)‹›* --- ## RowSearchStrategy URL: https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy # RowSearchStrategy ## Constructors ### constructor \+ **new RowSearchStrategy**(`dependencyGraph`: DependencyGraph): *[RowSearchStrategy](https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy.md)* *Defined in [src/Lookup/RowSearchStrategy.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/RowSearchStrategy.ts#L12)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | **Returns:** *[RowSearchStrategy](https://hyperformula.handsontable.com/docs/api/classes/rowsearchstrategy.md)* ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `__namedParameters`: object): *number* *Defined in [src/Lookup/AdvancedFind.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/AdvancedFind.ts#L27)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **rangeValue**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪`Default value` **__namedParameters**: *object*= { returnOccurrence: 'first' } Name | Type | ------ | ------ | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `rangeValue`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `searchOptions`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/RowSearchStrategy.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/RowSearchStrategy.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `rangeValue` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `searchOptions` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* --- ## Serialization URL: https://hyperformula.handsontable.com/docs/api/classes/serialization # Serialization ## Constructors ### constructor \+ **new Serialization**(`dependencyGraph`: DependencyGraph, `unparser`: Unparser, `exporter`: [Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)): *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* *Defined in [src/Serialization.ts:23](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L23)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `unparser` | Unparser | `exporter` | [Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md) | **Returns:** *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* ## Methods ### genericAllSheetsGetter ▸ **genericAllSheetsGetter**‹**T**›(`sheetGetter`: function): *Record‹string, T›* *Defined in [src/Serialization.ts:115](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L115)* **Type parameters:** ▪ **T** **Parameters:** ▪ **sheetGetter**: *function* ▸ (`sheet`: number): *T* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *Record‹string, T›* ___ ### genericSheetGetter ▸ **genericSheetGetter**‹**T**›(`sheet`: number, `getter`: function): *T[][]* *Defined in [src/Serialization.ts:84](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L84)* **Type parameters:** ▪ **T** **Parameters:** ▪ **sheet**: *number* ▪ **getter**: *function* ▸ (`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *T* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *T[][]* ___ ### getAllNamedExpressionsSerialized ▸ **getAllNamedExpressionsSerialized**(): *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* *Defined in [src/Serialization.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L140)* **Returns:** *[SerializedNamedExpression](https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression.md)[]* ___ ### getAllSheetsFormulas ▸ **getAllSheetsFormulas**(): *Record‹string, [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]›* *Defined in [src/Serialization.ts:132](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L132)* **Returns:** *Record‹string, [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]›* ___ ### getAllSheetsSerialized ▸ **getAllSheetsSerialized**(): *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* *Defined in [src/Serialization.ts:136](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L136)* **Returns:** *Record‹string, [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]›* ___ ### getAllSheetsValues ▸ **getAllSheetsValues**(): *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* *Defined in [src/Serialization.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L128)* **Returns:** *Record‹string, [CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]›* ___ ### getCellFormula ▸ **getCellFormula**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `targetAddress?`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/Serialization.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L42)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `targetAddress?` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### getCellHyperlink ▸ **getCellHyperlink**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/Serialization.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* ___ ### getCellSerialized ▸ **getCellSerialized**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `targetAddress?`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `targetAddress?` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getCellValue ▸ **getCellValue**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* *Defined in [src/Serialization.ts:68](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L68)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* ___ ### getRawValue ▸ **getRawValue**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* ___ ### getSheetFormulas ▸ **getSheetFormulas**(`sheet`: number): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]* *Defined in [src/Serialization.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›[][]* ___ ### getSheetSerialized ▸ **getSheetSerialized**(`sheet`: number): *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/Serialization.ts:124](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L124)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* ___ ### getSheetValues ▸ **getSheetValues**(`sheet`: number): *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* *Defined in [src/Serialization.ts:76](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L76)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)[][]* ___ ### withNewConfig ▸ **withNewConfig**(`newConfig`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `namedExpressions`: [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)): *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* *Defined in [src/Serialization.ts:158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L158)* **Parameters:** Name | Type | ------ | ------ | `newConfig` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `namedExpressions` | [NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md) | **Returns:** *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* --- ## SetCellContentsUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry # SetCellContentsUndoEntry ## Constructors ### constructor \+ **new SetCellContentsUndoEntry**(`cellContents`: object[]): *[SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)* *Defined in [src/UndoRedo.ts:346](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L346)* **Parameters:** Name | Type | ------ | ------ | `cellContents` | object[] | **Returns:** *[SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)* ## Properties ### cellContents • **cellContents**: *object[]* *Defined in [src/UndoRedo.ts:348](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L348)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:361](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L361)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:357](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L357)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SetRowOrderUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry # SetRowOrderUndoEntry ## Constructors ### constructor \+ **new SetRowOrderUndoEntry**(`sheetId`: number, `rowMapping`: [number, number][], `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)* *Defined in [src/UndoRedo.ts:110](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L110)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)* ## Properties ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:114](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L114)* ___ ### rowMapping • **rowMapping**: *[number, number][]* *Defined in [src/UndoRedo.ts:113](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L113)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:112](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L112)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:123](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L123)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:119](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L119)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SetColumnOrderUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry # SetColumnOrderUndoEntry ## Constructors ### constructor \+ **new SetColumnOrderUndoEntry**(`sheetId`: number, `columnMapping`: [number, number][], `oldContent`: [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]): *[SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)* *Defined in [src/UndoRedo.ts:128](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L128)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `columnMapping` | [number, number][] | `oldContent` | [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][] | **Returns:** *[SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)* ## Properties ### columnMapping • **columnMapping**: *[number, number][]* *Defined in [src/UndoRedo.ts:131](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L131)* ___ ### oldContent • **oldContent**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/UndoRedo.ts:132](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L132)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:130](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L130)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:141](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:137](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L137)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SetSheetContentUndoEntry URL: https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry # SetSheetContentUndoEntry ## Constructors ### constructor \+ **new SetSheetContentUndoEntry**(`sheetId`: number, `oldSheetContent`: [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][], `newSheetContent`: [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]): *[SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)* *Defined in [src/UndoRedo.ts:146](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L146)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `oldSheetContent` | [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][] | `newSheetContent` | [RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][] | **Returns:** *[SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)* ## Properties ### newSheetContent • **newSheetContent**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/UndoRedo.ts:150](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L150)* ___ ### oldSheetContent • **oldSheetContent**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)[][]* *Defined in [src/UndoRedo.ts:149](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L149)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:148](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L148)* ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:159](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L159)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:155](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L155)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L42)* Returns LazilyTransformingAstService version keys referenced by this entry's oldData. Default implementation returns empty — override in entries that store oldData. **Returns:** *number[]* --- ## SheetNameAlreadyTakenError URL: https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror # SheetNameAlreadyTakenError Error thrown when the sheet of a given name already exists. ## Constructors ### constructor \+ **new SheetNameAlreadyTakenError**(`sheetName`: string): *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* *Defined in [src/errors.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L29)* **Parameters:** Name | Type | ------ | ------ | `sheetName` | string | **Returns:** *[SheetNameAlreadyTakenError](https://hyperformula.handsontable.com/docs/api/classes/sheetnamealreadytakenerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## SheetsNotEqual URL: https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal # SheetsNotEqual Error thrown when the given sheets are not equal. ## Constructors ### constructor \+ **new SheetsNotEqual**(`sheet1`: number, `sheet2`: number): *[SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md)* *Defined in [src/errors.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L74)* **Parameters:** Name | Type | ------ | ------ | `sheet1` | number | `sheet2` | number | **Returns:** *[SheetsNotEqual](https://hyperformula.handsontable.com/docs/api/classes/sheetsnotequal.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## SheetSizeLimitExceededError URL: https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror # SheetSizeLimitExceededError Error thrown when loaded sheet size exceeds configured limits. ## Constructors ### constructor \+ **new SheetSizeLimitExceededError**(): *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* *Defined in [src/errors.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L38)* **Returns:** *[SheetSizeLimitExceededError](https://hyperformula.handsontable.com/docs/api/classes/sheetsizelimitexceedederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## SimpleRangeValue URL: https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue # SimpleRangeValue A class that represents a range of data. ## Constructors ### constructor \+ **new SimpleRangeValue**(`_data?`: InternalScalarValue[][], `range?`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph?`: DependencyGraph, `_hasOnlyNumbers?`: undefined | false | true): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L21)* In most cases, it's more convenient to create a `SimpleRangeValue` object by calling one of the [static factory methods](#fromrange). **Parameters:** Name | Type | ------ | ------ | `_data?` | InternalScalarValue[][] | `range?` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph?` | DependencyGraph | `_hasOnlyNumbers?` | undefined | false | true | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ## Properties ### range • **range**? : *[AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md)* *Defined in [src/SimpleRangeValue.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L33)* A property that represents the address of the range. ___ ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/SimpleRangeValue.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L21)* A property that represents the size of the range. ## Accessors ### data • **get data**(): *InternalScalarValue[][]* *Defined in [src/SimpleRangeValue.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L45)* Returns the range data as a 2D array. **Returns:** *InternalScalarValue[][]* ## Methods ### effectiveAddressesFromData ▸ **effectiveAddressesFromData**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* *Defined in [src/SimpleRangeValue.ts:125](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L125)* Generates the addresses of the cells contained in the range assuming the provided address is the left corner of the range. **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)›* ___ ### entriesFromTopLeftCorner ▸ **entriesFromTopLeftCorner**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *IterableIterator‹[InternalScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›* *Defined in [src/SimpleRangeValue.ts:139](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L139)* Generates values and addresses of the cells contained in the range assuming the provided address is the left corner of the range. This method combines the functionalities of [`iterateValuesFromTopLeftCorner()`](#iteratevaluesfromtopleftcorner) and [`effectiveAddressesFromData()`](#effectiveaddressesfromdata). **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *IterableIterator‹[InternalScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›* ___ ### hasOnlyNumbers ▸ **hasOnlyNumbers**(): *boolean* *Defined in [src/SimpleRangeValue.ts:165](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L165)* Returns `true` if and only if the range contains only numeric values. **Returns:** *boolean* ___ ### height ▸ **height**(): *number* *Defined in [src/SimpleRangeValue.ts:102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L102)* Returns the number of rows contained in the range. **Returns:** *number* ___ ### isAdHoc ▸ **isAdHoc**(): *boolean* *Defined in [src/SimpleRangeValue.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L88)* Returns `true` if and only if the `SimpleRangeValue` has no address set. **Returns:** *boolean* ___ ### iterateValuesFromTopLeftCorner ▸ **iterateValuesFromTopLeftCorner**(): *IterableIterator‹InternalScalarValue›* *Defined in [src/SimpleRangeValue.ts:151](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L151)* Generates the values of the cells contained in the range assuming the provided address is the left corner of the range. **Returns:** *IterableIterator‹InternalScalarValue›* ___ ### numberOfElements ▸ **numberOfElements**(): *number* *Defined in [src/SimpleRangeValue.ts:158](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L158)* Returns the number of cells contained in the range. **Returns:** *number* ___ ### rawData ▸ **rawData**(): *InternalScalarValue[][]* *Defined in [src/SimpleRangeValue.ts:196](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L196)* Returns the range data as a 2D array. Internal use only. **Returns:** *InternalScalarValue[][]* ___ ### rawNumbers ▸ **rawNumbers**(): *number[][]* *Defined in [src/SimpleRangeValue.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L186)* Returns the range data as a 2D array of numbers. Internal use only. **Returns:** *number[][]* ___ ### sameDimensionsAs ▸ **sameDimensionsAs**(`other`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)): *boolean* *Defined in [src/SimpleRangeValue.ts:204](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L204)* Returns `true` if and only if the range has the same width and height as the `other` range object. **Parameters:** Name | Type | ------ | ------ | `other` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | **Returns:** *boolean* ___ ### valuesFromTopLeftCorner ▸ **valuesFromTopLeftCorner**(): *InternalScalarValue[]* *Defined in [src/SimpleRangeValue.ts:109](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L109)* Returns the range data as a 1D array. **Returns:** *InternalScalarValue[]* ___ ### width ▸ **width**(): *number* *Defined in [src/SimpleRangeValue.ts:95](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L95)* Returns the number of columns contained in the range. **Returns:** *number* ___ ### fromRange ▸ **fromRange**(`data`: InternalScalarValue[][], `range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph`: DependencyGraph): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L53)* A factory method. Returns a `SimpleRangeValue` object with the provided range address and the provided data. **Parameters:** Name | Type | ------ | ------ | `data` | InternalScalarValue[][] | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### fromScalar ▸ **fromScalar**(`scalar`: InternalScalarValue): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L81)* A factory method. Returns a `SimpleRangeValue` object that contains a single value. **Parameters:** Name | Type | ------ | ------ | `scalar` | InternalScalarValue | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyNumbers ▸ **onlyNumbers**(`data`: number[][]): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L60)* A factory method. Returns a `SimpleRangeValue` object with the provided numeric data. **Parameters:** Name | Type | ------ | ------ | `data` | number[][] | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyRange ▸ **onlyRange**(`range`: [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md), `dependencyGraph`: DependencyGraph): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L74)* A factory method. Returns a `SimpleRangeValue` object with the provided range address. **Parameters:** Name | Type | ------ | ------ | `range` | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | `dependencyGraph` | DependencyGraph | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ___ ### onlyValues ▸ **onlyValues**(`data`: InternalScalarValue[][]): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* *Defined in [src/SimpleRangeValue.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/SimpleRangeValue.ts#L67)* A factory method. Returns a `SimpleRangeValue` object with the provided data. **Parameters:** Name | Type | ------ | ------ | `data` | InternalScalarValue[][] | **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* --- ## SourceLocationHasArrayError URL: https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror # SourceLocationHasArrayError Error thrown when selected source location has an array. ## Constructors ### constructor \+ **new SourceLocationHasArrayError**(): *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* *Defined in [src/errors.ts:350](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L350)* **Returns:** *[SourceLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/sourcelocationhasarrayerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## NoRelativeAddressesAllowedError URL: https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror # NoRelativeAddressesAllowedError Error thrown when named expression contains relative addresses. **`see`** [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md#addnamedexpression) **`see`** [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression) ## Constructors ### constructor \+ **new NoRelativeAddressesAllowedError**(): *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* *Defined in [src/errors.ts:378](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L378)* **Returns:** *[NoRelativeAddressesAllowedError](https://hyperformula.handsontable.com/docs/api/classes/norelativeaddressesallowederror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## SimpleStrategy URL: https://hyperformula.handsontable.com/docs/api/classes/simplestrategy # SimpleStrategy ## Constructors ### constructor \+ **new SimpleStrategy**(`dependencyGraph`: DependencyGraph, `columnIndex`: [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md), `parser`: ParserWithCaching, `stats`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md), `cellContentParser`: [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md), `arraySizePredictor`: [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md)): *[SimpleStrategy](https://hyperformula.handsontable.com/docs/api/classes/simplestrategy.md)* *Defined in [src/GraphBuilder.ts:67](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L67)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `columnIndex` | [ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md) | `parser` | ParserWithCaching | `stats` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | `cellContentParser` | [CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md) | `arraySizePredictor` | [ArraySizePredictor](https://hyperformula.handsontable.com/docs/api/classes/arraysizepredictor.md) | **Returns:** *[SimpleStrategy](https://hyperformula.handsontable.com/docs/api/classes/simplestrategy.md)* ## Methods ### run ▸ **run**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets)): *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* *Defined in [src/GraphBuilder.ts:78](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | **Returns:** *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* --- ## ColumnsSpan URL: https://hyperformula.handsontable.com/docs/api/classes/columnsspan # ColumnsSpan ## Constructors ### constructor \+ **new ColumnsSpan**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* ## Properties ### columnEnd • **columnEnd**: *number* *Defined in [src/Span.ts:76](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L76)* ___ ### columnStart • **columnStart**: *number* *Defined in [src/Span.ts:75](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L75)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L74)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:94](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L94)* **Returns:** *number* ___ ### numberOfColumns • **get numberOfColumns**(): *number* *Defined in [src/Span.ts:86](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L86)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:90](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L90)* **Returns:** *number* ## Methods ### columns ▸ **columns**(): *IterableIterator‹number›* *Defined in [src/Span.ts:106](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L106)* **Returns:** *IterableIterator‹number›* ___ ### firstColumn ▸ **firstColumn**(): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:124](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L124)* **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* ___ ### intersect ▸ **intersect**(`otherSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | null* *Defined in [src/Span.ts:112](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L112)* **Parameters:** Name | Type | ------ | ------ | `otherSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | null* ___ ### fromColumnStartAndEnd ▸ **fromColumnStartAndEnd**(`sheet`: number, `columnStart`: number, `columnEnd`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* *Defined in [src/Span.ts:102](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L102)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `columnEnd` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* ___ ### fromNumberOfColumns ▸ **fromNumberOfColumns**(`sheet`: number, `columnStart`: number, `numberOfColumns`: number): *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* *Defined in [src/Span.ts:98](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L98)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `numberOfColumns` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)‹›* --- ## Statistics URL: https://hyperformula.handsontable.com/docs/api/classes/statistics # Statistics Provides tracking performance statistics to the engine ## Methods ### end ▸ **end**(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/Statistics.ts:59](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L59)* Stops tracking particular statistic. Raise error if tracking statistic wasn't started. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | statistic to stop tracking | **Returns:** *void* ___ ### incrementCriterionFunctionFullCacheUsed ▸ **incrementCriterionFunctionFullCacheUsed**(): *void* *Defined in [src/statistics/Statistics.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L18)* **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/Statistics.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L24)* **Returns:** *void* ___ ### measure ▸ **measure**‹**T**›(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), `func`: function): *T* *Defined in [src/statistics/Statistics.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L80)* Measure given statistic as execution of given function. **Type parameters:** ▪ **T** **Parameters:** ▪ **name**: *[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)* statistic to track ▪ **func**: *function* function to call ▸ (): *T* **Returns:** *T* result of the function call ___ ### reset ▸ **reset**(): *void* *Defined in [src/statistics/Statistics.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L33)* Resets statistics **Returns:** *void* ___ ### snapshot ▸ **snapshot**(): *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* *Defined in [src/statistics/Statistics.ts:90](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L90)* Returns the snapshot of current results **Returns:** *Map‹[StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md), number›* ___ ### start ▸ **start**(`name`: [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md)): *void* *Defined in [src/statistics/Statistics.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/Statistics.ts#L45)* Starts tracking particular statistic. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | statistic to start tracking | **Returns:** *void* --- ## WorkbookStore URL: https://hyperformula.handsontable.com/docs/api/classes/workbookstore # WorkbookStore ## Methods ### add ▸ **add**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)): *void* *Defined in [src/NamedExpressions.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | **Returns:** *void* ___ ### get ▸ **get**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:59](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L59)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L80)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### getExisting ▸ **getExisting**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L63)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### has ▸ **has**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### remove ▸ **remove**(`expressionName`: string): *void* *Defined in [src/NamedExpressions.ts:72](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *void* --- ## WorksheetStore URL: https://hyperformula.handsontable.com/docs/api/classes/worksheetstore # WorksheetStore ## Properties ### mapping • **mapping**: *Map‹string, [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)‹››* = new Map() *Defined in [src/NamedExpressions.ts:90](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L90)* ## Methods ### add ▸ **add**(`namedExpression`: [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)): *void* *Defined in [src/NamedExpressions.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L92)* **Parameters:** Name | Type | ------ | ------ | `namedExpression` | [InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md) | **Returns:** *void* ___ ### get ▸ **get**(`expressionName`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* *Defined in [src/NamedExpressions.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)›* ___ ### getAllNamedExpressions ▸ **getAllNamedExpressions**(): *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* *Defined in [src/NamedExpressions.ts:104](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L104)* **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)[]* ___ ### has ▸ **has**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:100](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L100)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### isNameAvailable ▸ **isNameAvailable**(`expressionName`: string): *boolean* *Defined in [src/NamedExpressions.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L108)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *boolean* ___ ### remove ▸ **remove**(`expressionName`: string): *void* *Defined in [src/NamedExpressions.ts:113](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *void* --- ## TargetLocationHasArrayError URL: https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror # TargetLocationHasArrayError Error thrown when selected target location has an array. **`see`** [addRows](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md#addrows) **`see`** [addColumns](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md#addcolumns) **`see`** [moveCells](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#movecells) **`see`** [moveRows](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#moverows) **`see`** [moveColumns](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#movecolumns) **`see`** [paste](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#paste) ## Constructors ### constructor \+ **new TargetLocationHasArrayError**(): *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* *Defined in [src/errors.ts:366](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L366)* **Returns:** *[TargetLocationHasArrayError](https://hyperformula.handsontable.com/docs/api/classes/targetlocationhasarrayerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## CellType URL: https://hyperformula.handsontable.com/docs/api/enums/celltype # CellType ## Enumeration members ### ARRAY • **ARRAY**: = "ARRAY" *Defined in [src/Cell.ts:56](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L56)* ___ ### ARRAYFORMULA • **ARRAYFORMULA**: = "ARRAYFORMULA" *Defined in [src/Cell.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L58)* ___ ### EMPTY • **EMPTY**: = "EMPTY" *Defined in [src/Cell.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L57)* ___ ### FORMULA • **FORMULA**: = "FORMULA" *Defined in [src/Cell.ts:54](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L54)* ___ ### VALUE • **VALUE**: = "VALUE" *Defined in [src/Cell.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L55)* --- ## CellValueJustNumber URL: https://hyperformula.handsontable.com/docs/api/enums/cellvaluejustnumber # CellValueJustNumber ## Enumeration members ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/Cell.ts:88](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L88)* --- ## CellValueNoNumber URL: https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber # CellValueNoNumber ## Enumeration members ### BOOLEAN • **BOOLEAN**: = "BOOLEAN" *Defined in [src/Cell.ts:83](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L83)* ___ ### EMPTY • **EMPTY**: = "EMPTY" *Defined in [src/Cell.ts:80](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L80)* ___ ### ERROR • **ERROR**: = "ERROR" *Defined in [src/Cell.ts:84](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L84)* ___ ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/Cell.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L81)* ___ ### STRING • **STRING**: = "STRING" *Defined in [src/Cell.ts:82](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L82)* --- ## ClipboardOperationType URL: https://hyperformula.handsontable.com/docs/api/enums/clipboardoperationtype # ClipboardOperationType ## Enumeration members ### COPY • **COPY**: *Defined in [src/ClipboardOperations.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L19)* ___ ### CUT • **CUT**: *Defined in [src/ClipboardOperations.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L20)* --- ## UndoRedo URL: https://hyperformula.handsontable.com/docs/api/classes/undoredo # 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 snapshots of formula AST hashes keyed by the LazilyTransformingAstService version at which the irreversible transformation was applied. Each entry maps a version number to an array of `[cellAddress, astHash]` pairs that can be used to restore the original formula from the parser cache. ### 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](https://hyperformula.handsontable.com/docs/api/classes/config.md), `operations`: [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md)): *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* *Defined in [src/UndoRedo.ts:505](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L505)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `operations` | [Operations](https://hyperformula.handsontable.com/docs/api/classes/operations.md) | **Returns:** *[UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)* ## Properties ### oldData • **oldData**: *Map‹number, [[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), string][]›* = new Map() *Defined in [src/UndoRedo.ts:501](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L501)* ## Methods ### beginBatchMode ▸ **beginBatchMode**(): *void* *Defined in [src/UndoRedo.ts:522](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L522)* **Returns:** *void* ___ ### cleanupOrphanedOldData ▸ **cleanupOrphanedOldData**(): *void* *Defined in [src/UndoRedo.ts:880](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L880)* 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:550](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L550)* 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:556](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L556)* 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:526](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L526)* **Returns:** *void* ___ ### isRedoStackEmpty ▸ **isRedoStackEmpty**(): *boolean* *Defined in [src/UndoRedo.ts:565](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L565)* **Returns:** *boolean* ___ ### isUndoStackEmpty ▸ **isUndoStackEmpty**(): *boolean* *Defined in [src/UndoRedo.ts:561](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L561)* **Returns:** *boolean* ___ ### redo ▸ **redo**(): *void* *Defined in [src/UndoRedo.ts:756](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L756)* **Returns:** *void* ___ ### redoAddColumns ▸ **redoAddColumns**(`operation`: [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:808](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L808)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md) | **Returns:** *void* ___ ### redoAddNamedExpression ▸ **redoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:841](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L841)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoAddRows ▸ **redoAddRows**(`operation`: [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:804](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L804)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md) | **Returns:** *void* ___ ### redoAddSheet ▸ **redoAddSheet**(`operation`: [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:816](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L816)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md) | **Returns:** *void* ___ ### redoBatch ▸ **redoBatch**(`batchOperation`: [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md)): *void* *Defined in [src/UndoRedo.ts:768](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L768)* **Parameters:** Name | Type | ------ | ------ | `batchOperation` | [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md) | **Returns:** *void* ___ ### redoChangeNamedExpression ▸ **redoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:849](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L849)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoClearSheet ▸ **redoClearSheet**(`operation`: [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:832](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L832)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md) | **Returns:** *void* ___ ### redoMoveCells ▸ **redoMoveCells**(`operation`: [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:778](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L778)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md) | **Returns:** *void* ___ ### redoMoveColumns ▸ **redoMoveColumns**(`operation`: [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:828](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L828)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md) | **Returns:** *void* ___ ### redoMoveRows ▸ **redoMoveRows**(`operation`: [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:824](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L824)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md) | **Returns:** *void* ___ ### redoPaste ▸ **redoPaste**(`operation`: [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)): *void* *Defined in [src/UndoRedo.ts:786](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L786)* **Parameters:** Name | Type | ------ | ------ | `operation` | [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md) | **Returns:** *void* ___ ### redoRemoveColumns ▸ **redoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:782](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L782)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md) | **Returns:** *void* ___ ### redoRemoveNamedExpression ▸ **redoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:845](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L845)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md) | **Returns:** *void* ___ ### redoRemoveRows ▸ **redoRemoveRows**(`operation`: [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:774](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L774)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md) | **Returns:** *void* ___ ### redoRemoveSheet ▸ **redoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:812](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L812)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md) | **Returns:** *void* ___ ### redoRenameSheet ▸ **redoRenameSheet**(`operation`: [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:820](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L820)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md) | **Returns:** *void* ___ ### redoSetCellContents ▸ **redoSetCellContents**(`operation`: [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:798](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L798)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md) | **Returns:** *void* ___ ### redoSetColumnOrder ▸ **redoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:857](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L857)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md) | **Returns:** *void* ___ ### redoSetRowOrder ▸ **redoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:853](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L853)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md) | **Returns:** *void* ___ ### redoSetSheetContent ▸ **redoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)): *void* *Defined in [src/UndoRedo.ts:836](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L836)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md) | **Returns:** *void* ___ ### saveOperation ▸ **saveOperation**(`operation`: [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md)): *void* *Defined in [src/UndoRedo.ts:514](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L514)* **Parameters:** Name | Type | ------ | ------ | `operation` | [UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md) | **Returns:** *void* ___ ### storeDataForVersion ▸ **storeDataForVersion**(`version`: number, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `astHash`: string): *void* *Defined in [src/UndoRedo.ts:538](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L538)* Stores a formula AST hash snapshot 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](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `astHash` | string | **Returns:** *void* ___ ### undo ▸ **undo**(): *void* *Defined in [src/UndoRedo.ts:569](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L569)* **Returns:** *void* ___ ### undoAddColumns ▸ **undoAddColumns**(`operation`: [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:626](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L626)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addcolumnsundoentry.md) | **Returns:** *void* ___ ### undoAddNamedExpression ▸ **undoAddNamedExpression**(`operation`: [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:736](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L736)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addnamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoAddRows ▸ **undoAddRows**(`operation`: [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:618](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L618)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addrowsundoentry.md) | **Returns:** *void* ___ ### undoAddSheet ▸ **undoAddSheet**(`operation`: [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:678](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L678)* **Parameters:** Name | Type | ------ | ------ | `operation` | [AddSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/addsheetundoentry.md) | **Returns:** *void* ___ ### undoBatch ▸ **undoBatch**(`batchOperation`: [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md)): *void* *Defined in [src/UndoRedo.ts:580](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L580)* **Parameters:** Name | Type | ------ | ------ | `batchOperation` | [BatchUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/batchundoentry.md) | **Returns:** *void* ___ ### undoChangeNamedExpression ▸ **undoChangeNamedExpression**(`operation`: [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:744](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L744)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ChangeNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/changenamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoClearSheet ▸ **undoClearSheet**(`operation`: [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:711](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L711)* **Parameters:** Name | Type | ------ | ------ | `operation` | [ClearSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/clearsheetundoentry.md) | **Returns:** *void* ___ ### undoMoveCells ▸ **undoMoveCells**(`operation`: [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:666](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L666)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveCellsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecellsundoentry.md) | **Returns:** *void* ___ ### undoMoveColumns ▸ **undoMoveColumns**(`operation`: [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:659](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L659)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/movecolumnsundoentry.md) | **Returns:** *void* ___ ### undoMoveRows ▸ **undoMoveRows**(`operation`: [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:652](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L652)* **Parameters:** Name | Type | ------ | ------ | `operation` | [MoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/moverowsundoentry.md) | **Returns:** *void* ___ ### undoPaste ▸ **undoPaste**(`operation`: [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md)): *void* *Defined in [src/UndoRedo.ts:645](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L645)* **Parameters:** Name | Type | ------ | ------ | `operation` | [PasteUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/pasteundoentry.md) | **Returns:** *void* ___ ### undoRemoveColumns ▸ **undoRemoveColumns**(`operation`: [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:602](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L602)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveColumnsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removecolumnsundoentry.md) | **Returns:** *void* ___ ### undoRemoveNamedExpression ▸ **undoRemoveNamedExpression**(`operation`: [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md)): *void* *Defined in [src/UndoRedo.ts:740](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L740)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveNamedExpressionUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removenamedexpressionundoentry.md) | **Returns:** *void* ___ ### undoRemoveRows ▸ **undoRemoveRows**(`operation`: [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:586](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L586)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveRowsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removerowsundoentry.md) | **Returns:** *void* ___ ### undoRemoveSheet ▸ **undoRemoveSheet**(`operation`: [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:683](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L683)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RemoveSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/removesheetundoentry.md) | **Returns:** *void* ___ ### undoRenameSheet ▸ **undoRenameSheet**(`operation`: [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md)): *void* *Defined in [src/UndoRedo.ts:701](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L701)* **Parameters:** Name | Type | ------ | ------ | `operation` | [RenameSheetUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/renamesheetundoentry.md) | **Returns:** *void* ___ ### undoSetCellContents ▸ **undoSetCellContents**(`operation`: [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md)): *void* *Defined in [src/UndoRedo.ts:634](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L634)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetCellContentsUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcellcontentsundoentry.md) | **Returns:** *void* ___ ### undoSetColumnOrder ▸ **undoSetColumnOrder**(`operation`: [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:752](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L752)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetColumnOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setcolumnorderundoentry.md) | **Returns:** *void* ___ ### undoSetRowOrder ▸ **undoSetRowOrder**(`operation`: [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md)): *void* *Defined in [src/UndoRedo.ts:748](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L748)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetRowOrderUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setroworderundoentry.md) | **Returns:** *void* ___ ### undoSetSheetContent ▸ **undoSetSheetContent**(`operation`: [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md)): *void* *Defined in [src/UndoRedo.ts:723](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L723)* **Parameters:** Name | Type | ------ | ------ | `operation` | [SetSheetContentUndoEntry](https://hyperformula.handsontable.com/docs/api/classes/setsheetcontentundoentry.md) | **Returns:** *void* --- ## ClipboardCellType URL: https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype # ClipboardCellType ## Enumeration members ### EMPTY • **EMPTY**: *Defined in [src/ClipboardOperations.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L25)* ___ ### FORMULA • **FORMULA**: *Defined in [src/ClipboardOperations.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L26)* ___ ### PARSING_ERROR • **PARSING_ERROR**: *Defined in [src/ClipboardOperations.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L27)* ___ ### VALUE • **VALUE**: *Defined in [src/ClipboardOperations.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L24)* --- ## ErrorType URL: https://hyperformula.handsontable.com/docs/api/enums/errortype # ErrorType Possible errors returned by our interpreter. ## Enumeration members ### CYCLE • **CYCLE**: = "CYCLE" *Defined in [src/Cell.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L36)* Cyclic dependency. ___ ### DIV_BY_ZERO • **DIV_BY_ZERO**: = "DIV_BY_ZERO" *Defined in [src/Cell.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L27)* Division by zero. ___ ### ERROR • **ERROR**: = "ERROR" *Defined in [src/Cell.ts:48](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L48)* Generic error ___ ### LIC • **LIC**: = "LIC" *Defined in [src/Cell.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L45)* Invalid/missing licence error. ___ ### NA • **NA**: = "NA" *Defined in [src/Cell.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L33)* ___ ### NAME • **NAME**: = "NAME" *Defined in [src/Cell.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L30)* Unknown function name. ___ ### NUM • **NUM**: = "NUM" *Defined in [src/Cell.ts:32](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L32)* ___ ### REF • **REF**: = "REF" *Defined in [src/Cell.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L39)* Wrong address reference. ___ ### SPILL • **SPILL**: = "SPILL" *Defined in [src/Cell.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L42)* Array spill error. ___ ### VALUE • **VALUE**: = "VALUE" *Defined in [src/Cell.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L31)* --- ## Events URL: https://hyperformula.handsontable.com/docs/api/enums/events # Events ## Enumeration members ### EvaluationResumed • **EvaluationResumed**: = "evaluationResumed" *Defined in [src/Emitter.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L17)* ___ ### EvaluationSuspended • **EvaluationSuspended**: = "evaluationSuspended" *Defined in [src/Emitter.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L16)* ___ ### NamedExpressionAdded • **NamedExpressionAdded**: = "namedExpressionAdded" *Defined in [src/Emitter.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L13)* ___ ### NamedExpressionRemoved • **NamedExpressionRemoved**: = "namedExpressionRemoved" *Defined in [src/Emitter.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L14)* ___ ### SheetAdded • **SheetAdded**: = "sheetAdded" *Defined in [src/Emitter.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L10)* ___ ### SheetRemoved • **SheetRemoved**: = "sheetRemoved" *Defined in [src/Emitter.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L11)* ___ ### SheetRenamed • **SheetRenamed**: = "sheetRenamed" *Defined in [src/Emitter.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L12)* ___ ### ValuesUpdated • **ValuesUpdated**: = "valuesUpdated" *Defined in [src/Emitter.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L15)* --- ## FormatExpressionType URL: https://hyperformula.handsontable.com/docs/api/enums/formatexpressiontype # FormatExpressionType ## Enumeration members ### DATE • **DATE**: = "DATE" *Defined in [src/format/parser.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L29)* ___ ### NUMBER • **NUMBER**: = "NUMBER" *Defined in [src/format/parser.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L30)* ___ ### STRING • **STRING**: = "STRING" *Defined in [src/format/parser.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L31)* --- ## UnableToParseError URL: https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror # UnableToParseError Error thrown when the given value cannot be parsed. Checks against the validity in: **`see`** [buildFromArray](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#static-buildfromarray) **`see`** [buildFromSheets](https://hyperformula.handsontable.com/docs/api/classes/buildenginefactory.md#static-buildfromsheets) **`see`** [[setCellsContents]] ## Constructors ### constructor \+ **new UnableToParseError**(`value`: any): *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* *Defined in [src/errors.ts:160](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L160)* **Parameters:** Name | Type | ------ | ------ | `value` | any | **Returns:** *[UnableToParseError](https://hyperformula.handsontable.com/docs/api/classes/unabletoparseerror.md)* ## Properties ### message • **message**: *string* ___ ### name • **name**: *string* ___ ### stack • **stack**? : *undefined | string* ___ ### Error ▪ **Error**: *ErrorConstructor* --- ## StatType URL: https://hyperformula.handsontable.com/docs/api/enums/stattype # StatType **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ## Enumeration members ### ADJUSTING_ADDRESS_MAPPING • **ADJUSTING_ADDRESS_MAPPING**: = "ADJUSTING_ADDRESS_MAPPING" *Defined in [src/statistics/StatType.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L20)* ___ ### ADJUSTING_ARRAY_MAPPING • **ADJUSTING_ARRAY_MAPPING**: = "ADJUSTING_ARRAY_MAPPING" *Defined in [src/statistics/StatType.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L21)* ___ ### ADJUSTING_GRAPH • **ADJUSTING_GRAPH**: = "ADJUSTING_GRAPH" *Defined in [src/statistics/StatType.ts:23](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L23)* ___ ### ADJUSTING_RANGES • **ADJUSTING_RANGES**: = "ADJUSTING_RANGES" *Defined in [src/statistics/StatType.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L22)* ___ ### BUILD_COLUMN_INDEX • **BUILD_COLUMN_INDEX**: = "BUILD_COLUMN_INDEX" *Defined in [src/statistics/StatType.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L14)* ___ ### BUILD_ENGINE_TOTAL • **BUILD_ENGINE_TOTAL**: = "BUILD_ENGINE_TOTAL" *Defined in [src/statistics/StatType.ts:8](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L8)* ___ ### COLLECT_DEPENDENCIES • **COLLECT_DEPENDENCIES**: = "COLLECT_DEPENDENCIES" *Defined in [src/statistics/StatType.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L11)* ___ ### CRITERION_FUNCTION_FULL_CACHE_USED • **CRITERION_FUNCTION_FULL_CACHE_USED**: = "CRITERION_FUNCTION_FULL_CACHE_USED" *Defined in [src/statistics/StatType.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L25)* ___ ### CRITERION_FUNCTION_PARTIAL_CACHE_USED • **CRITERION_FUNCTION_PARTIAL_CACHE_USED**: = "CRITERION_FUNCTION_PARTIAL_CACHE_USED" *Defined in [src/statistics/StatType.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L26)* ___ ### EVALUATION • **EVALUATION**: = "EVALUATION" *Defined in [src/statistics/StatType.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L15)* ___ ### GRAPH_BUILD • **GRAPH_BUILD**: = "GRAPH_BUILD" *Defined in [src/statistics/StatType.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L10)* ___ ### PARSER • **PARSER**: = "PARSER" *Defined in [src/statistics/StatType.ts:9](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L9)* ___ ### PROCESS_DEPENDENCIES • **PROCESS_DEPENDENCIES**: = "PROCESS_DEPENDENCIES" *Defined in [src/statistics/StatType.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L12)* ___ ### TOP_SORT • **TOP_SORT**: = "TOP_SORT" *Defined in [src/statistics/StatType.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L13)* ___ ### TRANSFORM_ASTS • **TRANSFORM_ASTS**: = "TRANSFORM_ASTS" *Defined in [src/statistics/StatType.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L18)* ___ ### TRANSFORM_ASTS_POSTPONED • **TRANSFORM_ASTS_POSTPONED**: = "TRANSFORM_ASTS_POSTPONED" *Defined in [src/statistics/StatType.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L19)* ___ ### VLOOKUP • **VLOOKUP**: = "VLOOKUP" *Defined in [src/statistics/StatType.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/statistics/StatType.ts#L16)* --- ## TokenType URL: https://hyperformula.handsontable.com/docs/api/enums/tokentype # TokenType ## Enumeration members ### FORMAT • **FORMAT**: = "FORMAT" *Defined in [src/format/parser.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L12)* ___ ### FREE_TEXT • **FREE_TEXT**: = "FREE_TEXT" *Defined in [src/format/parser.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L13)* --- ## AdvancedFindOptions URL: https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions # AdvancedFindOptions ## Properties ### returnOccurrence • **returnOccurrence**? : *"first" | "last"* *Defined in [src/Lookup/SearchStrategy.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L24)* --- ## CellRange URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellrange # CellRange ## Properties ### end • **end**: *CellAddress* *Defined in [src/Cell.ts:237](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L237)* ___ ### start • **start**: *CellAddress* *Defined in [src/Cell.ts:236](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L236)* --- ## LicenseKeyValidityState URL: https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate # LicenseKeyValidityState The list of all available states which the license checker can return. ## Enumeration members ### EXPIRED • **EXPIRED**: = "expired" *Defined in [src/helpers/licenseKeyValidator.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L14)* ___ ### INVALID • **INVALID**: = "invalid" *Defined in [src/helpers/licenseKeyValidator.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L13)* ___ ### MISSING • **MISSING**: = "missing" *Defined in [src/helpers/licenseKeyValidator.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L15)* ___ ### VALID • **VALID**: = "valid" *Defined in [src/helpers/licenseKeyValidator.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L12)* --- ## ChangedCell URL: https://hyperformula.handsontable.com/docs/api/interfaces/changedcell # ChangedCell ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Operations.ts:133](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L133)* ___ ### cellType • **cellType**: *[ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)* *Defined in [src/Operations.ts:134](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L134)* --- ## CellValueChange URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange # CellValueChange ## Properties ### address • **address**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/ContentChanges.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L11)* ___ ### oldValue • **oldValue**? : *InterpreterValue* *Defined in [src/ContentChanges.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L13)* ___ ### value • **value**: *InterpreterValue* *Defined in [src/ContentChanges.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L12)* --- ## ClipboardCellEmpty URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellempty # ClipboardCellEmpty ## Properties ### type • **type**: *[EMPTY](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#empty)* *Defined in [src/ClipboardOperations.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L37)* --- ## ChangeExporter URL: https://hyperformula.handsontable.com/docs/api/interfaces/changeexporter # ChangeExporter ## Properties ### exportChange • **exportChange**: *function* *Defined in [src/ContentChanges.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L17)* #### Type declaration: ▸ (`arg`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)): *T | T[]* **Parameters:** Name | Type | ------ | ------ | `arg` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md) | --- ## ClipboardCellFormula URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellformula # ClipboardCellFormula ## Properties ### hash • **hash**: *string* *Defined in [src/ClipboardOperations.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L42)* ___ ### type • **type**: *[FORMULA](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#formula)* *Defined in [src/ClipboardOperations.ts:41](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L41)* --- ## API Reference Overview URL: https://hyperformula.handsontable.com/docs/api/globals # API Reference Overview ## Type aliases ### CellDependency Ƭ **CellDependency**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | [AbsoluteCellRange](https://hyperformula.handsontable.com/docs/api/classes/absolutecellrange.md) | NamedExpressionDependency* *Defined in [src/CellDependency.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellDependency.ts#L10)* ___ ### CellValue Ƭ **CellValue**: *[NoErrorCellValue](https://hyperformula.handsontable.com/docs/api/globals.md#noerrorcellvalue) | [DetailedCellError](https://hyperformula.handsontable.com/docs/api/classes/detailedcellerror.md)* *Defined in [src/CellValue.ts:9](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L9)* ___ ### CellValueDetailedType Ƭ **CellValueDetailedType**: *[CellValueNoNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber.md) | NumberType* *Defined in [src/Cell.ts:94](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L94)* ___ ### CellValueType Ƭ **CellValueType**: *[CellValueNoNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluenonumber.md) | [CellValueJustNumber](https://hyperformula.handsontable.com/docs/api/enums/cellvaluejustnumber.md)* *Defined in [src/Cell.ts:91](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L91)* ___ ### ChangeList Ƭ **ChangeList**: *[CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]* *Defined in [src/ContentChanges.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ContentChanges.ts#L20)* ___ ### ClipboardCell Ƭ **ClipboardCell**: *[ClipboardCellValue](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellvalue.md) | [ClipboardCellFormula](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellformula.md) | [ClipboardCellEmpty](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellempty.md) | [ClipboardCellParsingError](https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellparsingerror.md)* *Defined in [src/ClipboardOperations.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L16)* ___ ### ColumnMap Ƭ **ColumnMap**: *Map‹RawInterpreterValue, [ValueIndex](https://hyperformula.handsontable.com/docs/api/interfaces/valueindex.md)›* *Defined in [src/Lookup/ColumnIndex.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L30)* ___ ### ColumnRowIndex Ƭ **ColumnRowIndex**: *[number, number]* *Defined in [src/CrudOperations.ts:65](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L65)* ___ ### ConfigParamsList Ƭ **ConfigParamsList**: *keyof ConfigParams* *Defined in [src/ConfigParams.ts:450](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L450)* ___ ### ConsoleMessages Ƭ **ConsoleMessages**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L24)* #### Type declaration: ___ ### DateTime Ƭ **DateTime**: *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime)* *Defined in [src/DateTimeHelper.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L31)* ___ ### Dependencies Ƭ **Dependencies**: *Map‹Vertex, [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]›* *Defined in [src/GraphBuilder.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L25)* ___ ### EngineState Ƭ **EngineState**: *object* *Defined in [src/BuildEngineFactory.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/BuildEngineFactory.ts#L33)* #### Type declaration: * **cellContentParser**: *[CellContentParser](https://hyperformula.handsontable.com/docs/api/classes/cellcontentparser.md)* * **columnSearch**: *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* * **config**: *[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)* * **crudOperations**: *[CrudOperations](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md)* * **dependencyGraph**: *DependencyGraph* * **evaluator**: *[Evaluator](https://hyperformula.handsontable.com/docs/api/classes/evaluator.md)* * **exporter**: *[Exporter](https://hyperformula.handsontable.com/docs/api/classes/exporter.md)* * **functionRegistry**: *FunctionRegistry* * **lazilyTransformingAstService**: *[LazilyTransformingAstService](https://hyperformula.handsontable.com/docs/api/classes/lazilytransformingastservice.md)* * **namedExpressions**: *[NamedExpressions](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md)* * **parser**: *ParserWithCaching* * **serialization**: *[Serialization](https://hyperformula.handsontable.com/docs/api/classes/serialization.md)* * **stats**: *[Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)* * **unparser**: *Unparser* ___ ### ExportedChange Ƭ **ExportedChange**: *[ExportedCellChange](https://hyperformula.handsontable.com/docs/api/classes/exportedcellchange.md) | [ExportedNamedExpressionChange](https://hyperformula.handsontable.com/docs/api/classes/exportednamedexpressionchange.md)* *Defined in [src/Exporter.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Exporter.ts#L18)* ___ ### LicenseKeyInvalidState Ƭ **LicenseKeyInvalidState**: *Exclude‹[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md), [VALID](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md#valid)›* *Defined in [src/helpers/licenseKeyValidator.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L18)* ___ ### Maybe Ƭ **Maybe**: *T | undefined* *Defined in [src/Maybe.ts:6](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Maybe.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### MessageDescriptor Ƭ **MessageDescriptor**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L28)* #### Type declaration: * **template**: *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* * **vars**: *[TemplateVars](https://hyperformula.handsontable.com/docs/api/interfaces/templatevars.md)* ___ ### NamedExpressionOptions Ƭ **NamedExpressionOptions**: *Record‹string, string | number | boolean›* *Defined in [src/NamedExpressions.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L22)* ___ ### NoErrorCellValue Ƭ **NoErrorCellValue**: *number | string | boolean | null* *Defined in [src/CellValue.ts:8](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellValue.ts#L8)* ___ ### RawCellContent Ƭ **RawCellContent**: *Date | string | number | boolean | null | undefined* *Defined in [src/CellContentParser.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L25)* ___ ### Sheet Ƭ **Sheet**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)[][]* *Defined in [src/Sheet.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L12)* Two-dimenstional array representation of sheet ___ ### SheetDimensions Ƭ **SheetDimensions**: *object* *Defined in [src/Sheet.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L19)* Represents size of a sheet #### Type declaration: * **height**: *number* * **width**: *number* ___ ### SheetIndex Ƭ **SheetIndex**: *[ColumnMap](https://hyperformula.handsontable.com/docs/api/globals.md#columnmap)[]* *Defined in [src/Lookup/ColumnIndex.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L37)* ___ ### Sheets Ƭ **Sheets**: *Record‹string, [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)›* *Defined in [src/Sheet.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L14)* ___ ### SimpleDateTime Ƭ **SimpleDateTime**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) & [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* *Defined in [src/DateTimeHelper.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L29)* ___ ### Span Ƭ **Span**: *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md) | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)* *Defined in [src/Span.ts:6](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Span.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### TranslatableErrorType Ƭ **TranslatableErrorType**: *Exclude‹[ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype), [LIC](https://hyperformula.handsontable.com/docs/api/enums/errortype.md#lic)›* *Defined in [src/Cell.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L51)* ## Variables ### DATE_SEPARATOR_REGEXP • **DATE_SEPARATOR_REGEXP**: *RegExp‹›* = new RegExp('[ /.-]') *Defined in [src/DateTimeDefault.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L13)* ___ ### HOURS_PER_DAY • **HOURS_PER_DAY**: *24* = 24 *Defined in [src/DateTimeHelper.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L15)* ___ ### LCID_CURRENCY_TAG • **LCID_CURRENCY_TAG**: *RegExp‹›* = /\[\$[^\-\]]+-/ *Defined in [src/format/format.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L26)* Detects Excel LCID-tagged currency tags (`[$SYMBOL-LCID]` with a non-empty SYMBOL portion). Shared by `defaultStringifyDateTime` and `defaultStringifyDuration` so a format string carrying such a tag short- circuits both date and duration dispatch and falls through to the number formatter (or the user-supplied `stringifyCurrency` callback). The pattern is intentionally unanchored: any occurrence of `[$SYMBOL-` in the format string triggers the guard. Excel does not mix date/time tokens with a currency tag in the same format string, so a mid-string match cannot misclassify a legitimate composite — every observed format string with a currency tag is currency-only. ___ ### MINUTES_PER_HOUR • **MINUTES_PER_HOUR**: *60* = 60 *Defined in [src/DateTimeHelper.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L14)* ___ ### NOT_FOUND • **NOT_FOUND**: *-1* = -1 *Defined in [src/Lookup/AdvancedFind.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/AdvancedFind.ts#L19)* ___ ### QUICK_CHECK_REGEXP • **QUICK_CHECK_REGEXP**: *RegExp‹›* = new RegExp('^[0-9/.\\-: ]+[ap]?m?$') *Defined in [src/DateTimeDefault.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L11)* ___ ### SECONDS_PER_MINUTE • **SECONDS_PER_MINUTE**: *60* = 60 *Defined in [src/DateTimeHelper.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L13)* ___ ### SECONDS_PRECISION • **SECONDS_PRECISION**: *1000* = 1000 *Defined in [src/DateTimeDefault.ts:15](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L15)* ___ ### TIME_FORMAT_SECONDS_ITEM_REGEXP • **TIME_FORMAT_SECONDS_ITEM_REGEXP**: *RegExp‹›* = new RegExp('^ss(\\.(s+|0+))?$') *Defined in [src/DateTimeDefault.ts:9](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L9)* ___ ### TIME_SEPARATOR • **TIME_SEPARATOR**: *":"* = ":" *Defined in [src/DateTimeDefault.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L14)* ___ ### WHITESPACE_REGEXP • **WHITESPACE_REGEXP**: *RegExp‹›* = new RegExp('\\s+') *Defined in [src/DateTimeDefault.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L12)* ___ ### WRONG_RANGE_SIZE • **WRONG_RANGE_SIZE**: *"AbsoluteCellRange: Wrong range size"* = "AbsoluteCellRange: Wrong range size" *Defined in [src/AbsoluteCellRange.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L22)* ___ ### _notified • **_notified**: *boolean* = false *Defined in [src/helpers/licenseKeyValidator.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L43)* ___ ### _rl • **_rl**: *"length"* = "length" *Defined in [src/helpers/licenseKeyHelper.ts:9](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L9)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. ___ ### dateFormatRegex • **dateFormatRegex**: *RegExp‹›* = /(\\.|dd|DD|d|D|mm|MM|m|M|YYYY|YY|yyyy|yy|HH|hh|H|h|ss(\.(0+|s+))?|s|AM\/PM|am\/pm|A\/P|a\/p|\[mm]|\[MM]|\[hh]|\[HH])/g *Defined in [src/format/parser.ts:8](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L8)* ___ ### defaultLanguage • **defaultLanguage**: *string* = Config.defaultConfig.language *Defined in [src/index.ts:108](https://github.com/handsontable/hyperformula/blob/b8542ec/src/index.ts#L108)* ___ ### memoizedParseDateFormat • **memoizedParseDateFormat**: *(Anonymous function)* = memoize(parseDateFormat) *Defined in [src/DateTimeDefault.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L17)* ___ ### memoizedParseTimeFormat • **memoizedParseTimeFormat**: *(Anonymous function)* = memoize(parseTimeFormat) *Defined in [src/DateTimeDefault.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L16)* ___ ### numDays • **numDays**: *number[]* = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] *Defined in [src/DateTimeHelper.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L10)* ___ ### numberFormatRegex • **numberFormatRegex**: *RegExp‹›* = /(\\.|[#0]+(\.[#0]*)?)/g *Defined in [src/format/parser.ts:9](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L9)* ___ ### prefSumDays • **prefSumDays**: *number[]* = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] *Defined in [src/DateTimeHelper.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L11)* ___ ### privatePool • **privatePool**: *WeakMap‹[Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), object›* = new WeakMap() *Defined in [src/Config.ts:27](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L27)* ## Functions ### CellValueTypeOrd ▸ **CellValueTypeOrd**(`arg`: [CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)): *number* *Defined in [src/Cell.ts:97](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L97)* **Parameters:** Name | Type | ------ | ------ | `arg` | [CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype) | **Returns:** *number* ___ ### _cp ▸ **_cp**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L14)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _hd ▸ **_hd**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:10](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L10)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _nm ▸ **_nm**(`v`: any): *string* *Defined in [src/helpers/licenseKeyHelper.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L12)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *string* ___ ### _pi ▸ **_pi**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L11)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### _ss ▸ **_ss**(`v`: any, `s`: any, `l`: any): *any* *Defined in [src/helpers/licenseKeyHelper.ts:13](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L13)* **Parameters:** Name | Type | ------ | ------ | `v` | any | `s` | any | `l` | any | **Returns:** *any* ___ ### absoluteSheetReference ▸ **absoluteSheetReference**(`address`: AddressWithSheet, `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *number* *Defined in [src/Cell.ts:222](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L222)* **Parameters:** Name | Type | ------ | ------ | `address` | AddressWithSheet | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *number* ___ ### absolutizeDependencies ▸ **absolutizeDependencies**(`deps`: RelativeDependency[], `baseAddress`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* *Defined in [src/absolutizeDependencies.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/absolutizeDependencies.ts#L17)* Converts dependencies from maybe relative addressing to absolute addressing. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `deps` | RelativeDependency[] | list of addresses in R0C0 format | `baseAddress` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | base address with regard to which make a convertion | **Returns:** *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* ___ ### addressKey ▸ **addressKey**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *string* *Defined in [src/Cell.ts:209](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L209)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *string* ___ ### arraySizeForBinaryOp ▸ **arraySizeForBinaryOp**(`leftArraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md), `rightArraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `leftArraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | `rightArraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### arraySizeForUnaryOp ▸ **arraySizeForUnaryOp**(`arraySize`: [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)): *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArraySize.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArraySize.ts#L38)* **Parameters:** Name | Type | ------ | ------ | `arraySize` | [ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) | **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* ___ ### buildColumnSearchStrategy ▸ **buildColumnSearchStrategy**(`dependencyGraph`: DependencyGraph, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `statistics`: [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md)): *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* *Defined in [src/Lookup/SearchStrategy.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L63)* **Parameters:** Name | Type | ------ | ------ | `dependencyGraph` | DependencyGraph | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `statistics` | [Statistics](https://hyperformula.handsontable.com/docs/api/classes/statistics.md) | **Returns:** *[ColumnSearchStrategy](https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy.md)* ___ ### checkKeySchema ▸ **checkKeySchema**(`v`: any): *boolean* *Defined in [src/helpers/licenseKeyHelper.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L20)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *boolean* ___ ### checkLicenseKeyValidity ▸ **checkLicenseKeyValidity**(`licenseKey`: string): *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* *Defined in [src/helpers/licenseKeyValidator.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L51)* Checks if the provided license key is grammatically valid or not expired. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `licenseKey` | string | The license key to check. | **Returns:** *[LicenseKeyValidityState](https://hyperformula.handsontable.com/docs/api/enums/licensekeyvaliditystate.md)* Returns the checking state. ___ ### collatorFromConfig ▸ **collatorFromConfig**(`config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md)): *Collator* *Defined in [src/StringHelper.ts:8](https://github.com/handsontable/hyperformula/blob/b8542ec/src/StringHelper.ts#L8)* **Parameters:** Name | Type | ------ | ------ | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | **Returns:** *Collator* ___ ### configCheckIfParametersNotInConflict ▸ **configCheckIfParametersNotInConflict**(...`params`: object[]): *void* *Defined in [src/ArgumentSanitization.ts:57](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L57)* **Parameters:** Name | Type | ------ | ------ | `...params` | object[] | **Returns:** *void* ___ ### configValueFromParam ▸ **configValueFromParam**(`inputValue`: any, `expectedType`: string | string[], `paramName`: [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)): *any* *Defined in [src/ArgumentSanitization.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `inputValue` | any | `expectedType` | string | string[] | `paramName` | [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist) | **Returns:** *any* ___ ### configValueFromParamCheck ▸ **configValueFromParamCheck**(`inputValue`: any, `typeCheck`: function, `expectedType`: string, `paramName`: [ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)): *any* *Defined in [src/ArgumentSanitization.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L47)* **Parameters:** ▪ **inputValue**: *any* ▪ **typeCheck**: *function* ▸ (`object`: any): *boolean* **Parameters:** Name | Type | ------ | ------ | `object` | any | ▪ **expectedType**: *string* ▪ **paramName**: *[ConfigParamsList](https://hyperformula.handsontable.com/docs/api/globals.md#configparamslist)* **Returns:** *any* ___ ### countChars ▸ **countChars**(`text`: string, `char`: string): *number* *Defined in [src/format/format.ts:74](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L74)* **Parameters:** Name | Type | ------ | ------ | `text` | string | `char` | string | **Returns:** *number* ___ ### createTokens ▸ **createTokens**(`regexTokens`: RegExpExecArray[], `str`: string): *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* *Defined in [src/format/parser.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `regexTokens` | RegExpExecArray[] | `str` | string | **Returns:** *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* ___ ### dayToMonth ▸ **dayToMonth**(`dayOfYear`: number): *number* *Defined in [src/DateTimeHelper.ts:270](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L270)* **Parameters:** Name | Type | ------ | ------ | `dayOfYear` | number | **Returns:** *number* ___ ### defaultParseToDate ▸ **defaultParseToDate**(`dateItems`: string[], `dateFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)›* *Defined in [src/DateTimeDefault.ts:137](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L137)* Parses a date value from a string if the string matches the given date format. **Parameters:** Name | Type | ------ | ------ | `dateItems` | string[] | `dateFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)›* ___ ### defaultParseToDateTime ▸ **defaultParseToDateTime**(`text`: string, `dateFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›, `timeFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* *Defined in [src/DateTimeDefault.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L30)* Parses a DateTime value from a string if the string matches the given date format and time format. Idea for more readable implementation: - divide string into parts by a regexp [date_regexp]? [time_regexp]? [ampm_regexp]? - start by finding the time part, because it is unambiguous '([0-9]+:[0-9:.]+ ?[ap]?m?)$', before it is the date part - OR split by spaces - last segment is ampm token, second to last is time (with or without ampm), rest is date If applied: - date parsing might work differently after these changes but still according to the docs - make sure to test edge cases like timeFormats: ['hh', 'ss.ss'] etc, string: '01-01-2019 AM', 'PM' **Parameters:** Name | Type | ------ | ------ | `text` | string | `dateFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | `timeFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* ___ ### defaultParseToTime ▸ **defaultParseToTime**(`timeItems`: string[], `timeFormat`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)›* *Defined in [src/DateTimeDefault.ts:82](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L82)* Parses a time value from a string if the string matches the given time format. **Parameters:** Name | Type | ------ | ------ | `timeItems` | string[] | `timeFormat` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)›* ___ ### defaultStringifyCurrency ▸ **defaultStringifyCurrency**(`_value`: number, `_formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:328](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L328)* Default implementation of the `stringifyCurrency` config option. Returning `undefined` instructs the formatter to fall through to the built-in number formatter, preserving HyperFormula's zero-dependency default behavior. Replace this default by setting the [`stringifyCurrency`](https://hyperformula.handsontable.com/api/interfaces/configparams.md#stringifycurrency) config option. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `_value` | number | the numeric value to format (unused in default). | `_formatArg` | string | the format string passed to `TEXT` (unused in default). | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* `undefined` — caller should fall through to the built-in formatter. ___ ### defaultStringifyDateTime ▸ **defaultStringifyDateTime**(`dateTime`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:224](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L224)* Default `stringifyDateTime` callback — formats a date/time value against an Excel-style format string (e.g. `YYYY-MM-DD HH:mm:ss`). Returns `undefined` for format strings that are not date/time formats so the dispatcher in `format()` can fall through to `parseForNumberFormat` (or to a user-supplied `stringifyCurrency` callback for currency-tagged formats). **LCID currency-tag guard** — explicitly returns `undefined` for Excel currency tags `[$SYMBOL-LCID]` (non-empty SYMBOL portion). Without the guard, `parseForDateTimeFormat` greedily consumes letters like `D`/`M`/`S`/`Y`/`H` inside the currency code (e.g. `D` in USD, `H` in CHF, `M`+`D` in AMD), mangling the output of an `[$USD-409] #,##0.00` format into `[$US9-409] #,##0.00` because `D` is read as a day token. The pre-HF-24 behaviour was to mis-format; the guarded return is the deliberate correction, not a regression. Bit-for-bit compatibility is preserved for every non-currency format (dates, durations, `$#,##0.00`, etc.). The guard pattern (`/\[\$[^\-\]]+-/`) requires ≥1 character between `[$` and `-` so it distinguishes currency tags (`[$USD-409]`, `[$€-2]`) from Excel's locale-only modifier (`[$-409]`, `[$-F800]`), which is valid on date/time formats and must continue to flow through this function. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `dateTime` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | parsed date/time value to render | `formatArg` | string | Excel-style format string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* formatted string, or `undefined` to defer to the next dispatch step ___ ### defaultStringifyDuration ▸ **defaultStringifyDuration**(`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `formatArg`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* *Defined in [src/format/format.ts:132](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L132)* Default `stringifyDuration` callback — formats a duration value against an Excel-style time format string (e.g. `[hh]:mm:ss`). Returns `undefined` for format strings that are not duration formats so the dispatcher in `format()` can fall through to other handlers. **LCID currency-tag guard** — sibling to the same guard in `defaultStringifyDateTime`; explicitly returns `undefined` for Excel currency tags `[$SYMBOL-LCID]` because the SYMBOL portion contains duration-token letters (`H` in CHF/HUF, `m` in AMD/HMD) that `parseForDateTimeFormat` would otherwise interpret as time tokens and mangle the output. See `defaultStringifyDateTime` for the full symbol-vs-locale-modifier rationale and the historical pre-HF-24 behaviour the guard corrects. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | parsed duration value to render | `formatArg` | string | Excel-style format string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* formatted string, or `undefined` to defer to the next dispatch step ___ ### doesContainRelativeReferences ▸ **doesContainRelativeReferences**(`ast`: Ast): *boolean* *Defined in [src/NamedExpressions.ts:299](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L299)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | **Returns:** *boolean* ___ ### doesItLookLikeADateTimeQuickCheck ▸ **doesItLookLikeADateTimeQuickCheck**(`text`: string): *boolean* *Defined in [src/DateTimeDefault.ts:222](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L222)* If this function returns false, the string is not parsable as a date time. Otherwise, it might be. This is a quick check that is used to avoid running the more expensive parsing operations. **Parameters:** Name | Type | ------ | ------ | `text` | string | **Returns:** *boolean* ___ ### empty ▸ **empty**‹**T**›(): *IterableIterator‹T›* *Defined in [src/generatorUtils.ts:8](https://github.com/handsontable/hyperformula/blob/b8542ec/src/generatorUtils.ts#L8)* **Type parameters:** ▪ **T** **Returns:** *IterableIterator‹T›* ___ ### equalSimpleCellAddress ▸ **equalSimpleCellAddress**(`left`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `right`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/Cell.ts:226](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L226)* **Parameters:** Name | Type | ------ | ------ | `left` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `right` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### extractTime ▸ **extractTime**(`v`: any): *number* *Defined in [src/helpers/licenseKeyHelper.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyHelper.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `v` | any | **Returns:** *number* ___ ### filterDependenciesOutOfScope ▸ **filterDependenciesOutOfScope**(`deps`: [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]): *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* *Defined in [src/absolutizeDependencies.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/absolutizeDependencies.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `deps` | [CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[] | **Returns:** *[CellDependency](https://hyperformula.handsontable.com/docs/api/globals.md#celldependency)[]* ___ ### findBoundaries ▸ **findBoundaries**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)): *[SheetBoundaries](https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries.md)* *Defined in [src/Sheet.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L49)* Returns actual width, height and fill ratio of a sheet **Parameters:** Name | Type | Description | ------ | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | two-dimmensional array sheet representation | **Returns:** *[SheetBoundaries](https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries.md)* ___ ### findInOrderedArray ▸ **findInOrderedArray**(`key`: number, `values`: number[], `handlingMisses`: "lowerBound" | "upperBound"): *number* *Defined in [src/Lookup/ColumnIndex.ts:339](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L339)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `key` | number | - | `values` | number[] | - | `handlingMisses` | "lowerBound" | "upperBound" | "upperBound" | **Returns:** *number* ___ ### first ▸ **first**‹**T**›(`iterable`: IterableIterator‹T›): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹T›* *Defined in [src/generatorUtils.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/generatorUtils.ts#L22)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `iterable` | IterableIterator‹T› | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹T›* ___ ### format ▸ **format**(`value`: number, `formatArg`: string, `config`: [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md), `dateHelper`: [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md)): *RawScalarValue* *Defined in [src/format/format.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L28)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `formatArg` | string | `config` | [Config](https://hyperformula.handsontable.com/docs/api/classes/config.md) | `dateHelper` | [DateTimeHelper](https://hyperformula.handsontable.com/docs/api/classes/datetimehelper.md) | **Returns:** *RawScalarValue* ___ ### formatDate ▸ **formatDate**(`date`: Date): *string* *Defined in [src/helpers/licenseKeyValidator.ts:91](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L91)* Formats a Date instance to hard-coded format MMMM DD, YYYY. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `date` | Date | The date to format. | **Returns:** *string* ___ ### formatToken ▸ **formatToken**(`type`: [TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md), `value`: string): *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)* *Defined in [src/format/parser.ts:21](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L21)* **Parameters:** Name | Type | ------ | ------ | `type` | [TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md) | `value` | string | **Returns:** *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)* ___ ### getCellType ▸ **getCellType**(`vertex`: [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹CellVertex›, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* *Defined in [src/Cell.ts:61](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L61)* **Parameters:** Name | Type | ------ | ------ | `vertex` | [Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹CellVertex› | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *[CellType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-celltype)* ___ ### getCellValueDetailedType ▸ **getCellValueDetailedType**(`cellValue`: InterpreterValue): *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* *Defined in [src/Cell.ts:133](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L133)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *[CellValueDetailedType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluedetailedtype)* ___ ### getCellValueFormat ▸ **getCellValueFormat**(`cellValue`: InterpreterValue): *string | undefined* *Defined in [src/Cell.ts:141](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L141)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *string | undefined* ___ ### getCellValueType ▸ **getCellValueType**(`cellValue`: InterpreterValue): *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* *Defined in [src/Cell.ts:113](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L113)* **Parameters:** Name | Type | ------ | ------ | `cellValue` | InterpreterValue | **Returns:** *[CellValueType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-cellvaluetype)* ___ ### getDefaultConfig ▸ **getDefaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:354](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L354)* **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### getFullConfigFromPartial ▸ **getFullConfigFromPartial**(`partialConfig`: Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)›): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/Config.ts:340](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Config.ts#L340)* **Parameters:** Name | Type | ------ | ------ | `partialConfig` | Partial‹[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)› | **Returns:** *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* ___ ### instanceOfSimpleDate ▸ **instanceOfSimpleDate**(`obj`: any): *obj is SimpleDate* *Defined in [src/DateTimeHelper.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `obj` | any | **Returns:** *obj is SimpleDate* ___ ### instanceOfSimpleTime ▸ **instanceOfSimpleTime**(`obj`: any): *obj is SimpleTime* *Defined in [src/DateTimeHelper.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `obj` | any | **Returns:** *obj is SimpleTime* ___ ### invalidSimpleColumnAddress ▸ **invalidSimpleColumnAddress**(`address`: [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)): *boolean* *Defined in [src/Cell.ts:190](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L190)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md) | **Returns:** *boolean* ___ ### invalidSimpleRowAddress ▸ **invalidSimpleRowAddress**(`address`: [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)): *boolean* *Defined in [src/Cell.ts:181](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L181)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md) | **Returns:** *boolean* ___ ### isBoolean ▸ **isBoolean**(`text`: string): *boolean* *Defined in [src/CellContentParser.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `text` | string | **Returns:** *boolean* ___ ### isColOrRowInvalid ▸ **isColOrRowInvalid**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *boolean* *Defined in [src/Cell.ts:203](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L203)* Checks if the column or row id is negative. **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *boolean* ___ ### isError ▸ **isError**(`text`: string, `errorMapping`: Record‹string, [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)›): *boolean* *Defined in [src/CellContentParser.ts:86](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L86)* **Parameters:** Name | Type | ------ | ------ | `text` | string | `errorMapping` | Record‹string, [ErrorType](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#static-errortype)› | **Returns:** *boolean* ___ ### isEscapeToken ▸ **isEscapeToken**(`token`: RegExpExecArray): *boolean* *Defined in [src/format/parser.ts:131](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L131)* **Parameters:** Name | Type | ------ | ------ | `token` | RegExpExecArray | **Returns:** *boolean* ___ ### isFormula ▸ **isFormula**(`text`: string): *boolean* *Defined in [src/CellContentParser.ts:77](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CellContentParser.ts#L77)* Checks whether string looks like formula or not. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `text` | string | formula | **Returns:** *boolean* ___ ### isNonnegativeInteger ▸ **isNonnegativeInteger**(`x`: number): *boolean* *Defined in [src/CrudOperations.ts:657](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L657)* **Parameters:** Name | Type | ------ | ------ | `x` | number | **Returns:** *boolean* ___ ### isPositiveInteger ▸ **isPositiveInteger**(`x`: number): *boolean* *Defined in [src/CrudOperations.ts:653](https://github.com/handsontable/hyperformula/blob/b8542ec/src/CrudOperations.ts#L653)* **Parameters:** Name | Type | ------ | ------ | `x` | number | **Returns:** *boolean* ___ ### isRowOrColumnRange ▸ **isRowOrColumnRange**(`leftCorner`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `width`: number, `height`: number): *boolean* *Defined in [src/Operations.ts:1100](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L1100)* **Parameters:** Name | Type | ------ | ------ | `leftCorner` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `width` | number | `height` | number | **Returns:** *boolean* ___ ### isSimpleCellAddress ▸ **isSimpleCellAddress**(`obj`: unknown): *obj is SimpleCellAddress* *Defined in [src/Cell.ts:214](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L214)* Checks if the object is a simple cell address. **Parameters:** Name | Type | ------ | ------ | `obj` | unknown | **Returns:** *obj is SimpleCellAddress* ___ ### isSimpleCellRange ▸ **isSimpleCellRange**(`val`: unknown): *val is SimpleCellRange* *Defined in [src/AbsoluteCellRange.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L34)* Type guard that checks if an object is a valid SimpleCellRange. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `val` | unknown | Value to check | **Returns:** *val is SimpleCellRange* True if and only if the object is a valid SimpleCellRange ___ ### matchDateFormat ▸ **matchDateFormat**(`str`: string): *RegExpExecArray[]* *Defined in [src/format/parser.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *RegExpExecArray[]* ___ ### matchNumberFormat ▸ **matchNumberFormat**(`str`: string): *RegExpExecArray[]* *Defined in [src/format/parser.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L55)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *RegExpExecArray[]* ___ ### memoize ▸ **memoize**‹**T**›(`fn`: function): *(Anonymous function)* *Defined in [src/DateTimeDefault.ts:229](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L229)* Function memoization for improved performance. **Type parameters:** ▪ **T** **Parameters:** ▪ **fn**: *function* ▸ (`arg`: string): *T* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *(Anonymous function)* ___ ### movedSimpleCellAddress ▸ **movedSimpleCellAddress**(`address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `toSheet`: number, `toRight`: number, `toBottom`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Cell.ts:205](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L205)* **Parameters:** Name | Type | ------ | ------ | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `toSheet` | number | `toRight` | number | `toBottom` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### normalizeAddedIndexes ▸ **normalizeAddedIndexes**(`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:1068](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L1068)* **Parameters:** Name | Type | ------ | ------ | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### normalizeRemovedIndexes ▸ **normalizeRemovedIndexes**(`indexes`: [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]): *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* *Defined in [src/Operations.ts:1037](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L1037)* **Parameters:** Name | Type | ------ | ------ | `indexes` | [ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[] | **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* ___ ### numberFormat ▸ **numberFormat**(`tokens`: [FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[], `value`: number): *RawScalarValue* *Defined in [src/format/format.ts:78](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `tokens` | [FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[] | `value` | number | **Returns:** *RawScalarValue* ___ ### numberToSimpleTime ▸ **numberToSimpleTime**(`arg`: number): *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* *Defined in [src/DateTimeHelper.ts:304](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L304)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *[SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)* ___ ### objectDestroy ▸ **objectDestroy**(`object`: any): *void* *Defined in [src/Destroy.ts:6](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Destroy.ts#L6)* **`license`** Copyright (c) 2025 Handsoncode. All rights reserved. **Parameters:** Name | Type | ------ | ------ | `object` | any | **Returns:** *void* ___ ### offsetMonth ▸ **offsetMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md), `offset`: number): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:286](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L286)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | `offset` | number | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### padLeft ▸ **padLeft**(`number`: number | string, `size`: number): *string* *Defined in [src/format/format.ts:58](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `number` | number | string | `size` | number | **Returns:** *string* ___ ### padRight ▸ **padRight**(`number`: number | string, `size`: number): *string* *Defined in [src/format/format.ts:66](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/format.ts#L66)* **Parameters:** Name | Type | ------ | ------ | `number` | number | string | `size` | number | **Returns:** *string* ___ ### parse ▸ **parse**(`str`: string): *[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)* *Defined in [src/format/parser.ts:121](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L121)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)* ___ ### parseDateFormat ▸ **parseDateFormat**(`dateFormat`: string): *object* *Defined in [src/DateTimeDefault.ts:206](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L206)* Parses a date format string into a format object. **Parameters:** Name | Type | ------ | ------ | `dateFormat` | string | **Returns:** *object* * **dayItem**: *number* * **itemsCount**: *number* * **longYearItem**: *number* * **monthItem**: *number* * **shortYearItem**: *number* ___ ### parseForDateTimeFormat ▸ **parseForDateTimeFormat**(`str`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* *Defined in [src/format/parser.ts:96](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L96)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* ___ ### parseForNumberFormat ▸ **parseForNumberFormat**(`str`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* *Defined in [src/format/parser.ts:109](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L109)* **Parameters:** Name | Type | ------ | ------ | `str` | string | **Returns:** *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[FormatExpression](https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression.md)›* ___ ### parseTimeFormat ▸ **parseTimeFormat**(`timeFormat`: string): *object* *Defined in [src/DateTimeDefault.ts:186](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeDefault.ts#L186)* Parses a time format string into a format object. **Parameters:** Name | Type | ------ | ------ | `timeFormat` | string | **Returns:** *object* * **hourItem**: *number* * **itemsCount**: *number* * **minuteItem**: *number* * **secondItem**: *number* ___ ### postMortem ▸ **postMortem**(`method`: any): *(Anonymous function)* *Defined in [src/Destroy.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Destroy.ts#L16)* **Parameters:** Name | Type | ------ | ------ | `method` | any | **Returns:** *(Anonymous function)* ___ ### replacer ▸ **replacer**(`key`: string, `val`: any): *any* *Defined in [src/errors.ts:134](https://github.com/handsontable/hyperformula/blob/b8542ec/src/errors.ts#L134)* **Parameters:** Name | Type | ------ | ------ | `key` | string | `val` | any | **Returns:** *any* ___ ### roundToEpsilon ▸ **roundToEpsilon**(`arg`: number, `epsilon`: number): *number* *Defined in [src/DateTimeHelper.ts:299](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L299)* **Parameters:** Name | Type | Default | ------ | ------ | ------ | `arg` | number | - | `epsilon` | number | 1 | **Returns:** *number* ___ ### roundToNearestSecond ▸ **roundToNearestSecond**(`arg`: number): *number* *Defined in [src/DateTimeHelper.ts:295](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L295)* **Parameters:** Name | Type | ------ | ------ | `arg` | number | **Returns:** *number* ___ ### simpleCellAddress ▸ **simpleCellAddress**(`sheet`: number, `col`: number, `row`: number): *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/Cell.ts:198](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L198)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | `row` | number | **Returns:** *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### simpleCellRange ▸ **simpleCellRange**(`start`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), `end`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *object* *Defined in [src/AbsoluteCellRange.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `start` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `end` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *object* * **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* * **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* ___ ### simpleColumnAddress ▸ **simpleColumnAddress**(`sheet`: number, `col`: number): *[SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)* *Defined in [src/Cell.ts:188](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L188)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `col` | number | **Returns:** *[SimpleColumnAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress.md)* ___ ### simpleRowAddress ▸ **simpleRowAddress**(`sheet`: number, `row`: number): *[SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)* *Defined in [src/Cell.ts:179](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L179)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `row` | number | **Returns:** *[SimpleRowAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress.md)* ___ ### split ▸ **split**‹**T**›(`iterable`: IterableIterator‹T›): *object* *Defined in [src/generatorUtils.ts:11](https://github.com/handsontable/hyperformula/blob/b8542ec/src/generatorUtils.ts#L11)* **Type parameters:** ▪ **T** **Parameters:** Name | Type | ------ | ------ | `iterable` | IterableIterator‹T› | **Returns:** *object* * **rest**: *IterableIterator‹T›* * **value**? : *T* ___ ### timeToNumber ▸ **timeToNumber**(`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md)): *number* *Defined in [src/DateTimeHelper.ts:315](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L315)* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | **Returns:** *number* ___ ### toBasisEU ▸ **toBasisEU**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:319](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L319)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### truncateDayInMonth ▸ **truncateDayInMonth**(`date`: [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)): *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/DateTimeHelper.ts:291](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L291)* **Parameters:** Name | Type | ------ | ------ | `date` | [SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md) | **Returns:** *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* ___ ### validateArgToType ▸ **validateArgToType**(`inputValue`: any, `expectedType`: string, `paramName`: string): *void* *Defined in [src/ArgumentSanitization.ts:81](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L81)* **Parameters:** Name | Type | ------ | ------ | `inputValue` | any | `expectedType` | string | `paramName` | string | **Returns:** *void* ___ ### validateAsSheet ▸ **validateAsSheet**(`sheet`: [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet)): *void* *Defined in [src/Sheet.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L33)* **Parameters:** Name | Type | ------ | ------ | `sheet` | [Sheet](https://hyperformula.handsontable.com/docs/api/globals.md#sheet) | **Returns:** *void* ___ ### validateNumberToBeAtLeast ▸ **validateNumberToBeAtLeast**(`value`: number, `paramName`: string, `minimum`: number): *void* *Defined in [src/ArgumentSanitization.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L34)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `paramName` | string | `minimum` | number | **Returns:** *void* ___ ### validateNumberToBeAtMost ▸ **validateNumberToBeAtMost**(`value`: number, `paramName`: string, `maximum`: number): *void* *Defined in [src/ArgumentSanitization.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArgumentSanitization.ts#L40)* **Parameters:** Name | Type | ------ | ------ | `value` | number | `paramName` | string | `maximum` | number | **Returns:** *void* ## Object literals ### CellValueDetailedType ### ▪ **CellValueDetailedType**: *object* *Defined in [src/Cell.ts:95](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L95)* ___ ### CellValueType ### ▪ **CellValueType**: *object* *Defined in [src/Cell.ts:92](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L92)* ___ ### consoleMessages ### ▪ **consoleMessages**: *object* *Defined in [src/helpers/licenseKeyValidator.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L36)* List of all not valid messages which may occur. ### expired ▸ **expired**(`__namedParameters`: object): *string* *Defined in [src/helpers/licenseKeyValidator.ts:38](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L38)* **Parameters:** ▪ **__namedParameters**: *object* Name | Type | ------ | ------ | `keyValidityDate` | string | **Returns:** *string* ### invalid ▸ **invalid**(): *string* *Defined in [src/helpers/licenseKeyValidator.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L37)* **Returns:** *string* ### missing ▸ **missing**(): *string* *Defined in [src/helpers/licenseKeyValidator.ts:40](https://github.com/handsontable/hyperformula/blob/b8542ec/src/helpers/licenseKeyValidator.ts#L40)* **Returns:** *string* ___ ### maxDate ### ▪ **maxDate**: *object* *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L51)* ### day • **day**: *number* = 31 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L51)* ### month • **month**: *number* = 12 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L51)* ### year • **year**: *number* = 9999 *Defined in [src/DateTimeHelper.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L51)* --- ## CellArray URL: https://hyperformula.handsontable.com/docs/api/interfaces/cellarray # CellArray ## Properties ### size • **size**: *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)* *Defined in [src/ArrayValue.ts:12](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L12)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *InternalScalarValue* *Defined in [src/ArrayValue.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L18)* **Parameters:** Name | Type | ------ | ------ | `col` | number | `row` | number | **Returns:** *InternalScalarValue* ___ ### height ▸ **height**(): *number* *Defined in [src/ArrayValue.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L16)* **Returns:** *number* ___ ### simpleRangeValue ▸ **simpleRangeValue**(): *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* *Defined in [src/ArrayValue.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L20)* **Returns:** *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | [CellError](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md)* ___ ### width ▸ **width**(): *number* *Defined in [src/ArrayValue.ts:14](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ArrayValue.ts#L14)* **Returns:** *number* --- ## ClipboardCellValue URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellvalue # ClipboardCellValue ## Properties ### parsedValue • **parsedValue**: *ValueCellVertexValue* *Defined in [src/ClipboardOperations.ts:32](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L32)* ___ ### rawValue • **rawValue**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/ClipboardOperations.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L33)* ___ ### type • **type**: *[VALUE](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#value)* *Defined in [src/ClipboardOperations.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L31)* --- ## ClipboardCellParsingError URL: https://hyperformula.handsontable.com/docs/api/interfaces/clipboardcellparsingerror # ClipboardCellParsingError ## Properties ### errors • **errors**: *ParsingError[]* *Defined in [src/ClipboardOperations.ts:48](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L48)* ___ ### rawInput • **rawInput**: *string* *Defined in [src/ClipboardOperations.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L47)* ___ ### type • **type**: *[PARSING_ERROR](https://hyperformula.handsontable.com/docs/api/enums/clipboardcelltype.md#parsing_error)* *Defined in [src/ClipboardOperations.ts:46](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ClipboardOperations.ts#L46)* --- ## ColumnSearchStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/columnsearchstrategy # ColumnSearchStrategy ## Methods ### add ▸ **add**(`value`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:37](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L37)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### addColumns ▸ **addColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:45](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L45)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L33)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)* **Returns:** *number* ___ ### applyChanges ▸ **applyChanges**(`contentChanges`: [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[]): *void* *Defined in [src/Lookup/SearchStrategy.ts:43](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L43)* **Parameters:** Name | Type | ------ | ------ | `contentChanges` | [CellValueChange](https://hyperformula.handsontable.com/docs/api/interfaces/cellvaluechange.md)[] | **Returns:** *void* ___ ### change ▸ **change**(`oldValue`: RawInterpreterValue | undefined, `newValue`: RawInterpreterValue, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:41](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L41)* **Parameters:** Name | Type | ------ | ------ | `oldValue` | RawInterpreterValue | undefined | `newValue` | RawInterpreterValue | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `range` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `options` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/SearchStrategy.ts:60](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L60)* Forces all lazily-tracked ValueIndex entries to apply any pending transformations, bringing every entry's version up to the current LazilyTransformingAstService version. Must be called before compacting LazilyTransformingAstService. **Returns:** *void* ___ ### moveValues ▸ **moveValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›, `toRight`: number, `toBottom`: number, `toSheet`: number): *void* *Defined in [src/Lookup/SearchStrategy.ts:51](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L51)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | `toRight` | number | `toBottom` | number | `toSheet` | number | **Returns:** *void* ___ ### remove ▸ **remove**(`value`: RawInterpreterValue | undefined, `address`: [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:39](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `value` | RawInterpreterValue | undefined | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | **Returns:** *void* ___ ### removeColumns ▸ **removeColumns**(`columnsSpan`: [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md)): *void* *Defined in [src/Lookup/SearchStrategy.ts:47](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L47)* **Parameters:** Name | Type | ------ | ------ | `columnsSpan` | [ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.md) | **Returns:** *void* ___ ### removeSheet ▸ **removeSheet**(`sheetId`: number): *void* *Defined in [src/Lookup/SearchStrategy.ts:49](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L49)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | **Returns:** *void* ___ ### removeValues ▸ **removeValues**(`range`: IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]›): *void* *Defined in [src/Lookup/SearchStrategy.ts:53](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## ConfigParams URL: https://hyperformula.handsontable.com/docs/api/interfaces/configparams # ConfigParams ## License ### licenseKey • **licenseKey**: *string* *Defined in [src/ConfigParams.ts:182](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L182)* Sets your HyperFormula license key. To use HyperFormula on the GPLv3 license terms, set this option to `gpl-v3`. To use HyperFormula with your proprietary license, set this option to your valid license key string. For more information, go [here](https://hyperformula.handsontable.com/docs/guide/license-key.md). **`default`** undefined ___ ## Engine ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *ChooseAddressMapping* *Defined in [src/ConfigParams.ts:55](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L55)* Sets the address mapping policy to be used. Built-in implementations: - `DenseSparseChooseBasedOnThreshold`: sets the address mapping policy separately for each sheet, based on fill ratio. - `AlwaysDense`: uses `DenseStrategy` for all sheets. - `AlwaysSparse`: uses `SparseStrategy` for all sheets. For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** AlwaysDense ___ ### context • **context**: *unknown* *Defined in [src/ConfigParams.ts:63](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L63)* A generic parameter that can be used to pass data to custom functions. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** undefined ___ ### evaluateNullToZero • **evaluateNullToZero**: *boolean* *Defined in [src/ConfigParams.ts:125](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L125)* When set to `true`, formulas evaluating to `null` evaluate to `0` instead. **`default`** false ___ ### maxColumns • **maxColumns**: *number* *Defined in [src/ConfigParams.ts:228](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L228)* Sets the maximum number of columns. **`default`** 18.278 (Columns A, B, ..., ZZZ) ___ ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* *Defined in [src/ConfigParams.ts:435](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L435)* Controls memory usage for long-running instances by limiting the number of pending lazy transformations before cleanup occurs. Structural operations (adding/removing rows/columns, moving cells) create transformations that are applied lazily to formulas. This setting determines how many can accumulate before they are flushed and memory is reclaimed. Lower values reduce peak memory usage but may slightly increase CPU overhead. Higher values reduce overhead but allow more memory accumulation. **`default`** 50 ___ ### maxRows • **maxRows**: *number* *Defined in [src/ConfigParams.ts:222](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L222)* Sets the maximum number of rows. **`default`** 40.000 ___ ### useArrayArithmetic • **useArrayArithmetic**: *boolean* *Defined in [src/ConfigParams.ts:392](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L392)* When set to `true`, array arithmetic is enabled globally. When set to `false`, array arithmetic is enabled only inside array functions (`ARRAYFORMULA`, `FILTER`, and `ARRAY_CONSTRAIN`). For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** false ___ ### useColumnIndex • **useColumnIndex**: *boolean* *Defined in [src/ConfigParams.ts:404](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L404)* When set to `true`, switches column search strategy from binary search to column index. Using column index improves efficiency of the `VLOOKUP` and `MATCH` functions, but increases memory usage. When searching with wildcards or regular expressions, column search strategy falls back to binary search (even with `useColumnIndex` set to `true`). For more information, see the [Performance guide](https://hyperformula.handsontable.com/docs/guide/performance.md). **`default`** false ___ ### useStats • **useStats**: *boolean* *Defined in [src/ConfigParams.ts:412](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L412)* When set to `true`, enables gathering engine statistics and timings. Useful for testing and benchmarking. **`default`** false ___ ## Formula Syntax ### arrayColumnSeparator • **arrayColumnSeparator**: *"," | ";"* *Defined in [src/ConfigParams.ts:208](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L208)* Sets a column separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ',' ___ ### arrayRowSeparator • **arrayRowSeparator**: *";" | "|"* *Defined in [src/ConfigParams.ts:216](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L216)* Sets a row separator symbol for array notation. For more information, see the [Arrays guide](https://hyperformula.handsontable.com/docs/guide/arrays.md). **`default`** ';' ___ ### functionArgSeparator • **functionArgSeparator**: *string* *Defined in [src/ConfigParams.ts:105](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L105)* Sets a separator character that separates procedure arguments in formulas. Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ',' ___ ### functionPlugins • **functionPlugins**: *any[]* *Defined in [src/ConfigParams.ts:134](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L134)* Lists additional function plugins to be used by the formula interpreter. For more information, see the [Custom functions guide](https://hyperformula.handsontable.com/docs/guide/custom-functions.md). **`default`** [] ___ ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard" | "any"* *Defined in [src/ConfigParams.ts:160](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L160)* Controls the set of whitespace characters that are allowed inside a formula. When set to `'standard'`, allows only SPACE (U+0020), CHARACTER TABULATION (U+0009), LINE FEED (U+000A), and CARRIAGE RETURN (U+000D) (compliant with OpenFormula Standard 1.3) When set to `'any'`, allows all whitespace characters that would be captured by the `\s` character class of the JavaScript regular expressions. **`default`** 'standard' ___ ### language • **language**: *string* *Defined in [src/ConfigParams.ts:150](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L150)* Sets a translation package for function and error names. For more information, see the [Localizing functions guide](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). **`default`** 'enGB' ___ ## Undo and Redo ### undoLimit • **undoLimit**: *number* *Defined in [src/ConfigParams.ts:420](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L420)* Sets the number of elements kept in the undo history. For more information, see the [Undo-Redo guide](https://hyperformula.handsontable.com/docs/guide/undo-redo.md). **`default`** 20 ___ ## Date and Time ### dateFormats • **dateFormats**: *string[]* *Defined in [src/ConfigParams.ts:95](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L95)* Sets the date formats accepted by the date-parsing function. A format must be specified as a string consisting of tokens and separators. Supported tokens: - `DD` (day of month) - `MM` (month as a number) - `YYYY` (year as a 4-digit number) - `YY` (year as a 2-digit number) Supported separators: - `/` (slash) - `-` (dash) - `.` (dot) - ` ` (empty space) Regardless of the separator specified in the format string, all of the above are accepted by the date-parsing function. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** ['DD/MM/YYYY', 'DD/MM/YY'] ___ ### leapYear1900 • **leapYear1900**: *boolean* *Defined in [src/ConfigParams.ts:170](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L170)* Sets year 1900 as a leap year. For compatibility with Lotus 1-2-3 and Microsoft Excel, set this option to `true`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md) and [nullDate](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). **`default`** false ___ ### nullDate • **nullDate**: *[SimpleDate](https://hyperformula.handsontable.com/docs/api/interfaces/simpledate.md)* *Defined in [src/ConfigParams.ts:238](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L238)* Internally, each date is represented as a number of days that passed since `nullDate`. This option sets a specific date from which that number of days is counted. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** {year: 1899, month: 12, day: 30} ___ ### nullYear • **nullYear**: *number* *Defined in [src/ConfigParams.ts:252](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L252)* Sets the interpretation of two-digit year values. Two-digit year values (`xx`) can either become `19xx` or `20xx`. If `xx` is less or equal to `nullYear`, two-digit year values become `20xx`. If `xx` is more than `nullYear`, two-digit year values become `19xx`. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** 30 ___ ### parseDateTime • **parseDateTime**: *function* *Defined in [src/ConfigParams.ts:262](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L262)* Sets a function that parses strings representing date-time into actual date-time values. The function should return a [DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultParseToDateTime #### Type declaration: ▸ (`dateTimeString`: string, `dateFormat?`: undefined | string, `timeFormat?`: undefined | string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹[DateTime](https://hyperformula.handsontable.com/docs/api/globals.md#datetime)›* **Parameters:** Name | Type | ------ | ------ | `dateTimeString` | string | `dateFormat?` | undefined | string | `timeFormat?` | undefined | string | ___ ### stringifyDateTime • **stringifyDateTime**: *function* *Defined in [src/ConfigParams.ts:302](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L302)* Sets a function that converts date-time values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDateTime #### Type declaration: ▸ (`dateTime`: [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime), `dateTimeFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `dateTime` | [SimpleDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#simpledatetime) | `dateTimeFormat` | string | ___ ### stringifyDuration • **stringifyDuration**: *function* *Defined in [src/ConfigParams.ts:312](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L312)* Sets a function that converts time duration values into strings. The function should return a string or undefined. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`default`** defaultStringifyDuration #### Type declaration: ▸ (`time`: [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md), `timeFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `time` | [SimpleTime](https://hyperformula.handsontable.com/docs/api/interfaces/simpletime.md) | `timeFormat` | string | ___ ### timeFormats • **timeFormats**: *string[]* *Defined in [src/ConfigParams.ts:382](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L382)* Sets the time formats accepted by the time-parsing function. A format must be specified as a string consisting of at least two tokens separated by `:` (a colon). Supported tokens: - `hh` (hours) - `mm` (minutes) - `ss`, `ss.s`, `ss.ss`, `ss.sss`, `ss.ssss`, etc. (seconds) The number of decimal places in the seconds token does not matter. All versions of the seconds token are equivalent in the context of parsing time values. Regardless of the time format specified, the hours-minutes-seconds value may be followed by the AM/PM designator. For more information, see the [Date and time handling guide](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md). **`example`** E.g., for `timeFormats = ['hh:mm:ss.sss']`, valid time strings include: - `1:33:33` - `1:33:33.3` - `1:33:33.33` - `1:33:33.333` - `01:33:33` - `1:33:33 AM` - `1:33:33 PM` - `1:33:33 am` - `1:33:33 pm` - `1:33:33AM` - `1:33:33PM` **`default`** ['hh:mm', 'hh:mm:ss.sss'] ___ ## Number ### currencySymbol • **currencySymbol**: *string[]* *Defined in [src/ConfigParams.ts:71](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L71)* Sets symbols that denote currency numbers. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** ['$'] ___ ### decimalSeparator • **decimalSeparator**: *"." | ","* *Defined in [src/ConfigParams.ts:119](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L119)* Sets a decimal separator used for parsing numerical literals. Can be one of the following: - `.` (period) - `,` (comma) Must be different from [thousandSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '.' ___ ### precisionEpsilon • **precisionEpsilon**: *number* *Defined in [src/ConfigParams.ts:277](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L277)* Sets how far two numerical values need to be from each other to be treated as non-equal. `a` and `b` are equal if all three of the following conditions are met: - Both `a` and `b` are of the same sign - `abs(a)` <= `(1+precisionEpsilon) * abs(b)` - `abs(b)` <= `(1+precisionEpsilon) * abs(a)` Additionally, this option controls the snap-to-zero behavior for additions and subtractions: - For `c=a+b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` - For `c=a-b`, if `abs(c)` <= `precisionEpsilon * abs(a)`, then `c` is set to `0` **`default`** 1e-13 ___ ### precisionRounding • **precisionRounding**: *number* *Defined in [src/ConfigParams.ts:292](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L292)* Sets the precision level of calculations' output. Internally, all arithmetic operations are performed using JavaScript's built-in numbers. But when HyperFormula exports a cell's value, it rounds the output to the `precisionRounding` number of significant digits. Setting `precisionRounding` too low can cause large numbers' imprecision (for example, with `precisionRounding` set to `4`, 100005 becomes 100010). Setting precisionRounding too high will expose the floating-point calculation errors. For example, with `precisionRounding` set to `15`, `0.1 + 0.2` results in `0.3000000000000001`. **`default`** 10 ___ ### smartRounding • **smartRounding**: *boolean* *Defined in [src/ConfigParams.ts:336](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L336)* When set to `false`, no rounding happens, and numbers are equal if and only if they are of truly identical value. For more information, see [precisionEpsilon](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#precisionepsilon). **`default`** true ___ ### stringifyCurrency • **stringifyCurrency**: *function* *Defined in [src/ConfigParams.ts:328](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L328)* Sets a function that converts numeric values into currency-formatted strings. The function receives the raw value and the format string passed to `TEXT` and should return a string or `undefined`. The formatter calls this for every format string that reaches it, not only currency-shaped ones — return `undefined` for any format your callback does not handle and HyperFormula will fall through to the built-in number formatter. For more information, see the [Currency handling guide](https://hyperformula.handsontable.com/docs/guide/currency-handling.md). **`default`** defaultStringifyCurrency #### Type declaration: ▸ (`value`: number, `currencyFormat`: string): *[Maybe](https://hyperformula.handsontable.com/docs/api/globals.md#maybe)‹string›* **Parameters:** Name | Type | ------ | ------ | `value` | number | `currencyFormat` | string | ___ ### thousandSeparator • **thousandSeparator**: *"" | "," | " " | "."* *Defined in [src/ConfigParams.ts:351](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L351)* Sets the thousands' separator symbol for parsing numerical literals. Can be one of the following: - empty - `,` (comma) - ` ` (empty space) Must be different from [decimalSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [functionArgSeparator](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** '' ___ ## String ### accentSensitive • **accentSensitive**: *boolean* *Defined in [src/ConfigParams.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L20)* When set to `true`, makes string comparison accent-sensitive. Applies only to comparison operators. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### caseFirst • **caseFirst**: *"upper" | "lower" | "false"* *Defined in [src/ConfigParams.ts:42](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L42)* When set to `upper`, upper case sorts first. When set to `lower`, lower case sorts first. When set to `false`, uses the locale's default. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** 'lower' ___ ### caseSensitive • **caseSensitive**: *boolean* *Defined in [src/ConfigParams.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L30)* When set to `true`, makes string comparison case-sensitive. Applies to comparison operators only. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### ignorePunctuation • **ignorePunctuation**: *boolean* *Defined in [src/ConfigParams.ts:142](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L142)* When set to `true`, string comparison ignores punctuation. For more information, see the [Types of operators guide](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings). **`default`** false ___ ### localeLang • **localeLang**: *string* *Defined in [src/ConfigParams.ts:192](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L192)* Sets the locale for language-sensitive string comparison. Accepts **IETF BCP 47** language tags. For more information, see the [Internationalization features guide](https://hyperformula.handsontable.com/docs/guide/i18n-features.md). **`default`** 'en' ___ ### matchWholeCell • **matchWholeCell**: *boolean* *Defined in [src/ConfigParams.ts:200](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L200)* When set to `true`, function criteria require whole cells to match the pattern. When set to `false`, function criteria require just a sub-word to match the pattern. **`default`** true ___ ### useRegularExpressions • **useRegularExpressions**: *boolean* *Defined in [src/ConfigParams.ts:441](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L441)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) are allowed to use regular expressions. **`default`** false ___ ### useWildcards • **useWildcards**: *boolean* *Defined in [src/ConfigParams.ts:447](https://github.com/handsontable/hyperformula/blob/b8542ec/src/ConfigParams.ts#L447)* When set to `true`, criteria in functions (SUMIF, COUNTIF, ...) can use the `*` and `?` wildcards. **`default`** true --- ## ColumnsRemoval URL: https://hyperformula.handsontable.com/docs/api/interfaces/columnsremoval # ColumnsRemoval ## Properties ### columnCount • **columnCount**: *number* *Defined in [src/Operations.ts:146](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L146)* ___ ### columnFrom • **columnFrom**: *number* *Defined in [src/Operations.ts:145](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L145)* ___ ### removedCells • **removedCells**: *[ChangedCell](https://hyperformula.handsontable.com/docs/api/interfaces/changedcell.md)[]* *Defined in [src/Operations.ts:148](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L148)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:147](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L147)* --- ## FormatToken URL: https://hyperformula.handsontable.com/docs/api/interfaces/formattoken # FormatToken ## Properties ### type • **type**: *[TokenType](https://hyperformula.handsontable.com/docs/api/enums/tokentype.md)* *Defined in [src/format/parser.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L17)* ___ ### value • **value**: *string* *Defined in [src/format/parser.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L18)* --- ## GraphBuilderStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/graphbuilderstrategy # GraphBuilderStrategy ## Methods ### run ▸ **run**(`sheets`: [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets)): *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* *Defined in [src/GraphBuilder.ts:64](https://github.com/handsontable/hyperformula/blob/b8542ec/src/GraphBuilder.ts#L64)* **Parameters:** Name | Type | ------ | ------ | `sheets` | [Sheets](https://hyperformula.handsontable.com/docs/api/globals.md#sheets) | **Returns:** *[Dependencies](https://hyperformula.handsontable.com/docs/api/globals.md#dependencies)* --- ## Listeners URL: https://hyperformula.handsontable.com/docs/api/interfaces/listeners # Listeners ## Batch ### evaluationResumed • **evaluationResumed**: *function* *Defined in [src/Emitter.ts:316](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L316)* Occurs when evaluation is resumed. **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ] }); // define a function to be called when the event occurs const handler = (changes) => { console.log('baz') } // subscribe to the 'evaluationResumed' event, pass the handler hfInstance.on('evaluationResumed', handler); // first, suspend evaluation hfInstance.suspendEvaluation(); // now, resume evaluation // the console prints 'baz' each time evaluation is resumed hfInstance.resumeEvaluation(); // unsubscribe from the 'evaluationResumed' event hfInstance.off('evaluationResumed', handler); // suspend evaluation again hfInstance.suspendEvaluation(); // resume evaluation again // this time, the console doesn't print anything hfInstance.resumeEvaluation();; ``` #### Type declaration: ▸ (`changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### evaluationSuspended • **evaluationSuspended**: *function* *Defined in [src/Emitter.ts:274](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L274)* Occurs when evaluation is suspended. **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['1'] ], MySheet2: [ ['10'] ] }); // define a function to be called when the event occurs const handler = ( ) => { console.log('baz') } // subscribe to the 'evaluationSuspended' event, pass the handler hfInstance.on('evaluationSuspended', handler); // suspend evaluation // the console prints 'baz' each time evaluation is suspended hfInstance.suspendEvaluation(); // resume evaluation hfInstance.resumeEvaluation(); // unsubscribe from the 'evaluationSuspended' event hfInstance.off('evaluationSuspended', handler); // suspend evaluation again // this time, the console doesn't print anything hfInstance.suspendEvaluation();; ``` #### Type declaration: ▸ (): *any* ___ ## Named Expression ### namedExpressionAdded • **namedExpressionAdded**: *function* *Defined in [src/Emitter.ts:162](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L162)* Occurs when a named expression with specified values and location is added. **`param`** the name of added expression **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // define a function to be called when the event occurs const handler = (namedExpressionName, changes) => { console.log('baz') } // subscribe to the 'namedExpressionAdded' event, pass the handler hfInstance.on('namedExpressionAdded', handler); // add a named expression // the console prints 'baz' each time a named expression is added const changes = hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); // unsubscribe from the 'namedExpressionAdded' event hfInstance.off('namedExpressionAdded', handler); // add another named expression // this time, the console doesn't print anything const changes = hfInstance.addNamedExpression('uglyName', '=Sheet1!$A$1+100', 0); ``` #### Type declaration: ▸ (`namedExpressionName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `namedExpressionName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### namedExpressionRemoved • **namedExpressionRemoved**: *function* *Defined in [src/Emitter.ts:202](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L202)* Occurs when a named expression with specified values is removed and from an indicated location. **`param`** the name of removed expression **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['42'], ]); // define a function to be called when the event occurs const handler = (namedExpressionName, changes) => { console.log('baz') } // subscribe to the 'namedExpressionRemoved' event, pass the handler hfInstance.on('namedExpressionRemoved', handler); // add some named expressions hfInstance.addNamedExpression('prettyName', '=Sheet1!$A$1+100', 0); hfInstance.addNamedExpression('uglyName', '=Sheet1!$A$1+100', 0); // remove a named expression // the console prints 'baz' each time a named expression is removed const changes = hfInstance.removeNamedExpression('prettyName', 0); // unsubscribe from the 'namedExpressionRemoved' event hfInstance.off('namedExpressionRemoved', handler); // remove another named expression // this time, the console doesn't print anything const changes = hfInstance.removeNamedExpression('uglyName', 0); ``` #### Type declaration: ▸ (`namedExpressionName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `namedExpressionName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ## Sheet ### sheetAdded • **sheetAdded**: *function* *Defined in [src/Emitter.ts:52](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L52)* Occurs when a sheet is added anywhere inside the workbook. **`param`** the name of added sheet **`example`** ```js const hfInstance = HyperFormula.buildEmpty(); // define a function to be called when the event occurs const handler = (addedSheetDisplayName) => { console.log('baz') } // subscribe to the 'sheetAdded' event, pass the handler hfInstance.on('sheetAdded', handler); // add a sheet to trigger the 'sheetAdded' event, // the console prints 'baz' each time a sheet is added hfInstance.addSheet('FooBar'); // unsubscribe from the 'sheetAdded' event hfInstance.off('sheetAdded', handler); // add a sheet // this time, the console doesn't print anything hfInstance.addSheet('FooBaz'); ``` #### Type declaration: ▸ (`addedSheetDisplayName`: string): *any* **Parameters:** Name | Type | ------ | ------ | `addedSheetDisplayName` | string | ___ ### sheetRemoved • **sheetRemoved**: *function* *Defined in [src/Emitter.ts:89](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L89)* Occurs when a sheet is removed from anywhere inside the workbook. **`param`** the name of removed sheet **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // define a function to be called when the event occurs const handler = (removedSheetDisplayName, changes) => { console.log('baz') } // subscribe to the 'sheetRemoved' event, pass the handler hfInstance.on('sheetRemoved', handler); // remove a sheet to trigger the 'sheetRemoved' event, // the console prints 'baz' each time a sheet is removed hfInstance.removeSheet(0); // unsubscribe from the 'sheetRemoved' event hfInstance.off('sheetRemoved', handler); // remove a sheet // this time, the console doesn't print anything hfInstance.removeSheet(1); ``` #### Type declaration: ▸ (`removedSheetDisplayName`: string, `changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `removedSheetDisplayName` | string | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | ___ ### sheetRenamed • **sheetRenamed**: *function* *Defined in [src/Emitter.ts:126](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L126)* Occurs when a sheet is renamed anywhere inside the workbook. **`param`** the old name of a sheet before renaming **`param`** the new name of the sheet after renaming **`example`** ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // define a function to be called when the event occurs const handler = (oldName, newName) => { console.log(`Sheet ${oldName} was renamed to ${newName}`) } // subscribe to the 'sheetRenamed' event, pass the handler hfInstance.on('sheetRenamed', handler); // rename a sheet to trigger the 'sheetRenamed' event, // the console prints `Sheet ${oldName} was renamed to ${newName}` each time a sheet is renamed hfInstance.renameSheet(0, 'MySheet0'); // unsubscribe from the 'sheetRenamed' event hfInstance.off('sheetRenamed', handler); // rename a sheet // this time, the console doesn't print anything hfInstance.renameSheet(1, 'MySheet1'); ``` #### Type declaration: ▸ (`oldDisplayName`: string, `newDisplayName`: string): *any* **Parameters:** Name | Type | ------ | ------ | `oldDisplayName` | string | `newDisplayName` | string | ___ ## Values ### valuesUpdated • **valuesUpdated**: *function* *Defined in [src/Emitter.ts:237](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L237)* Occurs when values in a specified location are changed and cause recalculation. **`param`** the values and location of applied changes **`example`** ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2', '=A1'], ]); // define a function to be called when the event occurs const handler = (changes) => { console.log('baz') } // subscribe to the 'valuesUpdated' event, pass the handler hfInstance.on('valuesUpdated', handler); // trigger recalculation, for example, with the 'setCellContents' method // the console prints 'baz' each time a value change triggers recalculation const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=B1']]); // unsubscribe from the 'valuesUpdated' event hfInstance.off('valuesUpdated', handler); // trigger another recalculation // this time, the console doesn't print anything const changes = hfInstance.setCellContents({ col: 3, row: 0, sheet: 0 }, [['=A1']]); ``` #### Type declaration: ▸ (`changes`: [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[]): *any* **Parameters:** Name | Type | ------ | ------ | `changes` | [ExportedChange](https://hyperformula.handsontable.com/docs/api/globals.md#exportedchange)[] | --- ## FormatExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/formatexpression # FormatExpression ## Properties ### tokens • **tokens**: *[FormatToken](https://hyperformula.handsontable.com/docs/api/interfaces/formattoken.md)[]* *Defined in [src/format/parser.ts:36](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L36)* ___ ### type • **type**: *[FormatExpressionType](https://hyperformula.handsontable.com/docs/api/enums/formatexpressiontype.md)* *Defined in [src/format/parser.ts:35](https://github.com/handsontable/hyperformula/blob/b8542ec/src/format/parser.ts#L35)* --- ## NamedExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/namedexpression # NamedExpression ## Properties ### expression • **expression**? : *undefined | string* *Defined in [src/NamedExpressions.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L18)* ___ ### name • **name**: *string* *Defined in [src/NamedExpressions.ts:16](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L16)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/NamedExpressions.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L19)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/NamedExpressions.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/NamedExpressions.ts#L17)* --- ## RowsRemoval URL: https://hyperformula.handsontable.com/docs/api/interfaces/rowsremoval # RowsRemoval ## Properties ### removedCells • **removedCells**: *[ChangedCell](https://hyperformula.handsontable.com/docs/api/interfaces/changedcell.md)[]* *Defined in [src/Operations.ts:141](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L141)* ___ ### rowCount • **rowCount**: *number* *Defined in [src/Operations.ts:139](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L139)* ___ ### rowFrom • **rowFrom**: *number* *Defined in [src/Operations.ts:138](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L138)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:140](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L140)* --- ## MoveCellsResult URL: https://hyperformula.handsontable.com/docs/api/interfaces/movecellsresult # MoveCellsResult ## Properties ### addedGlobalNamedExpressions • **addedGlobalNamedExpressions**: *string[]* *Defined in [src/Operations.ts:154](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L154)* ___ ### overwrittenCellsData • **overwrittenCellsData**: *[[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md), [ClipboardCell](https://hyperformula.handsontable.com/docs/api/globals.md#clipboardcell)][]* *Defined in [src/Operations.ts:153](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L153)* ___ ### version • **version**: *number* *Defined in [src/Operations.ts:152](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Operations.ts#L152)* --- ## SearchOptions URL: https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions # SearchOptions ## Properties ### ifNoMatch • **ifNoMatch**: *"returnLowerBound" | "returnUpperBound" | "returnNotFound"* *Defined in [src/Lookup/SearchStrategy.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L19)* ___ ### ordering • **ordering**: *"asc" | "desc" | "none"* *Defined in [src/Lookup/SearchStrategy.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L18)* ___ ### returnOccurrence • **returnOccurrence**? : *"first" | "last"* *Defined in [src/Lookup/SearchStrategy.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L20)* --- ## SerializedNamedExpression URL: https://hyperformula.handsontable.com/docs/api/interfaces/serializednamedexpression # SerializedNamedExpression ## Properties ### expression • **expression**: *[RawCellContent](https://hyperformula.handsontable.com/docs/api/globals.md#rawcellcontent)* *Defined in [src/Serialization.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L18)* ___ ### name • **name**: *string* *Defined in [src/Serialization.ts:17](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L17)* ___ ### options • **options**? : *[NamedExpressionOptions](https://hyperformula.handsontable.com/docs/api/globals.md#namedexpressionoptions)* *Defined in [src/Serialization.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L20)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/Serialization.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Serialization.ts#L19)* --- ## SheetBoundaries URL: https://hyperformula.handsontable.com/docs/api/interfaces/sheetboundaries # SheetBoundaries Represents size and fill ratio of a sheet ## Properties ### fill • **fill**: *number* *Defined in [src/Sheet.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L30)* ___ ### height • **height**: *number* *Defined in [src/Sheet.ts:29](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L29)* ___ ### width • **width**: *number* *Defined in [src/Sheet.ts:28](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Sheet.ts#L28)* --- ## SearchStrategy URL: https://hyperformula.handsontable.com/docs/api/interfaces/searchstrategy # SearchStrategy ## Methods ### advancedFind ▸ **advancedFind**(`keyMatcher`: function, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L33)* **Parameters:** ▪ **keyMatcher**: *function* ▸ (`arg`: RawInterpreterValue): *boolean* **Parameters:** Name | Type | ------ | ------ | `arg` | RawInterpreterValue | ▪ **range**: *[SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md)* ▪ **options**: *[AdvancedFindOptions](https://hyperformula.handsontable.com/docs/api/interfaces/advancedfindoptions.md)* **Returns:** *number* ___ ### find ▸ **find**(`searchKey`: RawNoErrorScalarValue, `range`: [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md), `options`: [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md)): *number* *Defined in [src/Lookup/SearchStrategy.ts:31](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/SearchStrategy.ts#L31)* **Parameters:** Name | Type | ------ | ------ | `searchKey` | RawNoErrorScalarValue | `range` | [SimpleRangeValue](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) | `options` | [SearchOptions](https://hyperformula.handsontable.com/docs/api/interfaces/searchoptions.md) | **Returns:** *number* --- ## SheetCellAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/sheetcelladdress # SheetCellAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:231](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L231)* ___ ### row • **row**: *number* *Defined in [src/Cell.ts:232](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L232)* --- ## SimpleCellAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress # SimpleCellAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:193](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L193)* ___ ### row • **row**: *number* *Defined in [src/Cell.ts:194](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L194)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:195](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L195)* --- ## SimpleCellRange URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecellrange # SimpleCellRange ## Properties ### end • **end**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L26)* ___ ### start • **start**: *[SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)* *Defined in [src/AbsoluteCellRange.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/AbsoluteCellRange.ts#L25)* --- ## SimpleDate URL: https://hyperformula.handsontable.com/docs/api/interfaces/simpledate # SimpleDate ## Properties ### day • **day**: *number* *Defined in [src/DateTimeHelper.ts:20](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L20)* ___ ### month • **month**: *number* *Defined in [src/DateTimeHelper.ts:19](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L19)* ___ ### year • **year**: *number* *Defined in [src/DateTimeHelper.ts:18](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L18)* --- ## SimpleRowAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplerowaddress # SimpleRowAddress ## Properties ### row • **row**: *number* *Defined in [src/Cell.ts:175](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L175)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:176](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L176)* --- ## SimpleTime URL: https://hyperformula.handsontable.com/docs/api/interfaces/simpletime # SimpleTime ## Properties ### hours • **hours**: *number* *Defined in [src/DateTimeHelper.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L24)* ___ ### minutes • **minutes**: *number* *Defined in [src/DateTimeHelper.ts:25](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L25)* ___ ### seconds • **seconds**: *number* *Defined in [src/DateTimeHelper.ts:26](https://github.com/handsontable/hyperformula/blob/b8542ec/src/DateTimeHelper.ts#L26)* --- ## TemplateVars URL: https://hyperformula.handsontable.com/docs/api/interfaces/templatevars # TemplateVars --- ## TypedEmitter URL: https://hyperformula.handsontable.com/docs/api/interfaces/typedemitter # TypedEmitter ## Methods ### off ▸ **off**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:322](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L322)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* ___ ### on ▸ **on**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:320](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L320)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* ___ ### once ▸ **once**‹**Event**›(`s`: Event, `listener`: Listeners[Event]): *void* *Defined in [src/Emitter.ts:324](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Emitter.ts#L324)* **Type parameters:** ▪ **Event**: *keyof Listeners* **Parameters:** Name | Type | ------ | ------ | `s` | Event | `listener` | Listeners[Event] | **Returns:** *void* --- ## UndoEntry URL: https://hyperformula.handsontable.com/docs/api/interfaces/undoentry # UndoEntry ## Methods ### doRedo ▸ **doRedo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:24](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L24)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### doUndo ▸ **doUndo**(`undoRedo`: [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md)): *void* *Defined in [src/UndoRedo.ts:22](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L22)* **Parameters:** Name | Type | ------ | ------ | `undoRedo` | [UndoRedo](https://hyperformula.handsontable.com/docs/api/classes/undoredo.md) | **Returns:** *void* ___ ### getReferencedOldDataVersions ▸ **getReferencedOldDataVersions**(): *number[]* *Defined in [src/UndoRedo.ts:30](https://github.com/handsontable/hyperformula/blob/b8542ec/src/UndoRedo.ts#L30)* Returns the LazilyTransformingAstService version keys referenced by this entry's oldData storage. Used to clean up oldData when the entry is permanently evicted from the undo/redo stack. **Returns:** *number[]* --- ## SimpleColumnAddress URL: https://hyperformula.handsontable.com/docs/api/interfaces/simplecolumnaddress # SimpleColumnAddress ## Properties ### col • **col**: *number* *Defined in [src/Cell.ts:184](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L184)* ___ ### sheet • **sheet**: *number* *Defined in [src/Cell.ts:185](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Cell.ts#L185)* --- ## ValueIndex URL: https://hyperformula.handsontable.com/docs/api/interfaces/valueindex # ValueIndex ## Properties ### index • **index**: *number[]* *Defined in [src/Lookup/ColumnIndex.ts:34](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L34)* ___ ### version • **version**: *number* *Defined in [src/Lookup/ColumnIndex.ts:33](https://github.com/handsontable/hyperformula/blob/b8542ec/src/Lookup/ColumnIndex.ts#L33)* --- ## Advanced usage URL: https://hyperformula.handsontable.com/docs/guide/advanced-usage # Advanced usage > By default, cells are identified using a `SimpleCellAddress` which > consists of a sheet ID, column ID, and row ID, like > this: `{ sheet: 0, col: 0, row: 0 }` > > Alternatively, you can work with the **A1 notation** known from > spreadsheets like Excel or Google Sheets. The API provides the helper > function `simpleCellAddressFromString` which you can use to > retrieve the `SimpleCellAddress` . The following example shows how to use formulas to find out which of the two Teams (A or B) is the winning one. You will do that by comparing the average scores of players in each team. The initial steps are the same as in the [basic example](https://hyperformula.handsontable.com/docs/guide/basic-usage.md). First, import HyperFormula and choose the configuration options: ```javascript import { HyperFormula } from 'hyperformula'; const options = { licenseKey: 'gpl-v3' }; ``` This time you will use the `buildFromEmpty` static method to initialize the engine: ```javascript // initiate the engine with no data const hfInstance = HyperFormula.buildEmpty(options); ``` Now, let's prepare some data. The first column will be players' IDs and the second column will be their scores. Then, you will define the formulas responsible for calculating the average scores. ```javascript // first column represents players' IDs // second column represents players' scores const playersA = [ ['1', '2'], ['2', '3'], ['3', '5'], ['4', '7'], ['5', '13'], ['6', '17'] ]; const playersB = [ ['7', '19'], ['8', '31'], ['9', '61'], ['10', '89'], ['11', '107'], ['12', '127'] ]; // in cell A1 a formula checks which team is the winning one // in cells A2 and A3 formulas calculate the average score of players const formulas = [ ['=IF(Formulas!A2>Formulas!A3,"TeamA","TeamB")'], ['=AVERAGE(TeamA!B1:B6)'], ['=AVERAGE(TeamB!B1:B6)'] ]; ``` Now prepare sheets and insert the data into them: ```javascript // add 'TeamA' sheet const sheetNameA = hfInstance.addSheet('TeamA'); // get the new sheet ID for further API calls const sheetIdA = hfInstance.getSheetId(sheetNameA); // insert playersA content into targeted 'TeamA' sheet hfInstance.setSheetContent(sheetIdA, playersA); // add 'TeamB' sheet const sheetNameB = hfInstance.addSheet('TeamB'); // get the new sheet ID for further API calls const sheetIdB = hfInstance.getSheetId(sheetNameB); // insert playersB content into targeted 'TeamB' sheet hfInstance.setSheetContent(sheetIdB, playersB); // check the content in the console output console.log(hfInstance.getAllSheetsValues()); ``` After setting everything up, you can add formulas: ```javascript // add a sheet named 'Formulas' const sheetNameC = hfInstance.addSheet('Formulas'); // get the new sheet ID for further API calls const sheetIdC = hfInstance.getSheetId(sheetNameC); // add formulas to that sheet hfInstance.setSheetContent(sheetIdC, formulas); ``` Almost done! Now, you can use the `getSheetValues` method to get all values including the calculated ones. Alternatively, you can use `getCellValue`to get the value from a specific cell. ```javascript // get all sheet values const sheetValues = hfInstance.getSheetValues(sheetIdC); // get the simple cell address of 'A1' from that sheet const simpleCellAddress = hfInstance.simpleCellAddressFromString('A1', sheetIdC); // check the winning team 🎉 const winningTeam = hfInstance.getCellValue(simpleCellAddress); // print the result to the console console.log(winningTeam) ``` --- ## HyperFormula AI SDK for Vercel URL: https://hyperformula.handsontable.com/docs/guide/ai-sdk # HyperFormula AI SDK for Vercel A [Vercel AI SDK](https://sdk.vercel.ai/docs) tool that gives your agents deterministic spreadsheet and formula computation — backed by HyperFormula's Excel-compatible engine. > **Not available yet — coming soon** > > This integration is on our roadmap and **cannot be installed or used today**. The API shown below is a preview and may still change before the first release. > > If you'd like to try it, [join the early access list](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) — we'll ping you the moment the first beta is ready, and your sign-up directly tells us how strongly to prioritize this integration. ## What it does - **Evaluate formulas deterministically** — your agent runs any Excel-compatible formula through HyperFormula instead of asking the LLM to do math. Results are exact, reproducible, and auditable. - **Read and write cells and ranges** — the agent inspects, populates, or modifies sheet data through typed tool calls. - **Trace dependencies** — precedents and dependents are surfaced so the agent can explain how every value was derived. - **400+ built-in functions out of the box** — the agent has access to the full Excel-compatible function set (`SUM`, `VLOOKUP`, `IRR`, `INDEX/MATCH`, and the rest), no implementation work required. ## Example Using HyperFormula as a tool inside the Vercel AI SDK: ```js import { generateText } from 'ai'; import { openai } from '@ai-sdk/openai'; import HyperFormula from 'hyperformula'; import { createSpreadsheetTools } from 'hyperformula/ai'; // Build a workbook your agent can reason about. const hf = HyperFormula.buildFromArray([ ['Revenue', 100], ['Cost', 60], ['Profit', '=B1-B2'], ]); // Pass the spreadsheet tools straight into generateText. const result = await generateText({ model: openai('gpt-4o'), tools: createSpreadsheetTools(hf), prompt: 'What drives the profit number, and what happens if revenue doubles?', }); ``` A single import, one extra line in `tools`, and the model can evaluate formulas, read ranges, and edit cells through the SDK — without inventing numbers. ## Use cases - **Explain the spreadsheet** — ask the agent what a workbook does, which cells are inputs, and how each output is derived; get answers grounded in real formula evaluation. - **What-if scenarios and forecasting** — the agent tweaks assumptions and reports how downstream results change, deterministically. - **Validate and clean data** — the agent scans ranges for errors, missing values, or inconsistencies and fixes them in place. - **Generate formulas from natural language** — the agent translates a plain-English calculation into a verified, working Excel formula. - **Financial modeling and reporting** — NPV, IRR, amortization, KPI rollups, and other quantitative workflows where the answer must be exact and auditable. ## Get early access > **Be the first to try it** > > We're actively building this integration. Drop your email and we'll notify you the moment the first beta lands — so you can try it before the public release. > > [Join the early access list →](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) ## Links - [Vercel AI SDK documentation](https://sdk.vercel.ai/docs) - [HyperFormula on GitHub](https://github.com/handsontable/hyperformula) - [HyperFormula on npm](https://www.npmjs.com/package/hyperformula) - [Built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) --- ## Basic usage URL: https://hyperformula.handsontable.com/docs/guide/basic-usage # Basic usage > The instance can be created with three static methods: > [`buildFromArray`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#buildfromarray), > `buildFromSheets` or `buildEmpty`. You can check all of their > descriptions in our [API reference](https://hyperformula.handsontable.com/docs/api). If you've already installed the library, it's time to start writing the first simple application. First, if you used NPM or Yarn to install the package, make sure you have properly imported HyperFormula as shown below: ```javascript import { HyperFormula } from 'hyperformula'; ``` If you embed HyperFormula in the ` ``` Or you may load just a minimal build and add the dependencies on your own: ```html ``` A useful option when you already use some of them and there is no need to duplicate the dependencies. You can read more about the dependencies of HyperFormula on a dedicated [Dependencies](https://hyperformula.handsontable.com/docs/guide/dependencies.md) page. ## Clone from GitHub If you choose to clone the project or download it from GitHub you will need to build it prior to usage. Check the [building section](https://hyperformula.handsontable.com/docs/guide/building.md) for a full list of commands and their descriptions. ### Clone with HTTPS ```bash git clone https://github.com/handsontable/hyperformula.git ``` ### Clone with SSH ```bash git clone git@github.com:handsontable/hyperformula.git ``` ## Download from GitHub You can download all resources as a ZIP archive directly from the [GitHub repository](https://github.com/handsontable/hyperformula). Then, you can use one of the above-mentioned methods to install the library. --- ## Configuration options URL: https://hyperformula.handsontable.com/docs/guide/configuration-options # Configuration options HyperFormula can be customized through easy-to-setup `options`. The only mandatory key is `licenseKey`. It has a [dedicated section](https://hyperformula.handsontable.com/docs/guide/license-key.md) in which you can find all allowed types of key values. Below you can see the example of a configuration object and the static method called to initiate a new instance of HyperFormula. [See the full list of available options →](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html) ## Example ```javascript // define options const options = { licenseKey: 'gpl-v3', precisionRounding: 9, nullDate: { year: 1900, month: 1, day: 1 }, functionArgSeparator: '.' }; // call the static method to build a new instance const hfInstance = HyperFormula.buildEmpty(options); ``` --- ## Contributing URL: https://hyperformula.handsontable.com/docs/guide/contributing # Contributing You are welcome to contribute to HyperFormula's development. Your help is much appreciated in any of the following topics: * Making pull requests * Adding new functions * Adding new features * Improving the quality of the existing code * Improving performance * Improving documentation and public API * Reporting bugs * Suggesting improvements * Suggesting new features ## Good first issue Adding a new function would be a huge help for the growth of the library and should not be too problematic for a first issue. Extending the library of translations is also a good task to start with. [Here](https://docs.google.com/spreadsheets/d/1UUskn4ZDDjLGSpO6kg73DOvabNoeqLbkJYyVfLyYlYw) you can find a list of function translations. Visit the [building](https://hyperformula.handsontable.com/docs/guide/building.md) section to get more info about the development process and check the list of commands you can run in this project. Check the `/i18n` folder in the project - all translations are kept there. For the functions see the `interpreter/plugin` folder. Both of them are a good starting point. ## How to get started 1. First, sign this [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2) to allow us to use and publish your changes. 2. Always make your changes on a separate branch. This will speed up the merging process. 3. Always make the target of your pull request the `develop` branch, not `master`. 4. For any change you make, add test specs to the `test` folder. 5. Please lint the code. See the section about using linter. 6. Add a comprehensive description of all the changes. ## Code of conduct By participating in this project, you are expected to uphold our [Code of Conduct](https://hyperformula.handsontable.com/docs/guide/code-of-conduct.md). --- ## Contact URL: https://hyperformula.handsontable.com/docs/guide/contact # Contact HyperFormula is a product of Handsoncode, the company that stands behind [Handsontable](https://handsontable.com/). We are here to answer all your questions regarding pricing, licensing, support, and security. We typically reply within a few hours during our working hours: 8:00 AM - 5:00 PM [CET](https://time.is/pl/CET). ## Contact sales Write to us at [sales@handsontable.com](mailto:sales@handsontable.com) or submit your inquiry through the [contact form](https://handsontable.com/get-a-quote). ## Billing address * Handsoncode sp. z o.o. * Aleja Zwycięstwa 96/98 * 81-451 Gdynia, Poland * VAT EU: PL5862294002 ## Looking for technical support? [Learn more about support options →](https://hyperformula.handsontable.com/#pricing) --- ## Demo URL: https://hyperformula.handsontable.com/docs/guide/demo # Demo In this demo, you can see how HyperFormula handles basic operations by using API methods, such as: * `buildEmpty` static method to initialize the instance * `addSheet` method to add a new sheet * `setCellContents` method to add content * `getSheetId` method to retrieve the sheet's ID * `getCellValue` method to get the value of a cell * `calculateFormula` method to calculate a formula * `getCellFormula` method to retrieve a formula from a cell --- ## Dependencies URL: https://hyperformula.handsontable.com/docs/guide/dependencies # Dependencies HyperFormula depends on a few external libraries, as listed below. These dependencies are used to support some of the library's core features. | Name | License | Author | |:------------------------------------------------------------|:----------------|:-----------------------------------| | [bessel](https://github.com/SheetJS/bessel) | Apache v2.0 | SheetJS | | [Chevrotain](https://github.com/SAP/chevrotain) | Apache v2.0 | SAP SE or an SAP affiliate company | | [core-js](https://github.com/zloirock/core-js) | The MIT License | Denis Pushkarev | | [jStat](https://github.com/jstat/jstat) | The MIT License | jStat | | [tiny-emitter](https://github.com/scottcorgan/tiny-emitter) | The MIT License | Scott Corgan | The _bessel_ and _jStat_ projects are distributed with the code repository at the path `src/interpreter/plugin/3rdparty` and bundled with the code package. We want to express gratitude and appreciation for all the hard work put into these awesome libraries by their authors and maintainers. --- ## Custom functions URL: https://hyperformula.handsontable.com/docs/guide/custom-functions # Custom functions Expand the function library of your application by adding custom functions. **Contents:** ## Add a simple custom function As an example, let's create a custom function `GREET` that accepts a person's first name as a string argument and returns a personalized greeting. ### 1. Create a function plugin Import `FunctionPlugin`, and extend it with a new class. For example: ```js import { FunctionPlugin } from 'hyperformula'; // let's call the function plugin `MyCustomPlugin` export class MyCustomPlugin extends FunctionPlugin {} ``` ### 2. Define your function's ID, method, and metadata In your function plugin, in the static `implementedFunctions` property, define an object that declares the functions provided by this plugin. The name of that object becomes the ID by which [translations](#function-name-translations), [aliases](#function-aliases), and other elements reference your function. Make the ID unique among all HyperFormula functions ([built-in](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#list-of-available-functions) and custom). In your function's object, you can specify: - A `method` property (required), which maps your function to the implementation method (we'll define it later on), - A `parameters` array that describes the arguments accepted by your function and [validation options](#argument-validation-options) for each argument, - Other [custom function options](#function-options). ```js import { FunctionPlugin, FunctionArgumentType } from 'hyperformula'; MyCustomPlugin.implementedFunctions = { // let's define the function's ID as `GREET` GREET: { method: 'greet', parameters: [{ argumentType: FunctionArgumentType.STRING }], }, }; ``` > To define multiple functions in a single function plugin, add them all > to the `implementedFunctions` object. > > ```js > MyCustomPlugin.implementedFunctions = { > FUNCTION_A: { > //... > }, > FUNCTION_B: { > //... > }, > }; > ``` ### 3. Add your function's names In a separate object, define your function's names in every [language](#function-name-translations) that you want to support. > Even if you support just a single language, you still need to define a translation for it. ```js export const MyCustomPluginTranslations = { enGB: { GREET: 'GREET', }, enUS: { GREET: 'GREET', }, // repeat for all languages used in your system }; ``` ### 4. Implement your function's logic In your function plugin, add a method that implements your function's calculations. Your method needs to: - Take two optional arguments: `ast` and `state`. - Return the results of your calculations. Wrap your implementation in the built-in `runFunction()` method, which: - Evaluates the arguments of your custom function. - Validates the number of arguments against the [`parameters` array](#function-options). - Coerces the argument values to types set in the [`parameters` array](#argument-validation-options). - Handles optional arguments and default values according to options set in the [`parameters` array](#argument-validation-options). - Validates the arguments of your custom function against the [argument validation options](#argument-validation-options). - Duplicates the arguments according to the [`repeatLastArgs` option](#function-options). - Handles the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md#array-arithmetic-mode). - Performs [function vectorization](https://hyperformula.handsontable.com/docs/guide/arrays.md#passing-arrays-to-scalar-functions-vectorization). - Performs [argument broadcasting](https://hyperformula.handsontable.com/docs/guide/arrays.md#broadcasting). ```js export class MyCustomPlugin extends FunctionPlugin { greet(ast, state) { return this.runFunction( ast.args, state, this.metadata('GREET'), (firstName) => { return `👋 Hello, ${firstName}!`; } ); } } ``` ### 5. Register your function plugin Register your function plugin and its translations so that HyperFormula can recognize it. You need to do this **before** you create your HyperFormula instance. Use the [`registerFunctionPlugin()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#registerfunctionplugin) method: ```js HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` ### 6. Use your custom function in a formula Now, you're ready to use your GREET function in a formula. ```js // build a HyperFormula instance where you can use your function directly const hfInstance = HyperFormula.buildFromArray([['Anthony', '=GREET(A1)']]); // read the value of cell B1 const result = hfInstance.getCellValue({ sheet: 0, col: 1, row: 0 }); // cell B1 should evaluate to 'Anthony' console.log(result); ``` ### Full example The complete implementation of this custom function is also included in the [demo](#working-demo). ```js import { FunctionPlugin, FunctionArgumentType } from 'hyperformula'; export class MyCustomPlugin extends FunctionPlugin { greet(ast, state) { return this.runFunction( ast.args, state, this.metadata('GREET'), (firstName) => { return `👋 Hello, ${firstName}!`; } ); } } MyCustomPlugin.implementedFunctions = { GREET: { method: 'greet', parameters: [{ argumentType: FunctionArgumentType.STRING }], }, }; export const MyCustomPluginTranslations = { enGB: { GREET: 'GREET', }, enUS: { GREET: 'GREET', }, }; HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` ## Advanced custom function example In a more advanced example, we'll create a custom function `DOUBLE_RANGE` that takes a range of numbers and returns the range of the same size with all the numbers doubled. ### Accept a range argument To accept a range argument, declare it in the `parameters` array: ```js MyCustomPlugin.implementedFunctions = { DOUBLE_RANGE: { method: 'doubleRange', parameters: [{ argumentType: FunctionArgumentType.RANGE }], }, }; ``` The range arguments are passed to the implementation method as instances of the [`SimpleRangeValue` class](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md): ```js export class MyCustomPlugin extends FunctionPlugin { doubleRange(ast, state) { return this.runFunction( ast.args, state, this.metadata('DOUBLE_RANGE'), (range) => { const rangeData = range.data; // ... } ); } } ``` ### Return an array of data A function can return multiple values in the form of an [array](https://hyperformula.handsontable.com/docs/guide/arrays.md). To do that, use [`SimpleRangeValue` class](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md): ```js export class MyCustomPlugin extends FunctionPlugin { doubleRange(ast, state) { return this.runFunction( ast.args, state, this.metadata('DOUBLE_RANGE'), (range) => { const resultArray = //... return SimpleRangeValue.onlyValues(resultArray); }, ); } } ``` A function that returns an array will cause the `VALUE!` error unless you also declare a companion method for the array size. To do that, provide the `sizeOfResultArrayMethod` that calculates the size of the result array based on the function arguments and returns an instance of the [`ArraySize` class](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md). > When you use your custom function in a formula, `sizeOfResultArrayMethod` is triggered every time the formula changes, but not when the dependencies of the formula change. > This can cause unexpected behavior if the size of the result array depends on the values in the referenced cells. ```js export class MyCustomPlugin extends FunctionPlugin { doubleRangeResultArraySize(ast, state) { const arg = ast?.args?.[0]; if (arg?.start == null || arg?.end == null) { return ArraySize.scalar(); } const width = arg.end.col - arg.start.col + 1; const height = arg.end.row - arg.start.row + 1; return new ArraySize(width, height); } } MyCustomPlugin.implementedFunctions = { DOUBLE_RANGE: { method: 'doubleRange', sizeOfResultArrayMethod: 'doubleRangeResultArraySize', parameters: [{ argumentType: FunctionArgumentType.RANGE }], }, }; ``` ### Validate the arguments and return an error To handle invalid inputs, the custom function should return an instance of the [`CellError` class](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) with the relevant [error type](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md). Errors are localized according to your [language settings](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ```js if (rangeData.some((row) => row.some((val) => typeof rawValue !== 'number'))) { return new CellError( 'VALUE', 'Function DOUBLE_RANGE operates only on numbers.' ); } ``` > All HyperFormula [error types](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md) support optional > custom error messages. Put them to good use: let your users know what caused the > error and how to avoid it in the future. ### Test your function To make sure your function works correctly, add unit tests. Use a JavaScript testing library of your choice. ```js it('works for a range of numbers', () => { HyperFormula.registerFunctionPlugin( MyCustomPlugin, MyCustomPluginTranslations ); const engine = HyperFormula.buildFromArray( [[1, '=DOUBLE_RANGE(A1:A3)'], [2], [3]], { licenseKey: 'gpl-v3' } ); expect(engine.getCellValue({ sheet: 0, row: 0, col: 1 })).toEqual(2); expect(engine.getCellValue({ sheet: 0, row: 1, col: 1 })).toEqual(4); expect(engine.getCellValue({ sheet: 0, row: 2, col: 1 })).toEqual(6); }); it('returns a VALUE error if the range argument contains a string', () => { HyperFormula.registerFunctionPlugin( MyCustomPlugin, MyCustomPluginTranslations ); const engine = HyperFormula.buildFromArray( [[1, '=DOUBLE_RANGE(A1:A3)'], ['I should not be here'], [3]], { licenseKey: 'gpl-v3' } ); expect(engine.getCellValueType({ sheet: 0, row: 0, col: 1 })).toEqual( 'ERROR' ); expect(engine.getCellValue({ sheet: 0, row: 0, col: 1 }).value).toEqual( '#VALUE!' ); }); ``` ## Working demo Explore the full working example on [Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/custom-functions?v=). This demo contains the implementation of both the [`GREET`](#add-a-simple-custom-function) and [`DOUBLE_RANGE`](#advanced-custom-function-example) custom functions. ## Function options You can set the following options for your function: | Option | Type | Description | |-------------------------------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `method` (required) | String | Name of the method that implements the custom function logic. | | `parameters` | Array | Specification of the arguments accepted by the function and their [validation options](#argument-validation-options). | | `sizeOfResultArrayMethod` | String | Name of the method that calculates the size of the result array. Not required for functions that never return an array. | | `returnNumberType` | String | If the function returns a numeric value, this option indicates how to interpret the returned number.
Possible values: `NUMBER_RAW, NUMBER_DATE, NUMBER_TIME, NUMBER_DATETIME, NUMBER_CURRENCY, NUMBER_PERCENT`.
Default: `NUMBER_RAW` | | `repeatLastArgs` | Number | For functions with a variable number of arguments: sets how many last arguments can be repeated indefinitely. Must be a positive integer no larger than the number of `parameters`. A value that is not a positive integer (`0`, a negative number, a fraction, `NaN`, or `Infinity`) is ignored, and the function keeps a fixed number of arguments. A value larger than the number of `parameters` is not supported and must not be used: the function then accepts an erratic set of argument counts instead of a repeating one (with one parameter and `repeatLastArgs: 5`, calls with 1, 2, 4, or 5 arguments are accepted, while 3 and 8 return `#N/A!`).
Default: `0` | | `expandRanges` | Boolean | `true`: ranges in the function's arguments are inlined to (possibly multiple) scalar arguments.
Default: `false` | | `isVolatile` | Boolean | `true`: the function is [volatile](https://hyperformula.handsontable.com/docs/guide/volatile-functions.md).
Default: `false` | | `isDependentOnSheetStructureChange` | Boolean | `true`: the function gets recalculated with each sheet shape change (e.g., when adding/removing rows or columns).
Default: `false` | | `doesNotNeedArgumentsToBeComputed` | Boolean | `true`: the function treats reference or range arguments as arguments that don't create dependency (other arguments are properly evaluated).
Default: `false` | | `enableArrayArithmeticForArguments` | Boolean | `true`: the function enables the [array arithmetic mode](https://hyperformula.handsontable.com/docs/guide/arrays.md) in its arguments and nested expressions.
Default: `false` | | `vectorizationForbidden` | Boolean | `true`: the function will never get [vectorized](https://hyperformula.handsontable.com/docs/guide/arrays.md#passing-arrays-to-scalar-functions-vectorization).
Default: `false` | | `arraySizeMethod` | String | Deprecated; Use `sizeOfResultArrayMethod` instead. | | `arrayFunction` | Boolean | Deprecated; Use `enableArrayArithmeticForArguments` instead. | You can set the options in the static `implementedFunctions` property of your function plugin: ```javascript MyCustomPlugin.implementedFunctions = { MY_FUNCTION: { method: 'myFunctionMethod', parameters: [ { // your argument validation options }, ], sizeOfResultArrayMethod: 'myArraySizeMethod', returnNumberType: 'NUMBER_RAW', repeatLastArgs: 0, expandRanges: false, isVolatile: false, isDependentOnSheetStructureChange: false, doesNotNeedArgumentsToBeComputed: false, enableArrayArithmeticForArguments: false, vectorizationForbidden: false, }, }; ``` ### Argument validation options You can set the following argument validation options: | Option | Type | Description | |---------------------------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `argumentType` (required) | `FunctionArgumentType` | Expected type of the function argument. See [possible values](#types-of-the-function-argument). | | `defaultValue` | `InternalScalarValue` or `RawScalarValue` | If set: if an argument is missing, its value defaults to `defaultValue`. | | `passSubtype` | Boolean | `true`: arguments are passed with full type information (e.g., for numbers: `Date` or `DateTime` or `Time` or `Currency` or `Percentage`).
Default: `false` | | `optionalArg` | Boolean | `true`: if an argument is missing, and no `defaultValue` is set, the argument defaults to `undefined` (instead of throwing an error).
Default: `false`
Setting this option to `true` is the same as setting `defaultValue` to `undefined`. | | `minValue` | Number | If set: numerical arguments need to be greater than or equal to `minValue`. | | `maxValue` | Number | If set: numerical arguments need to be less than or equal to `maxValue`. | | `lessThan` | Number | If set: numerical argument needs to be less than `lessThan`. | | `greaterThan` | Number | If set: numerical argument needs to be greater than `greaterThan`. | | `emptyAsDefault` | Boolean | `true`: an empty argument (e.g., `=FUNC(1,,3)`) is treated as missing and falls back to `defaultValue`. By default (`false`), empty arguments are coerced to the zero-value for their type (`0`, `FALSE`, or `""`). Requires `defaultValue` to be set. | In your function plugin, in the static `implementedFunctions` property, add an array called `parameters`: ```js MyCustomPlugin.implementedFunctions = { MY_FUNCTION: { method: 'myFunctionMethod', parameters: [ { argumentType: FunctionArgumentType.STRING, defaultValue: 10, passSubtype: false, optionalArg: false, minValue: 5, maxValue: 15, lessThan: 15, greaterThan: 5, }, ], }, }; ``` ### Types of the function argument | Type | Description | Example | |-----------|----------------------------------------------------------------------------------------------------------|----------------------------------------------| | `NUMBER` | A general numeric value such as floating-point number, date/time value, currency value or percent value. | `3`, `3.14`, `$100`, `1939/09/01`, `4:45 AM` | | `INTEGER` | An integer. | `42` | | `COMPLEX` | A text representing a complex value. | `"-3+4i"` | | `STRING` | A text value. | `"aaa"` | | `BOOLEAN` | A logical value. | `=TRUE()` | | `NOERROR` | Any non-range and non-error value. | All of the above | | `SCALAR` | Any non-range value. | All of the above | | `RANGE` | Multiple values as a range of cells or an inline array. | `A1:B100`, `{1, 2}` | | `ANY` | Any value. | All of the above | ### Handling missing arguments Both the `defaultValue` and `optionalArg` options let you decide what happens when a user doesn't pass enough valid arguments to your custom function. Setting a `defaultValue` for an argument always makes that argument optional. But, the `defaultValue` option automatically replaces any missing arguments with `defaultValue`, so your custom function is unaware of the actual number of valid arguments passed. If you don't want to set any `defaultValue` (because, for example, your function's behavior depends on the number of valid arguments passed), use the `optionalArg` setting instead. ## Function name translations You can add translations of your function's name in multiple languages. Your end users use the translated names to call your function inside formulas. In a separate object, define the translations of your custom functions' names in every language you want to support. Function names are case-insensitive, as they are all normalized to uppercase. > Even if you support just a single language, you still need to define a translation for it. ```js export const MyCustomPluginTranslations = { enGB: { // formula in English: `=MY_FUNCTION()` MY_FUNCTION: 'MY_FUNCTION', }, deDE: { // formula in German: `=MEINE_FUNKTION()` MY_FUNCTION: 'MEINE_FUNKTION', }, // repeat for all languages used in your system }; // register your function plugin and translations HyperFormula.registerFunctionPlugin(MyCustomPlugin, MyCustomPluginTranslations); ``` > Before using a translated function name, remember to > [register and set the language](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ## Function aliases You can also assign multiple aliases to a single custom function. In your function plugin, in the static `aliases` property, add aliases for your function: ```js MyCustomPlugin.aliases = { // `=MY_ALIAS()` will work the same as `=MY_FUNCTION()` MY_ALIAS: 'MY_FUNCTION', }; ``` > For each alias of your function, define a translation, even if you want > to support only one language. > > ```js > MyCustomPlugin.translations = { > enGB: { > MY_FUNCTION: 'MY_FUNCTION', > MY_ALIAS: 'MY_ALIAS', > }, > }; > ``` --- ## Date and time handling URL: https://hyperformula.handsontable.com/docs/guide/date-and-time-handling # Date and time handling The formats for the default date and time parsing functions can be set using configuration options: - [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats), - [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats), - [`nullYear`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nullyear). The API reference of [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) and [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) describes the supported date and time formats in detail. ## Example By default, HyperFormula uses the European date and time formats. ```javascript dateFormats: ['DD/MM/YYYY', 'DD/MM/YY'], // set by default timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default ``` To use the US date and time formats, set: ```javascript dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], // US date formats timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default ``` ## Custom date and time handling If date and time formats supported by the [`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats) and [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) parameters are not enough, you can extend them by providing the following options: - [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime), which allows to provide a function that accepts a string representing date/time and parses it into an actual date/time format - [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime), which allows to provide a function that takes the date/time and prints it as a string - [`stringifyDuration`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration), which allows to provide a function that takes time duration and prints it as a string To extend the number of possible date formats, you will need to configure [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime) . This functionality is based on callbacks, and you can customize the formats by integrating a third-party library like [Moment.js](https://momentjs.com/), or by writing your own custom function that returns a [`DateTime`](https://hyperformula.handsontable.com/docs/api/globals.md#datetime) object. The configuration of date formats and stringify options may impact some built-in functions. For instance, the `VALUE` function transforms strings into numbers, which means it uses [`parseDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#parsedatetime). The `TEXT` function works the other way round - it accepts a number and returns a string, so it uses `stringifyDateTime`. Any change here might give you different results. Criteria-based functions (`SUMIF`, `AVERAGEIF`, etc.) perform comparisons, so they also need to work on strings, dates, etc. ## Moment.js integration In this example, you will add the possibility to parse dates in the `"Do MMM YY"` custom format. To do so, you first need to write a function using [Moment.js API](https://momentjs.com/docs/): ```javascript import moment from "moment"; // write a custom function for parsing dates export const customParseDate = (dateString, dateFormat) => { const momentDate = moment(dateString, dateFormat, true); // check validity of a date with moment.js method if (momentDate.isValid()) { return { year: momentDate.year(), month: momentDate.month() + 1, day: momentDate.date() }; } // if the string was not recognized as // a valid date return nothing return undefined; }; ``` Then, use it inside the [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) like so: ```javascript const options = { parseDateTime: customParseDate, // you can add more formats dateFormats: ["Do MMM YY"] }; ``` After that, you should be able to add a dataset with dates in your custom format: ```javascript const data = [["31st Jan 00", "2nd Jun 01", "=B1-A1"]]; ``` And now, HyperFormula recognizes these values as valid dates and can operate on them. For currency formatting in the `TEXT` function (locale-aware grouping, non-`$` symbols, accounting patterns), see the [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) guide. --- ## Currency handling URL: https://hyperformula.handsontable.com/docs/guide/currency-handling # Currency handling HyperFormula treats currency through **two independent mechanisms**: - **Currency input** — recognizing currency literals (e.g. `"100 zł"`) when they appear in cell values, so they become numeric values tagged as currency rather than strings. Controlled by [`currencySymbol`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#currencysymbol). - **Currency output** — rendering numbers as currency strings via the `TEXT` function. Simple `$`-prefixed formats work out of the box; richer locale-aware patterns plug in through [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency). The two mechanisms are orthogonal — configure both for full coverage. HyperFormula ships with no currency data and no currency-library dependency, so you stay in control of which symbols are recognized and how they render. ## Currency input By default, HyperFormula recognizes `$` as a currency symbol in cell input. To add more (for example Polish złoty), pass an array of recognized symbols to [`currencySymbol`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#currencysymbol): ```javascript const hf = HyperFormula.buildFromArray( [['100 zł', '=A1 * 1.23']], { currencySymbol: ['$', 'zł'] } ); console.log(hf.getCellValue({ sheet: 0, col: 0, row: 0 })); // 100 console.log(hf.getCellValueDetailedType({ sheet: 0, col: 0, row: 0 })); // 'NUMBER_CURRENCY' console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // 123 ``` Notes: - The symbol can appear as a **prefix** (`"$100"`) or as a **suffix** (`"100 zł"`). Both forms are recognized. - Each entry in `currencySymbol` is a literal string — no regular expressions. To support multiple locales, list every symbol you want recognized. - Detected literals are exposed as numeric values; the currency tag is available via [`getCellValueDetailedType()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getcellvaluedetailedtype) as `NUMBER_CURRENCY`. `currencySymbol` controls **only** how HyperFormula parses input. It does not influence what the `TEXT` function returns — that is governed by the format string and the [`stringifyCurrency`](#currency-output) callback described below. ## Currency output The `TEXT` function renders a number with a format string. HyperFormula's built-in number formatter handles the simplest currency-shaped patterns out of the box; richer patterns need a [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifycurrency) callback. ### Default behavior With no `stringifyCurrency` configured, the built-in formatter handles simple `$`-prefixed formats — `"$0.00"`, `"$0"`, and `"$#.00"`: ```javascript const hf = HyperFormula.buildFromArray([ [1234.5, '=TEXT(A1, "$0.00")'], [1234.5, '=TEXT(A2, "$#.00")'], ]); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "$1234.50" console.log(hf.getCellValue({ sheet: 0, col: 1, row: 1 })); // "$1234.50" ``` A non-`$` symbol used purely as a suffix (no thousands grouping, no decimal-comma) also passes through unchanged: ```javascript const hf = HyperFormula.buildFromArray([[1234.5, '=TEXT(A1, "0.00 zł")']]); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "1234.50 zł" ``` Configure `stringifyCurrency` when your formula corpus needs more advanced currency formats. E.g.: - thousands grouping (`"$#,##0.00"`), - non-`$` symbols with grouping (`"[$€-2] #,##0.00"`, `"[$zł-415] #,##0.00"`), - locale-specific decimal separators (e.g. the Polish `"1234,50 zł"` pattern — the built-in formatter always emits `.` as the decimal), - accounting two-section formats (`"$#,##0.00;($#,##0.00)"`). ### Custom currency formatting The callback contract: ```ts stringifyCurrency: (value: number, currencyFormat: string) => string | undefined ``` The function receives the raw number and the format string passed to `TEXT`. Return a formatted string to override the built-in formatter, or `undefined` to fall through to it. #### Minimal example ```javascript // Recognize "$..."-prefixed formats and ignore the rest: const stringifyCurrency = (value, fmt) => fmt.startsWith('$') ? `$${value.toFixed(2)}` : undefined; const hf = HyperFormula.buildFromArray([ [1234.5, '=TEXT(A1, "$#,##0.00")'], ], { stringifyCurrency }); console.log(hf.getCellValue({ sheet: 0, col: 1, row: 0 })); // "$1234.50" ``` This callback handles `$`-prefixed formats and falls through (returns `undefined`) for everything else. For any format the callback opts out of, HyperFormula proceeds to the next handler in the dispatch chain: the default date / duration formatters, then the built-in number formatter, and finally the raw format string if nothing matched. #### Reference table Side-by-side comparison of the default formatter and the docs adapter from the section below: | Format | Without callback | With adapter callback (section below) | |---|---|---| | `"$0.00"` | `"$1234.50"` | `"$1234.50"` | | `"$#.00"` | `"$1234.50"` | `"$1234.50"` | | `"$#,##0.00"` | `"$1235,##0.00"` (no grouping) | `"$1,234.50"` | | `"[$€-2] #,##0.00"` | `"[$€-2] 1235,##0.00"` (no grouping) | `"1.234,50 €"` | | `"$#,##0.00;($#,##0.00)"` (value `-1234.5`) | `"$-1235,##0.00;($#,##0.00)"` (no grouping) | `"($1,234.50)"` | #### Error behavior If your callback throws, HyperFormula propagates the exception. Wrap your formatter in `try/catch` if it can fail, and return `undefined` as the opt-out signal for unsupported formats — throwing is reserved for unexpected errors. #### Example: `Intl.NumberFormat` adapter (zero dependencies) This adapter handles a representative subset of popular currency format strings using native [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat). Extend the `LCID_TO_LOCALE` map to cover more locales — see the [MS-LCID](https://learn.microsoft.com/openspecs/windows_protocols/ms-lcid) specification for canonical identifiers. ```javascript // Extend the LCID_TO_LOCALE map and CURRENCY_RULES list to cover more formats. const LCID_TO_LOCALE = { '-409': { locale: 'en-US', currency: 'USD' }, // USD '-2': { locale: 'de-DE', currency: 'EUR' }, // EUR (generic) '-411': { locale: 'ja-JP', currency: 'JPY' }, // JPY '-415': { locale: 'pl-PL', currency: 'PLN' }, // PLN '-809': { locale: 'en-GB', currency: 'GBP' }, // GBP } const CURRENCY_RULES = [ // [$SYMBOL-LCID] #,##0[.00] — locale-tagged currency format. // SYMBOL portion requires at least one character (`+`, not `*`) so that // locale-only modifiers like `[$-409]` (used on date/time formats) are // NOT misclassified as currency by this adapter. { pattern: /^\[\$([^\-\]]+)-([0-9A-Fa-f]+)\]\s*#,##0(\.0+)?$/, build: (match) => { const lcid = '-' + match[2] const fractionDigits = (match[3] || '.').length - 1 const entry = LCID_TO_LOCALE[lcid] || { locale: 'en-US', currency: 'USD' } return new Intl.NumberFormat(entry.locale, { style: 'currency', currency: entry.currency, minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, }) }, }, // $#,##0.00 — USD shorthand { pattern: /^\$#,##0(\.0+)?$/, build: (match) => new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: (match[1] || '.').length - 1, maximumFractionDigits: (match[1] || '.').length - 1, }), }, ] // Accounting: $#,##0.00;($#,##0.00) — positive;negative with parentheses. // Note: when both sections are plain (e.g. `$#,##0.00;$#,##0.00`), the adapter // honors the negative section AS-IS without auto-prepending `-` — the // format author explicitly opted out of automatic sign. function tryAccountingFormat(value, format) { const sections = format.split(';') if (sections.length !== 2) return undefined const isNegative = value < 0 const section = sections[isNegative ? 1 : 0] const parenMatch = /^\(\$#,##0(\.0+)?\)$/.exec(section) const plainMatch = /^\$#,##0(\.0+)?$/.exec(section) if (!parenMatch && !plainMatch) return undefined const fractionDigits = ((parenMatch || plainMatch)[1] || '.').length - 1 const nf = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, }) const formatted = nf.format(Math.abs(value)) return isNegative && parenMatch ? `(${formatted})` : formatted } export const customStringifyCurrency = (value, currencyFormat) => { if (typeof currencyFormat !== 'string') return undefined const accounting = tryAccountingFormat(value, currencyFormat) if (accounting !== undefined) return accounting for (const rule of CURRENCY_RULES) { const match = rule.pattern.exec(currencyFormat) if (match) return rule.build(match).format(value) } // Not a recognized currency format — let HyperFormula fall through // to the built-in number formatter. return undefined } ``` #### Limitations of the reference adapter - **It uses each currency's CLDR locale conventions, not your HyperFormula config.** Output is produced by `Intl.NumberFormat`, so the thousands grouping and decimal separator come from the currency's locale (e.g. `pl-PL` → `1 234,50 zł`, `de-DE` → `1.234,50 €`). The adapter does **not** read HyperFormula's [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) / [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) config. - **It recognizes only a representative subset of format shapes.** It handles LCID-tagged formats (`[$SYM-LCID] #,##0.00`), `$`-shorthand (`$#,##0.00`), and simple two-section accounting (`$#,##0.00;($#,##0.00)`). For any other shape it returns `undefined`, so HyperFormula falls through to its built-in number formatter — which cannot expand `#,##0` thousands grouping nor interpret multi-section `;` formats, producing incorrect output for those patterns. If you need more complex currency formatting such as: - Arbitrary Excel-style format strings, - Precision-safe arithmetic on currency values (e.g. cents as integers), - ISO 4217 currency metadata for dozens of currencies, consider wrapping a specialized currency formatter library such as [`Dinero.js` v2](https://v2.dinerojs.com/) inside the callback. The contract is the same: `(value: number, currencyFormat: string) => string | undefined`. Return `undefined` for any format string you don't want to handle and HyperFormula will fall back to its built-in number formatter. #### What is an LCID tag? [Microsoft Locale Identifier](https://learn.microsoft.com/openspecs/windows_protocols/ms-lcid) (LCID) adds locale context to a currency format. The syntax is `[$SYMBOL-LCID]` followed by the number template — for example `[$zł-415] #,##0.00` means *"Polish złoty, hex LCID `415` = `pl-PL`"*, and `[$€-2] #,##0.00` means *"euro, generic"*. The adapter above parses the LCID to pick the matching `Intl.NumberFormat` locale and ISO 4217 currency code. ## Related configuration - [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifydatetime) / [`stringifyDuration`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#stringifyduration) — sister callbacks for date and duration formatting. Combine with `stringifyCurrency` when your formulas mix date/time and currency formats. --- ## Dependency graph URL: https://hyperformula.handsontable.com/docs/guide/dependency-graph # Dependency graph For accuracy and performance, HyperFormula needs to process cells in a correct and optimal order. For example: in formula `C1=A1+B1`, cells `A1` and `B1` need to be evaluated before `C1`. To find the right order of processing cells, HyperFormula builds a [dependency graph](https://en.wikipedia.org/wiki/Dependency_graph) which captures relationships between cells. ## Cells in the dependency graph In the dependency graph, each spreadsheet cell is represented by a separate node. Nodes `X` and `Y` are connected by a directed edge if and only if the formula in cell `X` includes the address of cell `Y`. ## Ranges in the dependency graph If formulas in the spreadsheet include ranges, each range is represented by a separate node. The dependency graph may also contain ranges that are not used by any formula, for better optimization. Range nodes can be connected to cell nodes and to other range nodes. ![](https://hyperformula.handsontable.com/docs/ranges.png) ### Optimizations for large ranges In many applications, you may want to use formulas that depend on a large range of cells. For example, the formula `SUM(A1:A100)+B5` depends on 101 cells, and it needs to be represented in the dependency graph accordingly. An interesting optimization challenge arises when there are multiple cells that depend on large ranges. For example, consider the following use-case: * `B1=SUM(A1:A1)` * `B2=SUM(A1:A2)` * `B3=SUM(A1:A3)` * ... * `B100=SUM(A1:A100)` The problem is that there are `1+2+3+...+100 = 5050` dependencies for such a simple situation. In general, for `n` such rows, the engine would need to add `n*(n+1)/2 ≈ n²` arcs in the graph. This value grows much faster than the size of data, meaning the engine would not be able to handle large data sets efficiently. A solution to this problem comes from the observation that there is a way to rewrite the above formulas to equivalent ones, which will be more compact to represent. Specifically, the following formulas would compute the same values as the ones provided previously: * `B1=A1` * `B2=B1+A2` * `B3=B2+A3` * ... * `B100=B99+A100` Whereas this example is too specialized to provide a useful rule for optimization, it shows the main idea behind efficient handling of multiple ranges: **to represent a range as a composition of smaller ranges.** In the adopted implementation, every time the engine encounters a range, say `B5:D20`, it checks if it has already considered the range which is one row shorter. In this example, it would be `B5:D19`. If so, then it represents `B5:D20` as the composition of a range `B5:D19` and three cells in the last row: `B20`,`C20` and `D20`. ![](https://hyperformula.handsontable.com/docs/ranges.png) More generally, the result of any associative operation is obtained as the result of operations for these small rows. There are many examples of such associative functions: `SUM`, `MAX`, `COUNT`, etc. As one range can be used in different formulas, we can reuse its node and avoid duplicating the work during computation. ## Getting the immediate precedents of a cell or a range To get the immediate precedents of a cell or a range (the in-neighbors of the cell node or the range node), use the [`getCellPrecedents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcellprecedents) method: ```js const hfInstance = HyperFormula.buildFromArray([[ '1', '2', '=A1', '=B1+C1' ]]); hfInstance.getCellPrecedents({ sheet: 0, col: 3, row: 0 }); // returns [{ sheet: 0, col: 1, row: 0 }, { sheet: 0, col: 2, row: 0 }] ``` ## Getting the immediate dependents of a cell or a range To get the immediate dependents of a cell or a range (the out-neighbors of the cell node or the range node), use the [`getCellDependents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcelldependents) method: ```js const hfInstance = HyperFormula.buildFromArray([[ '1', '=A1', '=A1+B1', '=B1+C1' ]]) hfInstance.getCellDependents({ sheet: 0, col: 0, row: 0 }) // returns [{ sheet: 0, col: 1, row: 0 }, { sheet: 0, col: 2, row: 0 }] ``` ## Getting all precedents of a cell or a range To get all precedents of a cell or a range (all precedent nodes reachable from the cell node or the range node), use the [`getCellPrecedents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcellprecedents) method to implement a [Breadth-first search (BFS)](https://en.wikipedia.org/wiki/Breadth-first_search) algorithm:
    
      AllCellPrecedents={start}
      let Q be an empty queue
      Q.enqueue(start)
      while Q is not empty do
        cell := Q.dequeue()
        S := getCellPrecedents(cell)
        for all cells c in S do:
          if c is not in AllCellPrecedents then:
            insert w to AllCellPrecedents
            Q.enqueue(c)
    
  
## Getting all dependents of a cell or a range To get all dependents of a cell or a range (all dependent nodes reachable from the cell node or the range node), use the [`getCellDependents()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.html#getcelldependents) method to implement a [Breadth-first search (BFS)](https://en.wikipedia.org/wiki/Breadth-first_search) algorithm:
    
      AllCellDependents={start}
      let Q be an empty queue
      Q.enqueue(start)
      while Q is not empty do
        cell := Q.dequeue()
        S := getCellDependents(cell)
        for all cells c in S do:
          if c is not in AllCellDependents then:
            insert w to AllCellDependents
            Q.enqueue(c)
    
  
--- ## Internationalization features URL: https://hyperformula.handsontable.com/docs/guide/i18n-features # Internationalization features Configure HyperFormula to match the languages and regions of your users. **Contents:** ## Function names and errors Each of HyperFormula's [built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) and [errors](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md) is available in [18 languages](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md#list-of-supported-languages). You can easily [switch between languages](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md) ([`language`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#language)). When adding a [custom function](https://hyperformula.handsontable.com/docs/guide/custom-functions.md), you can define the function's [name](https://hyperformula.handsontable.com/docs/guide/custom-functions.md#_3-add-your-function-s-names) in every language that you support. To support more languages, add a [custom language pack](https://hyperformula.handsontable.com/docs/guide/localizing-functions.md). ## Date and time formats To match a region's calendar conventions, you can set multiple date formats ([`dateFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#dateformats)) and time formats ([`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats)). By default, HyperFormula uses the European date and time formats. [You can easily change them](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md#example). You can also add custom ways of [handling dates and times](https://hyperformula.handsontable.com/docs/guide/date-and-time-handling.md#custom-date-and-time-handling). ## Number format To match a region's number format, configure HyperFormula's decimal separator ([`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator)) and thousands separator ([`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator)). By default, HyperFormula uses the European number format (`1000000.00`): ```js decimalSeparator: '.', // set by default thousandSeparator: '', // set by default ``` To use the US number format (`1,000,000.00`), set: ```js decimalSeparator: '.', // set by default thousandSeparator: ',', ``` > In HyperFormula, both [`decimalSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#decimalseparator) and [`thousandSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#thousandseparator) must be different from [`functionArgSeparator`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#functionargseparator). > In some cases it might cause compatibility issues with other spreadsheets, e.g., [Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md#separators) or [Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md#separators). ## Currency symbol To match your users' currency, configure recognized currency symbols and (optionally) custom `TEXT` output formatting. Both sides are covered in the dedicated [Currency handling](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) guide. ## String comparison rules To make sure that language-sensitive strings are compared in line with your users' language (e.g., `Préservation` vs. `Preservation`), set HyperFormula's [string comparison rules](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md#comparing-strings) ([`localeLang`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#localelang)). The value of [`localeLang`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#localelang) is processed by [`Intl.Collator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator), a JavaScript standard object. The default setting is: ```js localeLang: 'en', // set by default ``` To set the `en-US` string comparison rules, set: ```js localeLang: 'en-US', ``` To further customize string comparison rules, use these options: - [`caseSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casesensitive) - [`accentSensitive`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#accentsensitive) - [`caseFirst`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#casefirst) - [`ignorePunctuation`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#ignorepunctuation) ## Compatibility with other spreadsheet software For information on compatibility with locale-dependent syntax in other spreadsheet software, see: - [Compatibility with Microsoft Excel](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md) - [Compatibility with Google Sheets](https://hyperformula.handsontable.com/docs/guide/compatibility-with-google-sheets.md) ## `en-US` configuration This configuration aligns HyperFormula with the `en-US` locale. Due to the configuration of [separators](#number-format), it might not be fully compatible with formulas coming from other spreadsheet software. ```js language: 'enUS', dateFormats: ['MM/DD/YYYY', 'MM/DD/YY', 'YYYY/MM/DD'], timeFormats: ['hh:mm', 'hh:mm:ss.sss'], // set by default decimalSeparator: '.', // set by default thousandSeparator: ',', functionArgSeparator: ';', // might cause incompatibility with other spreadsheets currencySymbol: ['$', 'USD'], localeLang: 'en-US', ``` ## `en-US` demo This demo shows HyperFormula configured for the `en-US` locale. --- ## Integration with LangChain/LangGraph URL: https://hyperformula.handsontable.com/docs/guide/integration-with-langchain # Integration with LangChain/LangGraph A [LangChain.js](https://js.langchain.com/) / [LangGraph](https://langchain-ai.github.io/langgraphjs/) tool that gives your agents deterministic spreadsheet and formula computation — backed by HyperFormula's Excel-compatible engine. > **Not available yet — coming soon** > > This integration is on our roadmap and **cannot be installed or used today**. The API shown below is a preview and may still change before the first release. > > If you'd like to try it, [join the early access list](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) — we'll ping you the moment the first beta is ready, and your sign-up directly tells us how strongly to prioritize this integration. ## What it does - **Evaluate formulas deterministically** — your agent runs any Excel-compatible formula through HyperFormula instead of asking the LLM to do math. Results are exact, reproducible, and auditable. - **Read and write cells and ranges** — the agent inspects, populates, or modifies sheet data through typed tool calls. - **Trace dependencies** — precedents and dependents are surfaced so the agent can explain how every value was derived. - **400+ built-in functions out of the box** — the agent has access to the full Excel-compatible function set (`SUM`, `VLOOKUP`, `IRR`, `INDEX/MATCH`, and the rest), no implementation work required. ## Example Wiring HyperFormula into a LangGraph ReAct agent: ```js import { ChatOpenAI } from '@langchain/openai'; import { createReactAgent } from '@langchain/langgraph/prebuilt'; import HyperFormula from 'hyperformula'; import { createSpreadsheetTools } from 'hyperformula/langchain'; const hf = HyperFormula.buildFromArray([ ['Revenue', 100], ['Cost', 60], ['Profit', '=B1-B2'], ]); const agent = createReactAgent({ llm: new ChatOpenAI({ model: 'gpt-4o' }), tools: createSpreadsheetTools(hf), }); await agent.invoke({ messages: [ { role: 'user', content: 'What drives the profit number, and what happens if revenue doubles?' }, ], }); ``` A single import, one entry in `tools`, and the agent can evaluate formulas, read ranges, and edit cells through LangChain — without inventing numbers. ## Use cases - **Explain the spreadsheet** — ask the agent what a workbook does, which cells are inputs, and how each output is derived; get answers grounded in real formula evaluation. - **What-if scenarios and forecasting** — the agent tweaks assumptions and reports how downstream results change, deterministically. - **Validate and clean data** — the agent scans ranges for errors, missing values, or inconsistencies and fixes them in place. - **Generate formulas from natural language** — the agent translates a plain-English calculation into a verified, working Excel formula. - **Financial modeling and reporting** — NPV, IRR, amortization, KPI rollups, and other quantitative workflows where the answer must be exact and auditable. ## Get early access > **Be the first to try it** > > We're actively building this integration. Drop your email and we'll notify you the moment the first beta lands — so you can try it before the public release. > > [Join the early access list →](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) ## Links - [LangChain.js documentation](https://js.langchain.com/) - [LangGraph documentation](https://langchain-ai.github.io/langgraphjs/) - [HyperFormula on GitHub](https://github.com/handsontable/hyperformula) - [HyperFormula on npm](https://www.npmjs.com/package/hyperformula) - [Built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) --- ## Integration with React URL: https://hyperformula.handsontable.com/docs/guide/integration-with-react # Integration with React The HyperFormula API is identical in a React app and in plain JavaScript. This guide demonstrates how HyperFormula is integrated with the React component tree and how its lifecycle maps to React hooks. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **TypeScript** > > All examples use TypeScript. Remove the type annotations to use plain JavaScript. ## Basic usage Hold the HyperFormula instance in a `useRef` so it survives re-renders. Initialize it inside `useEffect` and release it in the cleanup function. Use `useState` to toggle between raw formulas and computed values. ```tsx import { useEffect, useRef, useState } from 'react'; import { HyperFormula } from 'hyperformula'; import type { CellValue } from 'hyperformula'; export default function SpreadsheetComponent() { const hfRef = useRef(null); const [values, setValues] = useState([]); useEffect(() => { const hf = HyperFormula.buildFromArray( [ [1, 2, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); hfRef.current = hf; return () => { hf.destroy(); hfRef.current = null; }; }, []); function runCalculations() { if (!hfRef.current) return; setValues(hfRef.current.getSheetValues(0)); } function reset() { setValues([]); } return ( <> {values.length > 0 && ( {values.map((row, r) => ( {row.map((cell, c) => ( ))} ))}
{String(cell ?? '')}
)} ); } ``` ## `React.StrictMode` double invocation In development, React runs effects twice (mount → unmount → mount) to surface cleanup bugs. The pattern above is correct for StrictMode because `destroy()` runs before the re-mount creates a new instance, so no work leaks between the two lifecycles. Do not switch to a module-scoped singleton as a workaround — it will break StrictMode semantics. ## Server-side rendering (Next.js App Router) The component above is already SSR-safe — the engine is constructed in `useEffect`, which never runs on the server. If you still want to keep HyperFormula out of the initial JS bundle sent to the browser (it is a few hundred kB), wrap it in a client-only dynamic import. In the App Router, `dynamic(..., { ssr: false })` is only allowed inside a client component. Put the dynamic call in a `'use client'` wrapper and import the wrapper from your server page: ```tsx // app/spreadsheet/SpreadsheetLazy.tsx 'use client'; import dynamic from 'next/dynamic'; const SpreadsheetComponent = dynamic( () => import('./SpreadsheetComponent'), { ssr: false } ); export default function SpreadsheetLazy() { return ; } ``` ```tsx // app/spreadsheet/page.tsx ← server component, no 'use client' import SpreadsheetLazy from './SpreadsheetLazy'; export default function Page() { return ; } ``` In the Pages Router, the same `dynamic(..., { ssr: false })` call works directly in the page file without a wrapper. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [React demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/react-demo?v=). --- ## Integration with Svelte URL: https://hyperformula.handsontable.com/docs/guide/integration-with-svelte # Integration with Svelte The HyperFormula API is identical in a Svelte app and in plain JavaScript. This guide demonstrates how HyperFormula integrates with the Svelte component's lifecycle and how you bridge its values into Svelte's reactivity. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **SvelteKit SSR** > > The primary snippet below assumes a browser environment. If you use SvelteKit with default SSR, skip to [Server-side rendering](#server-side-rendering-sveltekit) — `HyperFormula.buildFromArray` at ` {#if result !== null}

Result: {result}

{/if} {#each data as row, r} {#each row as cell, c} {/each} {/each}
{#if hf.doesCellHaveFormula({ sheet: sheetId, row: r, col: c })} {hf.getCellFormula({ sheet: sheetId, row: r, col: c })} {:else} {hf.getCellValue({ sheet: sheetId, row: r, col: c })} {/if}
``` ## Server-side rendering (SvelteKit) In SvelteKit, top-level statements in ` {#if result !== null}

Result: {result}

{/if} ``` ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Svelte demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/svelte-demo?v=). --- ## File import URL: https://hyperformula.handsontable.com/docs/guide/file-import # File import Import XLSX and CSV files into HyperFormula. ## Overview HyperFormula has no built-in file import functionality. But its [factory methods](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#factories) use standard JavaScript data types, for easy integration with any way of importing data. ## Import CSV files To import CSV files, use a third-party [CSV parser](https://www.npmjs.com/search?q=csv) (e.g., [PapaParse](https://www.npmjs.com/package/papaparse) or [csv-parse](https://www.npmjs.com/package/csv-parse)). Then pass the result to HyperFormula as a JavaScript array. ## Import XLSX files To import XLSX files, use a third-party [XLSX parser](https://www.npmjs.com/search?q=xlsx) (e.g., [ExcelJS](https://www.npmjs.com/package/exceljs) or [xlsx](https://www.npmjs.com/package/xlsx)). Then pass the result to HyperFormula as a JavaScript array. ### Example: Import XLSX files in Node This example uses [ExcelJS](https://www.npmjs.com/package/exceljs) to import XLSX files into HyperFormula. See full example on [GitHub](https://github.com/handsontable/hyperformula-demos/tree/3.1.x/read-excel-file). ```js const ExcelJS = require('exceljs'); const { HyperFormula } = require('hyperformula'); async function run(filename) { const xlsxWorkbook = await readXlsxWorkbookFromFile(filename); const sheetsAsJavascriptArrays = convertXlsxWorkbookToJavascriptArrays(xlsxWorkbook) const hf = HyperFormula.buildFromSheets(sheetsAsJavascriptArrays, { licenseKey: 'gpl-v3' }); console.log('Formulas:', hf.getSheetSerialized(0)); console.log('Values: ', hf.getSheetValues(0)); } async function readXlsxWorkbookFromFile(filename) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(filename); return workbook; } function convertXlsxWorkbookToJavascriptArrays(workbook) { const workbookData = {}; workbook.eachSheet((worksheet) => { const sheetDimensions = worksheet.dimensions const sheetData = []; for (let rowNum = sheetDimensions.top; rowNum <= sheetDimensions.bottom; rowNum++) { const rowData = []; for (let colNum = sheetDimensions.left; colNum <= sheetDimensions.right; colNum++) { const cell = worksheet.getCell(rowNum, colNum) const cellData = cell.formula ? `=${cell.formula}` : cell.value; rowData.push(cellData); } sheetData.push(rowData); } workbookData[worksheet.name] = sheetData; }) return workbookData; } run('sample_file.xlsx'); ``` --- ## Integration with Vue URL: https://hyperformula.handsontable.com/docs/guide/integration-with-vue # Integration with Vue The HyperFormula API is identical in a Vue 3 app and in plain JavaScript. This guide demonstrates how HyperFormula integrates with the Vue reactivity system and how to surface its values in the template. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. > **TypeScript** > > All examples use TypeScript. Remove the type annotations to use plain JavaScript. ## Basic usage Pass the HyperFormula instance through Vue's [`markRaw`](https://vuejs.org/api/reactivity-advanced.html#markraw) to opt it out of the reactivity system (see [Troubleshooting](#vue-reactivity-issues) below for why this matters). Hold derived data in `ref` so the template updates when you reassign the ref's `.value`. ```vue ``` `hf` is marked raw so Vue never proxies it — `values` is the only reactive piece. To mutate data, call any HyperFormula method (e.g. `setCellContents`) then reassign `values.value` to trigger a re-render. See [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) for the full mutation API. ## Server-side rendering (Nuxt) HyperFormula has no browser-only API dependency. To skip server-side computation, wrap the component with ``. ## Troubleshooting ### Vue reactivity issues If you encounter an error like ``` Uncaught TypeError: Cannot read properties of undefined (reading 'licenseKeyValidityState') ``` it means that Vue's reactivity system tried to deeply observe the HyperFormula instance. Vue wraps reactive objects in a `Proxy` that intercepts every property access; when that proxy reaches a non-trivial instance with its own internal state, identity checks and lazy-initialized maps break. The fix is to opt the instance out of reactivity with [`markRaw`](https://vuejs.org/api/reactivity-advanced.html#markraw): ```typescript import { markRaw } from "vue"; import { HyperFormula } from "hyperformula"; const hf = markRaw( HyperFormula.buildEmpty({ licenseKey: "gpl-v3", }), ); ``` `shallowRef` is not a substitute: it skips proxying only at the top level, so writing the instance into a nested reactive structure (Pinia state, `reactive({...})`) will still wrap it. Always pass the instance itself through `markRaw` before putting it anywhere Vue can reach. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Vue 3 demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/vue-3-demo?v=). > This demo uses the [Vue 3](https://v3.vuejs.org/) framework. If you are looking for an example using Vue 2, check out the [code on GitHub](https://github.com/handsontable/hyperformula-demos/tree/2.5.x/vue-demo). --- ## Integration with Angular URL: https://hyperformula.handsontable.com/docs/guide/integration-with-angular # Integration with Angular The HyperFormula API is identical in an Angular app and in plain JavaScript. This guide demonstrates how HyperFormula is integrated with an Angular app (typically as an injectable service), how it is cleaned up, and how you bridge its values into the change-detection cycle. Install with `npm install hyperformula`. For other options, see the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) section. ## Basic usage (modern Angular) For modern Angular (v20+) we recommend a service that exposes a **signal**, **standalone** components, the new control flow (`@if` / `@for`) and **zoneless** change detection. Wrap the engine in an `@Injectable` service and expose its values as a read-only signal; the template reads the signal directly and Angular refreshes the view whenever it changes. ```typescript // spreadsheet.service.ts import { Injectable, signal } from '@angular/core'; import { HyperFormula, type CellValue } from 'hyperformula'; @Injectable({ providedIn: 'root' }) export class SpreadsheetService { private readonly hf: HyperFormula; private readonly _values = signal([]); readonly values = this._values.asReadonly(); constructor() { this.hf = HyperFormula.buildFromArray( [ [1, 4, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); this._values.set(this.hf.getSheetValues(0)); } calculate() { this._values.set(this.hf.getSheetValues(0)); } reset() { this._values.set([]); } } ``` Inject the service with `inject()`, expose its signal, and use `OnPush` change detection: ```typescript // spreadsheet.component.ts import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { SpreadsheetService } from './spreadsheet.service'; @Component({ selector: 'app-spreadsheet', templateUrl: './spreadsheet.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class SpreadsheetComponent { private readonly spreadsheetService = inject(SpreadsheetService); readonly values = this.spreadsheetService.values; runCalculations() { this.spreadsheetService.calculate(); } reset() { this.spreadsheetService.reset(); } } ``` Read the signal in the template with the new control flow: ```html @if (values().length) { @for (row of values(); track $index) { @for (cell of row; track $index) { } }
{{ cell }}
} ``` Bootstrap the app with zoneless change detection: ```typescript // main.ts import { provideZonelessChangeDetection } from '@angular/core'; import { bootstrapApplication } from '@angular/platform-browser'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, { providers: [provideZonelessChangeDetection()], }).catch((err) => console.error(err)); ``` > Signals require Angular 16+, the new control flow Angular 17+, and `provideZonelessChangeDetection` Angular 20+. For earlier versions, use the `BehaviorSubject` approach below. ## Basic usage (older Angular versions) For broader compatibility — including Angular versions without signals or zoneless change detection — wrap the engine in an `@Injectable` service backed by a `BehaviorSubject`. Components subscribe to the observable with the `async` pipe, which handles subscription cleanup automatically. ```typescript // spreadsheet.service.ts import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { HyperFormula, type CellValue } from 'hyperformula'; @Injectable({ providedIn: 'root' }) export class SpreadsheetService { private readonly hf: HyperFormula; private readonly _values = new BehaviorSubject([]); readonly values$ = this._values.asObservable(); constructor() { this.hf = HyperFormula.buildFromArray( [ [1, 4, '=A1+B1'], // your data rows go here ], { licenseKey: 'gpl-v3', // more configuration options go here } ); this._values.next(this.hf.getSheetValues(0)); } calculate() { this._values.next(this.hf.getSheetValues(0)); } reset() { this._values.next([]); } } ``` Consume the service from a component and bind `values$ | async` in the template. The component below is **standalone** (the default since Angular 17) and imports `CommonModule` directly, so it works without an `NgModule`. The structural directives `*ngIf` / `*ngFor` and the `async` pipe all come from `CommonModule`: ```typescript // spreadsheet.component.ts import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { Observable } from 'rxjs'; import { SpreadsheetService } from './spreadsheet.service'; import { type CellValue } from 'hyperformula'; @Component({ selector: 'app-spreadsheet', standalone: true, imports: [CommonModule], templateUrl: './spreadsheet.component.html', }) export class SpreadsheetComponent { values$: Observable; constructor(private spreadsheetService: SpreadsheetService) { this.values$ = this.spreadsheetService.values$; } runCalculations() { this.spreadsheetService.calculate(); } reset() { this.spreadsheetService.reset(); } } ``` ```html
{{ cell }}
``` ### `NgModule`-based apps (Angular 13 and older) Standalone components require Angular 14 or newer. If your project still uses `NgModule`s (or targets Angular 13 or older), drop the `standalone: true` and `imports` fields from the component above, then declare it in your module and import `CommonModule` there instead: ```typescript // app.module.ts @NgModule({ declarations: [SpreadsheetComponent], imports: [BrowserModule, CommonModule], }) export class AppModule {} ``` The service and template above are unchanged — only the way the component is wired up differs. ## Notes ### Provider scope The notes below apply to both the modern and older approaches — provider scope and cleanup depend on how the service is registered, not on whether it exposes a signal or a `BehaviorSubject`. `providedIn: 'root'` makes the service an application-wide singleton — suitable when a single HyperFormula instance is shared across the app. For per-feature or per-component instances (for example, several independent reports on one screen), provide the service at the component level via `providers: [SpreadsheetService]`; the service is then created and destroyed alongside the component. ### Cleanup Root-scoped services live for the application's full lifetime — `ngOnDestroy` fires only at app shutdown. If you scope the service to a component (`providers: [SpreadsheetService]`), implement `OnDestroy` to release the engine: ```typescript import { Injectable, OnDestroy } from '@angular/core'; @Injectable() export class SpreadsheetService implements OnDestroy { // ... ngOnDestroy() { this.hf.destroy(); } } ``` ## Server-side rendering (Angular Universal) The service above is already SSR-safe — HyperFormula has no browser-only API dependency. To skip the (otherwise wasted) server-side instantiation in Angular Universal, gate the engine init with [`isPlatformBrowser`](https://angular.dev/api/common/isPlatformBrowser) from `@angular/common`. ## Next steps - [Configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) — full list of `buildFromArray` / `buildEmpty` options - [Basic operations](https://hyperformula.handsontable.com/docs/guide/basic-operations.md) — CRUD on cells, rows, columns, sheets - [Advanced usage](https://hyperformula.handsontable.com/docs/guide/advanced-usage.md) — multi-sheet workbooks, named expressions - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) — register your own formulas ## Demo For a more advanced example, check out the [Angular demo on Stackblitz](https://stackblitz.com/github/handsontable/hyperformula-demos/tree/3.3.x/angular-demo?v=). --- ## Key concepts URL: https://hyperformula.handsontable.com/docs/guide/key-concepts # Key concepts ## High-level design diagram ![](https://hyperformula.handsontable.com/docs/hf-high-lvl-diagram.svg) Data processing consists of three phases. ## Phase 1. Parsing and construction of ASTs Formulas need to be parsed and represented as a so-called [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST). For example, the AST for `7*3-SIN(A5)` will look similar to this graph: ![](https://hyperformula.handsontable.com/docs/ast.png) ## Phase 2. Construction of the dependency graph HyperFormula needs to understand the relationship between cells and find the right order of processing them. For example, for a sample formula `C1=A1+B1`, it needs to process first `A1` and `B1` and then `C1`. Such an order of processing cells - also known as [topological order](https://en.wikipedia.org/wiki/Topological_sorting) exists if and only if there is no cycle in the dependency graph. There can be many such orders, like so: ![](https://hyperformula.handsontable.com/docs/topsort.png) Read more about the [dependency graph](https://hyperformula.handsontable.com/docs/guide/dependency-graph.md). ## Phase 3. Evaluation It is crucial to evaluate cells efficiently. For simple expressions, there is not much room for maneuver, but spreadsheet-like data sets definitely need more attention. ![](https://hyperformula.handsontable.com/docs/sample-sheet.png) ## Grammar For parsing purposes, the library uses the [Chevrotain](http://sap.github.io/chevrotain/docs/) parser, which turns out to be more efficient than popular [Jison](https://zaa.ch/jison/). The language of acceptable formulas is described with an LL(k) grammar using Chevrotain Domain Specific Language. See details of the grammar in the [FormulaParser](https://github.com/handsontable/hyperformula/blob/master/src/parser/FormulaParser.ts) file. ## Repetitive ASTs A first natural optimization could concern cells in a spreadsheet which store exactly the same formulas. For such cells, there is no point in constructing and storing two ASTs which would be the same in the end. Instead, HyperFormula can look up the particular formula that has already been parsed and reuse the constructed AST. A scenario with repeating formulas is somewhat idealized; in practice, most formulas will be distinct. Fortunately, formulas in spreadsheets usually have a defined structure and share some patterns. Neighboring cells often contain similar formulas, especially after filling cells using a fill handle (that little square in the bottom right corner of a visual cell representation). For example: * `B2=A2-C2+B1` * `B3=A3-C3+B2` * `B4=A4-C4+B3` * `B5=A5-C5+B4` * and so on... Although the exact ASTs for these formulas are different, they share a common pattern. A very useful approach here is to rewrite a formula using relative addressing of cells. ## Relative addressing HyperFormula stores the offset to the referenced formula. For example `B2=B5 + C1` can be rewritten as `B2=[B+0][2+3] + [B+1][2-1]` or in short `B2=[0][+3] + [+1][-1]`. Then, the above example with `B2,B3`, and `B4` can be rewritten as `B2=B3=B4=[-1][0] - [1][0] + [0][-1]`. Now the three cells have exactly the same formulas. By using relative addressing HyperFormula unifies formulas from many cells. Thanks to that, there is no need to parse them all over again. Also, with this approach, the engine doesn't lose any information because by knowing the absolute address of a cell and its formula with relative addresses, it can easily retrieve the absolute addresses and compute the result. ## Laziness of CRUD operations After each CRUD operation, like adding a row or column or moving cells, references inside formulas may need to be changed. For example, after adding a row, we need to shift all references in the formulas below like so: ![](https://hyperformula.handsontable.com/docs/crud-operations.png) In more complex sheets this can lead to similar transformations in many formulas at once. On the other hand, such operations do not require an immediate transformation of all the affected formulas. Instead of transforming all of them at once, HyperFormula remembers the history of the operations and postpones the transformations until the formula needs to be displayed or recalculated. --- ## Known limitations URL: https://hyperformula.handsontable.com/docs/guide/known-limitations # Known limitations This page lists the known limitations of HyperFormula at its current development stage: * Node.js versions older than 13 don't properly compare culture-insensitive strings. HyperFormula requires the full International Components for Unicode (ICU) to be supported. [Learn more](https://nodejs.org/api/intl.html#intl_embed_the_entire_icu_full_icu) * Multiple workbooks are not supported. One instance of HyperFormula can handle only one workbook with multiple worksheets at a time. * For cycle detection, all possible dependencies between cells are taken into account, even if some of them could be omitted after the full evaluation of expressions and condition statements. The most prominent example of this behavior is the "IF" function which returns a cycle error regardless of whether TRUE or FALSE causes a circular reference. * Named ranges behave differently depending on where they are used in a formula. For details, see [Using named ranges in formulas](https://hyperformula.handsontable.com/docs/guide/named-expressions.md#using-named-ranges-in-formulas). * [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) don't automatically recalculate the size of their [result arrays](https://hyperformula.handsontable.com/docs/guide/custom-functions.md#return-an-array-of-data) when the formula dependencies change. * There is no relative referencing in named ranges. * The library doesn't offer (at least not yet) the following features: * 3D references * Constant arrays * Dynamic arrays * Asynchronous functions * Structured references ("Tables") * Relative named expressions * Functions cannot use UI metadata (e.g., hidden rows for SUBTOTAL). ## Nuances of the implemented functions * HyperFormula immediately instantiates references to single cells to their values, instead of treating them as 1-length ranges, which slightly changes the behavior of some functions (e.g., NPV). * SUBTOTAL function does not ignore nested subtotals. * CHISQ.INV, CHISQ.INV.RT, CHISQ.DIST.RT, CHIDIST, CHIINV and CHISQ.DIST (CHISQ.DIST in CDF mode): Running time grows linearly with the value of the second parameter, degrees_of_freedom (slow for values>1e7). * GAMMA.DIST, GAMMA.INV, GAMMADIST, GAMMAINV (GAMMA.DIST and GAMMADIST in CDF mode): Running time grows linearly with the value of the second parameter, alpha (slow for values>1e7). * For certain inputs, the RATE function might have no solutions, or have multiple solutions. Our implementation uses an iterative algorithm (Newton's method) to find an approximation for one of the solutions to within 1e-7. If the approximation is not found after 50 iterations, the RATE function returns the `#NUM!` error. * The INDEX function doesn't support returning whole rows or columns of the source range – it always returns the contents of a single cell. * The FILTER function accepts either single rows of equal width or single columns of equal height. In other words, all arrays passed to the FILTER function must have equal dimensions, and at least one of those dimensions must be 1. * Array-producing functions (e.g., SEQUENCE, FILTER) require their output dimensions to be determinable at parse time. Passing cell references or formulas as dimension arguments (e.g., `=SEQUENCE(A1)`) results in a `#VALUE!` error, because the output size cannot be resolved before evaluation. * The TEXT function does not accept embedded double-quote literals in the format string. In Excel, `""` inside a format string is an escape sequence for a literal `"` character — e.g. `=TEXT(1234.5, "#,##0.00 ""zł""")` returns `"1,234.50 zł"`. If your application requires this escape sequence, supply a custom [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) callback. ### UNIQUE function * Comparison of values follows HyperFormula's own equality rules, which honor the `caseSensitive` and `accentSensitive` configuration options. By default comparison is case-insensitive. * When `ExactlyOnce` is TRUE and no row or column occurs exactly once, `UNIQUE` returns a `#N/A` error (the result would otherwise be empty). ### SORT function * The `SortIndex` argument accepts a single key only. Multi-key sorting through an array constant (for example `=SORT(A1:B9, {1,2})`) is not supported; sort by one column or row at a time. * The `SortOrder` argument must be exactly `1` (ascending) or `-1` (descending). Any other value returns a `#VALUE!` error. * Ordering (including mixed types, empty cells, and text collation) follows HyperFormula's own comparison rules, which honor the `caseSensitive` and `accentSensitive` configuration options. Numbers sort before text, and text before logical values. ### OFFSET function HyperFormula resolves the OFFSET function at parse time rather than during evaluation. The parser inspects the arguments and rewrites the expression into a plain cell reference or range. This keeps the dependency graph accurate but imposes several restrictions. * The first argument must be a reference to a single cell. Passing a range causes the cell to store a parser error (the API call itself does not throw — read the error via `getCellValue`). ```js // Cell A1 stores a parser error — the first argument must be a single cell, not a range hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1:B1, 0, 0)'); ``` * The row-shift, column-shift, height, and width arguments must be static integer literals known at parse time. Cell references and formulas passed as shift or size arguments cause the cell to store a parser error. ```js // Cell A1 stores a parser error — the row-shift argument must be a static integer literal hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1, C3, 0)'); ``` * The height and width arguments must be bare positive integer literals (the parser accepts only `NUMBER` AST nodes). Unary `+` prefixes, parenthesised expressions, values less than 1, and non-integer values are rejected at parse time. * When the computed target falls outside the sheet, the parser stores a `#REF!` error in the cell at parse time (rather than during evaluation) with the message *Resulting reference is out of the sheet*. ```js // Cell A1 stores #REF! hf.setCellContents({ sheet: 0, row: 0, col: 0 }, '=OFFSET(A1, -1, 0)'); ``` * OFFSET is resolved at parse time, so `getCellFormula` returns the computed reference, not the original `OFFSET` call. ```js const hf = HyperFormula.buildFromArray([[1, 45, '=OFFSET(A1, 0, 1)']]); hf.getCellFormula({ sheet: 0, row: 0, col: 2 }); // '=B1' ``` --- ## License key URL: https://hyperformula.handsontable.com/docs/guide/license-key # License key To use HyperFormula, you need to specify which [license type](https://hyperformula.handsontable.com/docs/guide/licensing.md#available-licenses) you use, by entering a license key in your [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). ## GPLv3 license If you use HyperFormula under [GNU General Public License v3.0](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt) (GPLv3), in your [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md), assign the mandatory `licenseKey` property to a string, `gpl-v3`: ```js const options = { licenseKey: 'gpl-v3', //... other options } ``` ## Proprietary license To use HyperFormula under a [proprietary license](https://hyperformula.handsontable.com/docs/guide/licensing.md#proprietary-license), follow these steps: 1. Contact our [Sales Team](https://hyperformula.handsontable.com/docs/guide/licensing.md#proprietary-license) to purchase a proprietary license. 2. Our Sales Team sends you your proprietary license key. 3. In your [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md), assign the mandatory `licenseKey` property to your proprietary license key: ```js const options = { // replace xxxx-xxxx-xxxx-xxxx-xxxx with your proprietary license key: licenseKey: 'xxxx-xxxx-xxxx-xxxx-xxxx', //... other options } ``` ### Proprietary license key validation > HyperFormula doesn't use an internet connection to validate your proprietary license key. To determine whether a user is still entitled to use a particular version of the software, HyperFormula compares the time between two dates: * The HyperFormula build date * The date in your proprietary license key This process doesn't require any connection to the server. ## License key notifications If your license key is missing, invalid, or expired, you see a corresponding notification in the console. ## License key support If you have any issues with your license key, [contact our team](https://hyperformula.handsontable.com/docs/guide/contact.md). --- ## List of differences with other spreadsheets URL: https://hyperformula.handsontable.com/docs/guide/list-of-differences # List of differences with other spreadsheets
See a full list of differences between HyperFormula, Microsoft Excel, and Google Sheets. **Contents:** ## General functionalities | Functionality | Examples | HyperFormula | Google Sheets | Microsoft Excel | |----------------------------------------------------|---------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------| | Dependency collection | A1:=IF(FALSE(), A1, 0)

ISREF(A1) | Dependencies are collected during the parsing phase, which finds cycles that wouldn't appear in the evaluation.

`CYCLE` error for both examples. | Dependencies are collected during evaluation.

`0` for both examples. | Same as Google Sheets. | | Named expressions and named ranges | SALARY:=$A$10 COST:=10*$B$5+100
PROFIT:=SALARY-COST
A1:=SALARY-COST | Only absolute addresses are allowed
(e.g., SALARY:= $A$10).

Named expressions can be global or scoped to one sheet only.

They can contain other named expressions. | Named expressions are not available.

Named ranges can be used to create aliases for addresses and ranges. | Named ranges and scoped named expressions are available. | | Named expression names | ProductPrice1:=42 | A name must be distinctive from a cell reference (case-insensitive), so `ProductPrice1` is invalid. See [complete naming rules](https://hyperformula.handsontable.com/docs/guide/named-expressions.md#name-rules). | A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so `ProductPrice1` is valid. | A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so `ProductPrice1` is valid. | | Applying a scalar value to a function taking range | COLUMNS(A1) | `CellRangeExpected` error. | Treats the element as length-1 range. Returns 1 for the example. | Same as Google Sheets. | | Coercion of explicit arguments | VARP(2, 3, 4, TRUE(), FALSE(), "1",) | 1.9592, based on the behavior of Microsoft Excel. | GoogleSheets implementation is not consistent with the standard (see also `VAR.S`, `STDEV.P`, and `STDEV.S` function.) | 1.9592 | | Ranges created with `:` | A1:A2

A$1:$A$2

A:C

1:2

Sheet1!A1:A2 | Allowed ranges consist of two addresses (A1:B5), columns (A:C) or rows (3:5).
They cannot be mixed or contain named expressions. | Everything allowed. | Same as Google Sheets. | | Formatting inside the TEXT function | TEXT(A1,"dd-mm-yy")

TEXT(A1,"###.###”) | To support all date, time and currency formats, set [`stringifyDateTime`](https://hyperformula.handsontable.com/docs/guide/compatibility-with-microsoft-excel.md#date-and-time-formats) and [`stringifyCurrency`](https://hyperformula.handsontable.com/docs/guide/currency-handling.md) configuration options. | A wide variety of options for string formatting is supported. | Same as Google Sheets. | | Cell references inside inline arrays | ={A1, A2} | The array's value is calculated but not updated when the cells' values change. | The array's value is calculated and updated when the cells' values change. | ERROR: invalid array | | SPLIT function | =SPLIT("Lorem ipsum dolor", 0) | This function works differently from Google Sheets version but should be sufficient to achieve the same functionality in most scenarios. Read SPLIT function description on [the Built-in Functions page](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#text). | Different syntax and return value. | No such function. | | DATEVALUE function | =DATEVALUE("25/02/1991") | Type of the returned value: `CellValueDetailedType.NUMBER_DATE` (compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard) | Cell auto-formatted as **regular number** | Cell auto-formatted as **regular number** | | TIMEVALUE function | =TIMEVALUE("14:31") | Type of the returned value: `CellValueDetailedType.NUMBER_TIME` (compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard) | Cell auto-formatted as **regular number** | Cell auto-formatted as **regular number** | | EDATE function | =EDATE(DATE(2019, 7, 31), 1) | Type of the returned value: `CellValueDetailedType.NUMBER_DATE`. This is non-compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. | Cell auto-formatted as **date** | Cell auto-formatted as **regular number** | | EOMONTH function | =EOMONTH(DATE(2019, 7, 31), 1) | Type of the returned value: `CellValueDetailedType.NUMBER_DATE`. This is non-compliant with the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. | Cell auto-formatted as **date** | Cell auto-formatted as **regular number** | | Empty cells in lookup search | =XLOOKUP(3, A1:A4, A1:A4, "NF", 0, 2)
where A1:A4 = 1, 2, (empty), 3 | Empty cells are skipped during the search. A value that is present is found even when it sits past an interspersed empty cell (exact match is gap-independent), and approximate `MATCH`/`VLOOKUP`/`HLOOKUP`/`XLOOKUP` skip empty cells — but not empty strings — when finding the lower/upper bound. Returns `3`. On an all-empty range in a binary search mode, HyperFormula returns the `if_not_found` result (never row 1). | Skips empty cells in approximate search (parity with HyperFormula). | With binary search modes (`search_mode` ±2), a range with interspersed empty cells is not strictly sorted; per Excel's documentation the result may be invalid, so a value past an empty cell is not reliably found. On an all-empty range in a binary mode, Excel returns the first row's value. | ## Built-in functions Some built-in functions are implemented differently than in Google Sheets or Microsoft Excel. To remove the differences, create [custom implementations](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) of those functions. | Function | Example | HyperFormula | Google Sheets | Microsoft Excel | |---------------|----------------------------------------------------------------|-------------:|--------------:|----------------:| | TBILLEQ | =TBILLEQ(0, 180, 1.9) | 38.5278 | NUM | NUM | | TBILLEQ | =TBILLEQ(0, 180, 2) | 0.0000 | NUM | 0.0000 | | TBILLEQ | =TBILLEQ("1/2/2000", "31/1/2001", 0.1) | 0.1128 | VALUE | VALUE | | TBILLEQ | =TBILLEQ(0, 360, 0.1) | 0.1127 | 0.1097 | 0.1097 | | TBILLEQ | =TBILLEQ(0, 365, 0.1) | 0.1128 | 0.1098 | 0.1098 | | GCD | =GCD(1000000000000000000.0) | NUM | 1E+18 | NUM | | COMBIN | =COMBIN(1030, 0) | NUM | NUM | 1.0000 | | RRI | =RRI(1, -1, -1) | 0.0000 | NUM | 0.0000 | | DAYS | =DAYS(-1, 0) | NUM | -1.0000 | NUM | | DAYS | =DAYS(0, -1) | NUM | 1.0000 | NUM | | DATEDIF | =DATEDIF(-1, 0, "Y") | NUM | 0.0000 | NUM | | RATE | =RATE(12, -100, 400, 0, 1) | -1.0000 | NUM | NUM | | PV | =PV(-1, 0, 100, 400) | NUM | -400 | NUM | | LCMP | =LCM(1000000, 1000001, 1000002, 1000003) | NUM | 5.00003E+23 | NUM | | TBILLPRICE | =TBILLPRICE(0, 180, 1.9) | 5.0000 | NUM | 5.0000 | | TBILLPRICE | =TBILLPRICE(0, 180, 2) | 0.0000 | NUM | 0.0000 | | NPV | =NPV(1, TRUE(), 1) | 0.7500 | 0.5000 | 0.7500 | | NPV | =NPV(1,B1) where B1 = true | 0.5000 | 0.0000 | 0.0000 | | POISSON.DIST | =POISSON.DIST(-0.01, 0, FALSE()) | NUM | 1.0000 | NUM | | POISSON.DIST | =POISSON.DIST(0, -0.01, FALSE()) | NUM | NUM | 1.0101 | | DB | =DB(1000000, 100000, 6, 7, 7) | 15845.1000 | NUM | 15845.0985 | | BETA.DIST | =BETA.DIST(1, 2, 3) | N/A | 1.0000 | NUM | | BETA.DIST | =BETA.DIST(0, 1, 1, FALSE()) | NUM | 0.0000 | NUM | | BETA.DIST | =BETA.DIST(0.6, 1, 1, FALSE(), 0.6, 0.7) | NUM | 0.0000 | 0.0000 | | BETA.DIST | =BETA.DIST(0.7, 1, 1, FALSE(), 0.6, 0.7) | NUM | 0.0000 | 0.0000 | | GAMMA | =GAMMA(-2.5) | -0.9453 | NUM | -0.9453 | | BINOM.DIST | =BINOM.DIST(0.5, 0.4, 1, FALSE()) | N/A | NUM | 1.0000 | | NEGBINOM.DIST | =NEGBINOM.DIST(0, 1, 0, FALSE()) | 0.0000 | N/A | NUM | | NEGBINOM.DIST | =NEGBINOM.DIST(0, 1, 1, FALSE()) | 1.0000 | N/A | NUM | | T.INV | =T.INV(0, 1) | NUM | NUM | DIV/0 | | BETA.INV | =BETA.INV(1, 1, 1) | 1.0000 | 1.0000 | NUM | | WEIBULL.DIST | =WEIBULL.DIST(0, 1, 1, FALSE()) | 1.0000 | 1.0000 | 0.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(12.1, 12, 20, 40, TRUE()) | NUM | N/A | 1.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(12.1, 20, 12, 40, TRUE()) | NUM | N/A | 1.0000 | | HYPGEOM.DIST | =HYPGEOM.DIST(1, 2, 3, 4) | N/A | 0.5000 | NUM | | HYPGEOM.DIST | =HYPGEOM.DIST(4, 12, 20, 40, TRUE()) | 0.1504 | N/A | 0.1504 | | TDIST | =TDIST(0, 1, 1.5) | NUM | 0.5000 | 0.5000 | | T.INV.2T | =T.INV.2T(0, 1) | NUM | NUM | DIV/0 | | T.DIST | =T.DIST(1, 0.9, FALSE()) | NUM | NUM | DIV/0 | | AVEDEV | =AVEDEV(TRUE(), FALSE()) | 0.4444 | 0.0000 | 0.4444 | | LARGE | =LARGE(TRUE(), 1) | NUM | NUM | 1.0000 | | COUNTA | =COUNTA(1,) | 2.0000 | 1.0000 | 2.0000 | | XNPV | =XNPV(-0.9, A2:D2, A3:D3)
where 2nd and 3rd row: 1, 2, 3, 4 | 10.1272 | 10.12716959 | NUM | | SKEW | =SKEW(TRUE(), FALSE()) | 1.7321 | DIV/0 | 1.7321 | | HARMEAN | =HARMEAN(TRUE(), "4") | 1.6000 | 4.0000 | 1.6000 | | GEOMEAN | =GEOMEAN(TRUE(), "4") | 2.0000 | 4.0000 | 2.0000 | | CHISQ.TEST | =CHISQ.TEST(A1:C2, A1:F1) | N/A | N/A | DIV/0 | | BINOM.INV | =BINOM.INV(1, 0.8, 0.2) | 0.0000 | 1.0000 | 1.0000 | | BINOM.INV | =BINOM.INV(-0.001, 0.5, 0.5) | NUM | 0.0000 | NUM | | BINOM.INV | =BINOM.INV(10, 0, 0.5) | 0.0000 | NUM | NUM | | BINOM.INV | =BINOM.INV(10, 1, 0.5) | 10.0000 | NUM | NUM | | DEVSQ | =DEVSQ(A2, A3) | 0.0000 | 0.0000 | NUM | | NORMSDIST | =NORMSDIST(0, TRUE()) | 0.5 | Wrong number | Wrong number | | ADDRESS | =ADDRESS(1,1,4, TRUE(), "") | !A1 | ''!A1 | !A1 | | SEQUENCE | =SEQUENCE(0) | VALUE | N/A | CALC | | INT | =INT(-8.9) | -8 | -9 | -9 | | MOD | =MOD(-10, 3) | -1 | 2 | 2 | | ISEVEN | =ISEVEN(2.5) | FALSE | TRUE | TRUE | | ISODD | =ISODD(3.5) | FALSE | TRUE | TRUE | | CEILING.MATH | =CEILING.MATH(-4.3, 2, 2) | -4 | -6 | -6 | | FLOOR.MATH | =FLOOR.MATH(-4.7, 2, 2) | -6 | -4 | -4 | A few of the rows above share a root cause worth stating once: - **Rounding toward zero, not down.** `INT` discards the fractional part rather than rounding toward negative infinity, so it differs from Excel and Google Sheets for negative input only. `ROUNDDOWN`/`ROUNDUP` are unaffected — they are defined in terms of zero in all three. - **`MOD` takes the sign of the dividend.** Excel and Google Sheets return a result with the sign of the *divisor*. - **`ISEVEN`/`ISODD` do not truncate.** They test the remainder of the value as given, so a value with a fractional part returns `FALSE` from *both*. Excel and Google Sheets truncate to an integer first, so exactly one of the two is always `TRUE`. - **`CEILING.MATH`/`FLOOR.MATH` honour only `mode` = 1.** Excel and Google Sheets switch the negative-number rounding direction for any non-zero `mode`. --- ## Licensing URL: https://hyperformula.handsontable.com/docs/guide/licensing # Licensing To make HyperFormula a better fit for different types of projects, the source code is available under different licenses. ## Available licenses HyperFormula is available under the following licenses: | Name | Type | |:--------------------------------------------------------------------------------------|:------------| | [GPLv3 license](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt) | Open source | | Proprietary license | Proprietary | ## GPLv3 license In a non-commercial or open-source project, you can use [GNU General Public License v3.0](https://github.com/handsontable/hyperformula/blob/master/LICENSE.txt) (GPLv3). To learn how to use the GPLv3 license, see the [License key](https://hyperformula.handsontable.com/docs/guide/license-key.md#gplv3-license) page. ## Proprietary license If your project requires a more permissive license than GPLv3, please contact us to purchase a proprietary license with flexible terms and conditions. Contact our Sales Team: * Through the [contact form](https://handsontable.com/get-a-quote) on the Handsontable website * By email at [sales@handsontable.com](mailto:sales@handsontable.com) ## Entering a license key To use HyperFormula, you need to specify which license type you use, by entering a license key. To find out how to enter a license key, see the [License key](https://hyperformula.handsontable.com/docs/guide/license-key.md) page. --- ## Localizing functions URL: https://hyperformula.handsontable.com/docs/guide/localizing-functions # Localizing functions You can localize a function's ID and error messages. Currently, HyperFormula supports 18 languages, with British English as the default. To change the language all you need to do is import and register the language like so: ```javascript // import the French language pack import frFR from 'hyperformula/i18n/languages/frFR'; // register the language HyperFormula.registerLanguage('frFR', frFR); ``` > To import the language packs, use the module-system-specific dedicated bundles at: > * **ES**: `hyperformula/i18n/languages/` > * **CommonJS**: `hyperformula/i18n/languages/` > * **UMD**: `hyperformula/dist/languages/` > > For the UMD build, the languages are accessible through `HyperFormula.languages`, e.g., `HyperFormula.languages.frFR`. Then set it inside it the [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md): ```javascript // configure the instance const options = { language: 'frFR' }; ``` Language pack names should be passed as strings. They follow a naming convention that incorporates two standards: ISO-639 and ISO-3166-1. The pattern is `languageCOUNTRY`, for example `enUS`, `enGB`, `frFR`, etc. You can freely use the localized names: `SUM` can be written as `SOMME` and the functionality of the function will remain the same. Here are some example functions and their translations in French: ```javascript // localized functions functions: { MATCH: 'EQUIV', CORREL: 'COEFFICIENT.CORRELATION', AVERAGE: 'MOYENNE' }, ``` Same goes for the [errors](https://hyperformula.handsontable.com/docs/guide/types-of-errors.md) displayed inside cells when something goes wrong: ```javascript // localized errors errors: { CYCLE: '#CYCLE!', DIV_BY_ZERO: '#DIV/0!', ERROR: '#ERROR!', NA: '#N/A', NAME: '#NOM?', NUM: '#NOMBRE!', REF: '#REF!', VALUE: '#VALEUR!', } ``` ## Creating a custom language pack If your desired language is not in the list of supported languages, you can create a custom language pack: ```javascript // Create a language pack object const spanish = { errors: { NAME: '#¿NOMBRE?', // ... }, functions: { SUM: 'SUMA', IF: 'SI', // ... }, langCode: 'es', // Your custom language code ui: { NEW_SHEET_PREFIX: 'Sheet', }, }; // Register your language HyperFormula.registerLanguage('es', spanish); // Use it in your configuration const hf = HyperFormula.buildEmpty({ language: 'es' }); ``` > You can use an existing language pack as a template. Check the [language files in the repository](https://github.com/handsontable/hyperformula/tree/master/src/i18n/languages) to see complete examples with all available functions. ## Localizing custom functions You can localize your custom functions as well. For details, see the [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md#function-name-translations) guide. ### List of supported languages | Language name | Language code | |:-----------------|:--------------| | British English | enGB | | American English | enUS | | Czech | csCZ | | Danish | daDK | | Dutch | nlNL | | Finnish | fiFI | | French | frFR | | German | deDE | | Hungarian | huHU | | Italian | itIT | | Norwegian | nbNO | | Polish | plPL | | Portuguese | ptPT | | Russian | ruRU | | Spanish | esES | | Swedish | svSE | | Turkish | trTR | | Indonesian | idID | --- ## Migrating from 1.x to 2.0 URL: https://hyperformula.handsontable.com/docs/guide/migration-from-1.x-to-2.0 # Migrating from 1.x to 2.0 To upgrade your HyperFormula version from 1.x.x to 2.0.0, follow this guide. ## Drop the `gpujs` and `gpuMode` options Remove the `gpujs` and `gpuMode` options from your HyperFormula configuration. Before: ```js const engine = HyperFormula.buildFromArray([[]], { gpujs: true, gpuMode: 'cpu', licenseKey: 'gpl-v3', }); ``` After: ```js const engine = HyperFormula.buildFromArray([[]], { licenseKey: 'gpl-v3', }); ``` > Functions that used GPU acceleration before (MMULT, MAXPOOL, MEDIANPOOL, and TRANSPOSE), still work. Their performance remains largely the same, except for very large data sets. --- ## Migrating from 2.x to 3.0 URL: https://hyperformula.handsontable.com/docs/guide/migration-from-2.x-to-3.0 # Migrating from 2.x to 3.0 To upgrade your HyperFormula version from 2.x.x to 3.0.0, follow this guide. ## Importing language files We changed the way of importing language files in ES module system to a more modern way using `mjs` files and `exports` property. This change is required to make HyperFormula compatible with newer ESM configurations in Node and browser environments. The previous import paths became deprecated. For most environments they still work in version 3.0.0, but it will be removed in the future. To avoid any issues, update your code to use the new paths. ### New import paths for ES and CommonJS module systems For ES and CommonJS modules, use the path `hyperformula/i18n/languages`, to import the language files. E.g.: ```javascript import { frFR } from "hyperformula/i18n/languages"; // ESM const { frFR } = require('hyperformula/i18n/languages'); // CommonJS ``` If you use the UMD module system, you don't need to change anything. ### Additional steps for projects using Angular 1. Make sure you use Typescript 5 or newer 2. In your `tsconfig.json`, set: ``` "moduleResolution": "bundler", ``` ### Additional steps for projects using Typescript In your `tsconfig.json`, set: ``` "module": "node16", "moduleResolution": "node16", ``` ### Additional steps for projects using Webpack 4 or older 1. In your code, use the legacy paths for importing language files. Unfortunately, Webpack 4 does not support `exports` property. E.g.: ```javascript import { frFR } from "hyperformula/es/i18n/languages"; ``` 2. In your `webpack.config.js`, add the following configuration to handle `.mjs` files properly: ```javascript module: { rules: [ { test: /\.m?js$/, include: /node_modules/, type: "javascript/auto", }, ], } ``` ### Additional steps for projects using Parcel 1. Make sure you use Parcel 2.9 or newer. Older versions of Parcel do not support `exports` property. 2. In your `package.json`, add the [following configuration](https://parceljs.org/blog/v2-9-0/#new-resolver): ``` "@parcel/resolver-default": { "packageExports": true } ``` If you don't want to upgrade Parcel, you can keep using the legacy import paths for language files, but they will be removed in one of the upcoming releases. E.g.: ```javascript import { frFR } from "hyperformula/es/i18n/languages"; ``` ### Other projects We tested the changes with the most popular bundlers and frameworks. If you use a different configuration, and you encounter any issues, please contact us via GitHub. We will try to make it work for you, although for older versions of bundlers and frameworks, it might be impossible. ## Removal of the `binarySearchThreshold` configuration option (deprecated since version 1.1.0) The `binarySearchThreshold` has no effect since version 1.1.0. If your codebase still uses this option, please remove it. ## Change in the default value of the `precisionRounding` configuration option HyperFormula 3.0.0 introduces a change in the default value of the `precisionRounding` configuration option. The new default value is `10`. If you want to keep the old behavior, set the `precisionRounding` option to `14` in the HyperFormula configuration: ```javascript const hf = HyperFormula.buildEmpty({ precisionRounding: 14 }); ``` --- ## Migrating from 0.6 to 1.0 URL: https://hyperformula.handsontable.com/docs/guide/migration-from-0.6-to-1.0 # Migrating from 0.6 to 1.0 To upgrade your HyperFormula version from 0.6.x to 1.0.x, follow this guide. ## Step 1: Change your license key If you use the AGPLv3 license, or the free non-commercial license, you need to change your license key. If you use a commercial license, you don't need to make any changes. ### Open-source license If you use the open-source version of HyperFormula, in your configuration options, pass the `gpl-v3` string instead of the `agpl-v3` string: Before: ```js const options = { licenseKey: 'agpl-v3', } ``` After: ```js const options = { // use `gpl-v3` instead of `agpl-v3` licenseKey: 'gpl-v3', } ``` ### Free non-commercial license If you use the free non-commercial license, switch to the GPLv3 license or purchase a commercial license. For more details on HyperFormula license keys, go [here](https://hyperformula.handsontable.com/docs/guide/license-key.md). ## Step 2: Change `sheetName` to `sheetId` Most sheet-related methods now take the `sheetID` number parameter instead of the `sheetName` string parameter. For example, use the `clearSheet()` method in this way: Before: ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); const changes = hfInstance.clearSheet('MySheet2'); ``` After: ```js const hfInstance = HyperFormula.buildFromSheets({ MySheet1: [ ['=SUM(MySheet2!A1:A2)'] ], MySheet2: [ ['10'] ], }); // use `sheetId` instead of `sheetName` const changes = hfInstance.clearSheet(1); ``` The only methods still accepting the `sheetName` string parameter are now: - `addSheet()`: needs `sheetName` to give a name to the new sheet. Generates the new sheet's `sheetId` - `isItPossibleToAddSheet()`: needs `sheetName` to check if it's possible to add a new sheet with that name - `doesSheetExist()`: needs `sheetName` to check if a sheet with that name exists - `getSheetId()`: needs `sheetName` to get the sheet's `sheetId` Also, these methods still accept the `newName` string parameter: - `renameSheet()`: needs `newName` to give a new name to an existing sheet - `isItPossibleToRenameSheet()`: needs `newName` to check if it's possible to give that new name to an existing sheet ## Step 3: Adapt to the `matrix`->`array` name changes Adapt to the following changes in configuration option names, API method names and exception names: ### Configuration option names | Before | After | |-------------------------|--------------------------| | `matrixColumnSeparator` | `arrayColumnSeparator` | | `matrixRowSeparator` | `arrayRowSeparator` | ### API method names | Before | After | |----------------------|---------------------| | `matrixMapping` | `arrrayMapping` | | `isCellPartOfMatrix` | `isCellPartOfArray` | ### Exception names | Before | After | |--------------------------------|-------------------------------| | `SourceLocationHasMatrixError` | `SourceLocationHasArrayError` | | `TargetLocationHasMatrixError` | `TargetLocationHasArrayError` | ## Step 4: Drop the matrix formula notation Switch from the matrix formula notation to the array formula notation. For more information on the array formula notation, go [here](https://hyperformula.handsontable.com/docs/guide/arrays.md). Before: ```js ={ISEVEN(A2:A5*10)} ``` Now, if the `useArrayArithmetic` configuration option is set to `false`, use the `ARRAYFORMULA` function to [enable the array arithmetic mode locally](https://hyperformula.handsontable.com/docs/guide/arrays.md#enabling-the-array-arithmetic-mode-locally): ```js =ARRAYFORMULA(ISEVEN(A2:A5*10)) ``` But when the `useArrayArithmetic` configuration option is set to `true`, you don't need to use the `ARRAYFORMULA` function, as the array arithmetic mode is [enabled globally](https://hyperformula.handsontable.com/docs/guide/arrays.md#enabling-the-array-arithmetic-mode-globally): ```js =ISEVEN(A2:A5*10) ``` ## Step 5: Drop the `matrixDetection` and `matrixDetectionThreshold` options Remove the `matrixDetection` and `matrixDetectionThreshold` options from your HyperFormula configuration. Before: ```js // define options const options = { licenseKey: 'gpl-v3', matrixDetection: true, matrixDetectionThreshold: 150 }; ``` After: ```js // define options const options = { licenseKey: 'gpl-v3' // remove `matrixDetection` and `matrixDetectionThreshold` }; ``` ## Step 6: Switch to the `SimpleCellRange` type argument If you use any of the following methods, update your code to take the `SimpleCellRange` type argument: - `copy()` - `cut()` - `getCellDependents()` - `getCellPrecedents()` - `getFillRangeData()` - `getRangeFormulas()` - `getRangeSerialized()` - `getRangeValues()` - `isItPossibleToMoveCells()` - `isItPossibleToSetCellContents()` - `moveCells()` Before: ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // takes `simpleCellAddress`, `width`, and `height` // returns: [ [ 2 ] ] const clipboardContent = hfInstance.copy({ sheet: 0, col: 1, row: 0 }, 1, 1); ``` After: ```js const hfInstance = HyperFormula.buildFromArray([ ['1', '2'], ]); // takes `simpleCellRange` // returns: [ [ 2 ] ] const clipboardContent = hfInstance.copy({ start: { sheet: 0, col: 1, row: 0 }, end: { sheet: 0, col: 1, row: 0 } }); ``` ## Step 7: Adapt to the array changes If you use any of the following methods, adjust your application to the changes in their behavior: ### `setCellContents()` The `setCellContents()` method now can override space occupied by spilled arrays. ### `addRows()` and `removeRows()` The `addRows()` method now can add rows across a spilled array, without changing the array size. The `removeRows()` method now can remove rows from across a spilled array, without changing the array size. ### `addColumns()` and `removeColumns()` The `addColumns()` method now can add columns across a spilled array, without changing the array size. The `removeColumns()` method now can remove columns from across a spilled array, without changing the array size. --- ## HyperFormula MCP Server URL: https://hyperformula.handsontable.com/docs/guide/mcp-server # HyperFormula MCP Server An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that exposes HyperFormula as a tool for any MCP-compatible AI client (Claude Desktop, Cursor, VS Code, and others) — giving LLMs deterministic spreadsheet and formula computation. > **Not available yet — coming soon** > > This integration is on our roadmap and **cannot be installed or used today**. The API shown below is a preview and may still change before the first release. > > If you'd like to try it, [join the early access list](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) — we'll ping you the moment the first beta is ready, and your sign-up directly tells us how strongly to prioritize this integration. ## What it does - **Evaluate formulas deterministically** — your agent runs any Excel-compatible formula through HyperFormula instead of asking the LLM to do math. Results are exact, reproducible, and auditable. - **Read and write cells and ranges** — the agent inspects, populates, or modifies sheet data through typed tool calls. - **Trace dependencies** — precedents and dependents are surfaced so the agent can explain how every value was derived. - **400+ built-in functions out of the box** — the agent has access to the full Excel-compatible function set (`SUM`, `VLOOKUP`, `IRR`, `INDEX/MATCH`, and the rest), no implementation work required. ## Example Run the server (no install needed once published): ```bash npx -y @hyperformula/mcp ``` Wire it into an MCP client by adding it to the client's config (for example, `claude_desktop_config.json` or `.cursor/mcp.json`): ```json { "mcpServers": { "hyperformula": { "command": "npx", "args": ["-y", "@hyperformula/mcp"] } } } ``` The client now sees tools like `evaluate`, `getCellValue`, and `setCellContents`, and the agent can call them as part of any conversation — without inventing numbers. ## Use cases - **Explain the spreadsheet** — ask the agent what a workbook does, which cells are inputs, and how each output is derived; get answers grounded in real formula evaluation. - **What-if scenarios and forecasting** — the agent tweaks assumptions and reports how downstream results change, deterministically. - **Validate and clean data** — the agent scans ranges for errors, missing values, or inconsistencies and fixes them in place. - **Generate formulas from natural language** — the agent translates a plain-English calculation into a verified, working Excel formula. - **Financial modeling and reporting** — NPV, IRR, amortization, KPI rollups, and other quantitative workflows where the answer must be exact and auditable. ## Get early access > **Be the first to try it** > > We're actively building this integration. Drop your email and we'll notify you the moment the first beta lands — so you can try it before the public release. > > [Join the early access list →](https://2fmjvg.share-eu1.hsforms.com/2e6drCkuLTn-1RuiYB91eJA) ## Links - [Model Context Protocol specification](https://modelcontextprotocol.io/) - [HyperFormula on GitHub](https://github.com/handsontable/hyperformula) - [HyperFormula on npm](https://www.npmjs.com/package/hyperformula) - [Built-in functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) - [Custom functions](https://hyperformula.handsontable.com/docs/guide/custom-functions.md) --- ## Named expressions URL: https://hyperformula.handsontable.com/docs/guide/named-expressions # Named expressions An expression can be assigned a human-friendly name. Thanks to this you can refer to that name anywhere across the workbook. Names are especially useful when you use some references repeatedly. In this case, names simplify the formulas and reduce the risk of making a mistake. Such a worksheet is also easier to maintain. You can name a formula, string, number, or any other type of data. By default, references in named expressions are absolute. Most people use absolute references in spreadsheet software like Excel without even knowing about it. Very few know that references can be relative too. Unfortunately, HyperFormula doesn't support relative references inside named expressions at the moment. Dynamic ranges are supported through functions such as INDEX and OFFSET. Named ranges can overlap each other, e.g., it is possible to define the names as follows: - rangeOne: Sheet1!$A$1:$D$10 - rangeTwo: Sheet1!$A$1:$E$1 ## Examples | Type | Custom name | Example expression | |:------------------------|:------------|:--------------------------| | Named cell | myCell | =Sheet1!$A$1 | | Named range of cells | myRange | =Sheet1!$A$1:$D$10 | | Named constant (number) | myNumber | =10 | | Named constant (string) | myText | ="One Small Step for Man" | | Named formula | myFormula | =SUM(Sheet1!$A$1:$D$10) | ## Naming rules Expression names are case-insensitive, and they: - Must start with a Unicode letter or with an underscore (`_`). - Can contain only Unicode letters, numbers, underscores, and periods (`.`). - Can't be the same as any possible reference in the A1 notation (for example, `Q4` or `YEAR2023`). - Can't be the same as any possible reference in the R1C1 notation (for example, `R4C5`, `RC` or `R0C`). - Must be unique within a given scope. > Expression names must be unique within a given scope, but you can override a > global named-expression with a local one. For example: > > ```javascript > // `MyRevenue` has to be unique within the global scope > hfInstance.addNamedExpression('MyRevenue', '=SUM(100+10)'); > > // but you can still use `MyRevenue` within the local scope of Sheet2 (sheetId = 1) > hfInstance.addNamedExpression('MyRevenue', '=Sheet2!$A$1+100', 1); > ``` For examples of valid and invalid expression names, see the following table: | Name | Validity | |:------------|:---------| | my Revenue | Invalid | | myRevenue | Valid | | quarter1 | Invalid | | quarter_1 | Valid | | 1stQuarter | Invalid | | _1stQuarter | Valid | | .NET | Invalid | | ASP.NET | Valid | | A1 | Invalid | | $A$1 | Invalid | | RC | Invalid | ## Using named expressions in formulas Named expressions can be used in any formula by referencing their names. Use them anywhere you would normally use a cell reference, range, or constant value. ```javascript // Define named expressions hfInstance.addNamedExpression('TaxRate', '=0.08'); hfInstance.addNamedExpression('SalesData', '=Sheet1!$A$1:$A$10'); // Use them in formulas hfInstance.setCellContents({sheet: 0, col: 2, row: 0}, [['=SUM(SalesData)']]); hfInstance.setCellContents({sheet: 0, col: 2, row: 1}, [['=SUM(SalesData) * TaxRate']]); ``` ## Using named ranges in formulas A named expression that resolves to a range of cells behaves differently depending on where it is used: - **As a function argument** — it works as expected. `=SUM(myRange)`, `=COUNT(myRange)`, and `=INDEX(myRange, 1, 1)` all operate on the full range. - **As an operand of an operator** — the range is reduced to a single cell before the operation. In `=myRange + 1`, only the cell of the range that shares the formula's row (for a vertical range) or column (for a horizontal range) is used. If the formula's row or column falls outside the range, or the range is two-dimensional, the result is a `#VALUE!` error. - **As a bare reference** — `=myRange` on its own returns a `#VALUE!` error; a range cannot be placed directly into a single cell. In the default mode the range is reduced before the operator runs, so `=SUM(myRange + 1)` adds 1 to that single reduced value rather than to every element (for a formula in row 1 of a vertical range, the result is `SUM(A1 + 1)`). When array arithmetic is enabled (`useArrayArithmetic: true`), named ranges still work as function arguments and aggregate correctly, but as an operand they behave differently from the default mode: - A bare `=myRange + 1` does not spill — it returns a `#VALUE!` error rather than producing one result per element. - Inside an aggregate the operator becomes element-wise. `=SUM(myRange + 1)` adds 1 to every element and then sums, so for `myRange` covering values `1..5` it returns `20` (`SUM(2, 3, 4, 5, 6)`), not the single reduced value of the default mode. ## Available methods These are the basic methods that can be used to add and manipulate named expressions, including the creation and handling of named ranges. The full list of methods is available in the [API reference](https://hyperformula.handsontable.com/docs/api). ### Adding a named expression You can add a named expression in two ways: **During engine initialization**: You can provide named expressions as a parameter when creating a HyperFormula instance using the factory methods `buildEmpty`, `buildFromArray`, or `buildFromSheets`. This is the most efficient way to add multiple named expressions at once. ```javascript // Define named expressions during initialization const namedExpressions = [ { name: 'prettyName', expression: '=Sheet1!$A$1+100', scope: 0 // optional: local scope for 'Sheet1' }, { name: 'globalConstant', expression: '=42' // no scope specified = global scope } ]; // Create engine with named expressions const hfInstance = HyperFormula.buildEmpty({}, namedExpressions); // or const hfInstance = HyperFormula.buildFromArray(sheetData, {}, namedExpressions); // or const hfInstance = HyperFormula.buildFromSheets(sheetsData, {}, namedExpressions); ``` **After engine creation**: You can add a named expression by using the `addNamedExpression` method. It accepts name for the expression, the expression as a raw cell content, and optionally the scope. If you do not define the scope it will be set to global, meaning the expression name will be valid for the whole workbook. If you want to add many of them, it is advised to do so in a [batch](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). This method returns [an array of changed cells](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). ```javascript // add 'prettyName' expression to the local scope of 'Sheet1' (sheetId = 0) const changes = hfInstance.addNamedExpression( 'prettyName', '=Sheet1!$A$1+100', 0 ); ``` ### Changing a named expression You can change a named expression by using the `changeNamedExpression` method. Select the name of an expression to change and pass it as the first parameter, then define the new expression as raw cell content and optionally add the scope. If you do not define the scope it will be set to global, meaning the expression will be valid for the whole workbook. If you want to change many of them, it is advised to do so in a [batch](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). This method returns [an array of changed cells](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). ```javascript // change the named expression const changes = hfInstance.changeNamedExpression( 'prettyName', '=Sheet1!$A$1+200' ); ``` ### Removing a named expression You can remove a named expression by using the `removeNamedExpression` method. Select the name of an expression to remove and pass it as the first parameter and optionally define the scope. If you do not define the scope it will be understood as global, meaning, the whole workbook. This method returns [an array of changed cells](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#changes-array). ```javascript // remove 'prettyName' expression from 'Sheet1' (sheetId=0) const changes = hfInstance.removeNamedExpression('prettyName', 0); ``` ### Listing all named expressions You can retrieve a whole list of named expressions by using the `listNamedExpressions` method. It requires no parameters and returns all named expressions as an array of strings. ```javascript // get all named-expression names const listOfExpressions = hfInstance.listNamedExpressions(); ``` ## Handling errors Operations on named expressions throw errors when something goes wrong. These errors can be [handled](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#handling-an-error) to provide a good user experience in the application. It is also possible to check the availability of operations using `isItPossibleTo*` methods, which are also described in [that section](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#isitpossibleto-methods). --- ## Performance URL: https://hyperformula.handsontable.com/docs/guide/performance # Performance We implemented various techniques to boost the performance of HyperFormula. In some cases, turning them on or off might increase the performance of your app. Below we provide a number of tips on how to speed it up. ## VLOOKUP/MATCH If you are planning to use VLOOKUP or MATCH heavily in your app, you may consider enabling the `useColumnIndex` flag in the HyperFormula configuration. It will increase memory usage but can significantly improve the performance of these two functions, especially when running on unsorted or very large data sets. The column index will not be used despite the option `useColumnIndex` enabled when using **wildcards** or **regular expressions**. Leaving this option disabled will cause the engine to use binary search when dealing with sorted data, and the naive approach otherwise. ## Address mapping strategies HyperFormula uses two approaches to store the mapping of cell addresses in order to optimize memory usage. The choice of the strategy is made independently for each sheet. The `chooseAddressMappingPolicy` option allows for changing the way the strategy will be chosen. You may use one of three built-in policies: * `AlwaysDense` – uses dense mapping for each sheet. This policy is particularly useful when the spreadsheet is a densely filled rectangle. * `AlwaysSparse` – uses sparse mapping for each sheet. This approach is useful when in your spreadsheet/dataset there are relatively few cells filled, but located very far from each other. * `DenseSparseChooseBasedOnThreshold` – the choice is made based on the fill ratio of the sheet. Let the engine choose the best strategy for you. ## Lazy transformation cleanup Structural operations (adding/removing rows/columns, moving cells) create transformations that are applied lazily to formulas. Over time, these transformations accumulate in memory. HyperFormula automatically flushes them when their count reaches the `maxPendingLazyTransformations` threshold (default: 50). You can tune this setting to balance memory usage and CPU overhead: * **Lower values** (e.g., 10) reduce peak memory usage but trigger cleanup more frequently, adding slight CPU overhead per flush. * **Higher values** (e.g., 200) reduce the frequency of cleanup but allow more memory to accumulate between flushes. * The default of **50** works well for most use cases. ```javascript const hf = HyperFormula.buildEmpty({ licenseKey: 'gpl-v3', maxPendingLazyTransformations: 100, }) ``` ## Suspending automatic recalculations By default, HyperFormula recalculates formulas after every change. However, due to the fact that we store the graph of dependencies between cells in the sheet, we recalculate only the cells affected by the update. Sometimes, a simple change can cause recalculation of a large part of the sheet, e.g., when the modified cell is at the very beginning of the dependency chain or when there are many [volatile functions](https://hyperformula.handsontable.com/docs/guide/volatile-functions.md) in the worksheet. In such a case you may want to postpone the recalculation. The first option is to call `suspendEvaluation` before making changes and `resumeEvaluation` at a convenient moment. The second option is to pass the callback function with multiple operations to a [batch function](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). Recalculation will be suspended before performing operations and resumed after them. In cases where you perform operations which may not cause a recalculation but only change the shape of the worksheet, like `addRows`, `removeRows`, or `moveColumns` , we do not recommend suspending recalculation, as this may have a slightly negative impact on performance. --- ## Order of precedence URL: https://hyperformula.handsontable.com/docs/guide/order-of-precendece # Order of precedence HyperFormula supports multiple [operators](https://hyperformula.handsontable.com/docs/guide/types-of-operators.md) that can be used to perform mathematical operations in a formula. These operators are calculated in a specific order. If the formula contains operators of equal precedence, like addition and subtraction, then they are evaluated from left to right. ## Table of precedence In the table below you can find the order in which HyperFormula performs operations (from highest to lowest priority).
Precedence Operator Description
1

: (colon)

, (comma)

(space)

Reference operators: range (colon), union (comma), intersection (space).

Currently supported by HyperFormula only at the grammar level of a function.

2 Negation
3 % Percent
4 ^ Exponentiation
5 * and / Multiplication and division
6 + and – Addition and subtraction
7 & (ampersand) Concatenation of two or more text strings
8

< (less than)

= (equal to) > (greater than)

<= (less than or equal to)

>= (greater than or equal to)

<> (not equal to)

Comparison
## Using parentheses HyperFormula calculates the formulas in parentheses first so by using them you can override the default order of evaluation. For instance, consider this formula: =7 * 8 + 2. After the equal sign, there are operands (7, 8, 2) that are separated by operators (* and +). Following the order of calculations, HyperFormula computes 7*8 first and then adds 2. The correct answer to this equation is 58. Placing (8+2) in parenthesis will change the result as HyperFormula will first calculate 8 + 2 = 10, and after that will multiply it by 7. Now the result is 70, not 58 as in the first example. --- ## Quality & Security URL: https://hyperformula.handsontable.com/docs/guide/quality # Quality & Security HyperFormula is built with the highest standards of software quality, backed by rigorous research, comprehensive testing, and transparent development practices. ## Research Foundation HyperFormula originated as a research and development project **funded by the European Union**. The project was **successfully executed and positively evaluated** by The National Centre for Research and Development in Poland, validating both the technical approach and implementation quality. This EU funding provided the foundation for developing a calculation engine that meets the highest academic and industry standards. ## Expert Development Team HyperFormula is developed by a team of highly qualified experts: - **Computer Science specialists** with Master's and PhD degrees - **Mathematics experts** with deep knowledge in numerical computation - **Software engineering professionals** with years of enterprise-grade experience ## Comprehensive Testing Quality assurance is at the heart of our development process: - **Over 5,000 unit tests** covering all aspects of the calculation engine - **97% test coverage** ensuring virtually every line of code is verified - Continuous integration across multiple environments - Regular performance comparisons between versions > Our high test coverage means you can be confident that HyperFormula will behave predictably in your application, even in complex scenarios. ## Open Source Transparency HyperFormula's **entire source code is available on GitHub**, providing complete transparency that allows you to: - **Inspect the implementation** to understand exactly how calculations are performed - **Verify the quality** of the code and development practices - **Contribute improvements** or report issues directly to the development team - **Build confidence** through code reviews and community oversight [View the source code on GitHub →](https://github.com/handsontable/hyperformula) ## Real-World Validation HyperFormula powers **Handsontable**, one of the most popular data grid solutions in JavaScript, trusted by thousands of developers worldwide. Additionally, HyperFormula is used by many other projects and organizations, providing continuous validation of its stability and performance across diverse applications. ## Security HyperFormula maintains the highest security standards to protect your applications: - **Regular external security audits** conducted by independent security experts - **Dependency vulnerability scanning** using industry-leading tools including Fossa, Dependabot, and Snyk - **Security risk assessments** to identify and mitigate potential threats - **Proactive monitoring** of security advisories and immediate response to emerging threats ### Independent security certificate In July 2026, HyperFormula was awarded a security certificate by **TestArmy Group S.A.** (signed by Wojciech Humiński, CEO), confirming an independent security assessment of the library. The assessment covered HyperFormula [v3.3.0](https://www.npmjs.com/package/hyperformula/v/3.3.0) and included: - **Code review and white-box penetration testing** of the source code - **Static, dynamic, and manual code analysis** carried out against the OWASP Application Security Verification Standard (ASVS), with a focus on the OWASP Top 10 - **Dependency and dev-dependency analysis** to identify vulnerabilities in third-party packages [Download the security certificate (PDF) →](https://hyperformula.handsontable.com/docs/hyperformula_security_certificate.pdf) ## Quality Assurance Process Our development includes multiple quality layers: 1. **Code Reviews** - All changes are peer-reviewed by experienced developers 2. **Automated Testing** - Comprehensive test suite runs on every commit 3. **Performance Testing** - Regular benchmarking ensures optimal performance 4. **Cross-Platform Testing** - Verification across different browsers and Node.js versions 5. **Documentation Reviews** - All features are thoroughly documented and reviewed ## Professional Support HyperFormula offers comprehensive support options to ensure your success: - **Direct contact with the dev team** through GitHub platform - **Premium support** for companies using HyperFormula in mission-critical applications - **Consulting services** for turn-key solutions, including proof of concepts, deployment strategies, and custom feature development Our expert team has been supporting enterprises since 2012 and understands how to respond to individual business needs. [Learn more about support options →](https://hyperformula.handsontable.com/#pricing) --- ## Set up your coding agent URL: https://hyperformula.handsontable.com/docs/guide/setup-coding-agent # Set up your coding agent HyperFormula ships an official Claude skill and machine-readable docs so your AI coding agent can scaffold, configure, and debug HyperFormula correctly. Pick your tool below, or use the interactive wizard. ## Claude Code Install the official skill from the plugin marketplace: ``` /plugin marketplace add handsontable/handsontable-skills /plugin install handsontable-skills@handsontable-skills ``` Claude Code loads the `hyperformula` skill automatically based on what you ask. ## Cursor, Copilot & other agents These tools don't yet support the Claude skill format. Point your agent at the machine-readable docs instead: - **Full corpus:** [`llms-full.txt`](https://hyperformula.handsontable.com/docs/llms-full.txt) — the entire documentation in one LLM-friendly file. - **Per-page Markdown:** append `.md` to a docs page URL (e.g. `/docs/guide/basic-usage.md`), or use the **View as Markdown** link on any page. For agents that read a rules file (e.g. Cursor's `AGENTS.md`), add a line pointing at the corpus URL so the agent fetches authoritative docs on demand. ## Live docs via MCP (any agent) Two zero-setup ways to let an agent pull authoritative HyperFormula docs on demand: - **GitMCP** — add the MCP server `https://gitmcp.io/handsontable/hyperformula` to your agent (e.g. `claude mcp add --transport http hyperformula https://gitmcp.io/handsontable/hyperformula`). It serves this GitHub repository's docs. No install, no auth. - **Context7** — run `npx -y @upstash/context7-mcp` (or use the Context7 skill / `ctx7` CLI) and ask for the `hyperformula` library. Context7 indexes the repository's `docs` folder (see `context7.json` in the repo root). ## Manual install (any Claude Code setup) ```bash git clone https://github.com/handsontable/handsontable-skills.git cp -r handsontable-skills/skills/hyperformula ~/.claude/skills/ ``` ## Resources - [Official skill repository](https://github.com/handsontable/handsontable-skills) - [`llms-full.txt`](https://hyperformula.handsontable.com/docs/llms-full.txt) - [API reference](https://hyperformula.handsontable.com/docs/api/) --- ## Server-side installation URL: https://hyperformula.handsontable.com/docs/guide/server-side-installation # Server-side installation > For full compatibility, the minimum required version of **Node is 13**. > It is related to the support for ICU. There is a possibility to use > lower versions of Node but you need to install an additional package > as the dependency: [`full-icu`](https://github.com/unicode-org/full-icu-npm) The basic steps are very similar to the ones in the [client-side installation](https://hyperformula.handsontable.com/docs/guide/client-side-installation.md) process. ## Install with npm or Yarn You can install the latest version of HyperFormula with popular packaging managers. Navigate to your project folder and run the following command: **npm:** ```bash $ npm install hyperformula ``` **Yarn:** ```bash $ yarn add hyperformula ``` The package will be added to your `package.json` file and installed in the `./node_modules` directory. Then you can just `require` it: ```javascript const { HyperFormula } = require('hyperformula'); // your code ``` --- ## Sorting data URL: https://hyperformula.handsontable.com/docs/guide/sorting-data # Sorting data In HyperFormula, you can sort data by reordering rows and columns. ## Sorting data in HyperFormula To sort data in HyperFormula, you reorder rows (or columns), by providing your preferred permutation of row (or column) indexes. The permutation array has the form `[ newPositionForRow0, newPositionForRow1, newPositionForRow2, ... ]`. The value at index `i` is the new position for the row that is currently at index `i`. You can implement any sorting algorithm that returns such an array of row or column indexes. ## Sorting rows To sort rows, use the [`isItPossibleToSetRowOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isitpossibletosetroworder) and [`setRowOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) methods. ### Step 1: Choose a new row order Choose your required permutation of row indexes. For example, if you want to move the bottom row to the top of a 3-row sheet, set the order to `[1, 2, 0]` instead of `[0, 1, 2]`. This moves the row at index 0 to position 1, the row at index 1 to position 2, and the row at index 2 to position 0: ```js // a HyperFormula instance with example data const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'], ]); // we'll set the row order to [1, 2, 0] in the next steps // the resulting sheet will be: [['C'], ['A'], ['B']] ``` > The [`setRowOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setroworder) method accepts an array of numbers, so you can implement any function that returns an array with your required row order. > The permutation array maps **current positions** to **new positions**, not the other way around. The value at index `i` tells HyperFormula where to move the row currently at index `i`, *not* which row should end up at index `i`. > > For example, `[1, 2, 0]` means "move row 0 to position 1, row 1 to position 2, row 2 to position 0". It does **not** mean "the new row 0 comes from position 1, the new row 1 comes from position 2, ...". ### Step 2: Check if the new row order can be applied Before you change the row order, check if your specified row number permutation can actually be applied. Thanks to the [`isItPossibleTo*` methods](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#isitpossibleto-methods), you can check if an operation is allowed, and display an error message if it's not. Use the [`isItPossibleToSetRowOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isitpossibletosetroworder) method: ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'], ]); // a variable to carry the user message let messageUsedInUI; // check if your permutation can be applied const isRowOrderOk = hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); // display an error message if (!isRowOrderOk) { messageUsedInUI = 'Sorry, you cannot sort rows in this way.' } ``` ### Step 3: Set the new row order If your specified row number permutation is valid, change the row order: ```js const hfInstance = HyperFormula.buildFromArray([ ['A'], ['B'], ['C'], ]); let messageUsedInUI; const isRowOrderOk = hfInstance.isItPossibleToSetRowOrder(0, [1, 2, 0]); if (!isRowOrderOk) { messageUsedInUI = 'Sorry, you cannot sort rows in this way.' } else { // set the new row order hfInstance.setRowOrder(0, [1, 2, 0]); } // the resulting sheet is: [['C'], ['A'], ['B']] // the method returns an array of cells whose values changed: // [{ // address: { sheet: 0, col: 0, row: 1 }, // newValue: 'A', // }, // { // address: { sheet: 0, col: 0, row: 2 }, // newValue: 'B', // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 'C', // }] ``` ## Sorting columns To sort columns, use the [`isItPossibleToSetColumnOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isitpossibletosetcolumnorder) and [`setColumnOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) methods. The permutation array has the same shape as for rows: `[ newPositionForColumn0, newPositionForColumn1, newPositionForColumn2, ... ]`. The value at index `i` is the new position for the column that is currently at index `i`. ### Step 1: Choose a new column order Choose your required permutation of column indexes. For example, if you want to move the last column to the front of a 3-column sheet, set the order to `[1, 2, 0]` instead of `[0, 1, 2]`. This moves the column at index 0 to position 1, the column at index 1 to position 2, and the column at index 2 to position 0: ```js // a HyperFormula instance with example data const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // we'll set the column order to [1, 2, 0] in the next steps // the resulting sheet will be: [['C', 'A', 'B']] ``` > The [`setColumnOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#setcolumnorder) method accepts an array of numbers, so you can implement any function that returns an array with your required column order. > The permutation array maps **current positions** to **new positions**, not the other way around. The value at index `i` tells HyperFormula where to move the column currently at index `i`, *not* which column should end up at index `i`. ### Step 2: Check if the new column order can be applied Before you change the column order, check if your specified column number permutation can actually be applied. Thanks to the [`isItPossibleTo*` methods](https://hyperformula.handsontable.com/docs/guide/basic-operations.md#isitpossibleto-methods), you can check if an operation is allowed, and display an error message if it's not. Use the [`isItPossibleToSetColumnOrder`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#isitpossibletosetcolumnorder) method: ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); // a variable to carry the user message let messageUsedInUI; // check if your permutation can be applied const isColumnOrderOk = hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); // display an error message if (!isColumnOrderOk) { messageUsedInUI = 'Sorry, you cannot sort columns in this way.' } ``` ### Step 3: Set the new column order If your specified column number permutation is valid, change the column order: ```js const hfInstance = HyperFormula.buildFromArray([ ['A', 'B', 'C'] ]); let messageUsedInUI; const isColumnOrderOk = hfInstance.isItPossibleToSetColumnOrder(0, [1, 2, 0]); if (!isColumnOrderOk) { messageUsedInUI = 'Sorry, you cannot sort columns in this way.' } else { // set the new column order hfInstance.setColumnOrder(0, [1, 2, 0]); } // the resulting sheet is: [['C', 'A', 'B']] // the method returns an array of cells whose values changed: // [{ // address: { sheet: 0, col: 1, row: 0 }, // newValue: 'A', // }, // { // address: { sheet: 0, col: 2, row: 0 }, // newValue: 'B', // }, // { // address: { sheet: 0, col: 0, row: 0 }, // newValue: 'C', // }] ``` ## Data sorting demo The demo below shows how to sort rows in ascending and descending order, based on the results (calculated values) of the cells in the second column. --- ## Types of errors URL: https://hyperformula.handsontable.com/docs/guide/types-of-errors # Types of errors HyperFormula returns an error when a formula cannot be processed properly. To make it easier for a user, each kind of error has its specific error value. For instance, HyperFormula displays the `#DIV/0!` error when a user tries to divide a number by zero, or `#NAME!` when the called function is not registered in the reference of functions. Depending on the reason for the problem, you will see the error's associated message as listed in the table below. An error can contain an additional message property. Errors are localized according to the language settings. | Value | Type | Description | | :--- | :--- | :--- | | #DIV/0! | Division by zero | It occurs when a formula tries to divide by zero. | | #N/A | The value is not available | It indicates that the value you are looking for is not available for the formula. Most typically this error is thrown by the LOOKUP -type functions. | | #NAME? | Invalid name | It means that HyperFormula can't recognize the name of the formula or values used in a formula. | | #NUM! | Invalid number | This error arises when your formula contains an invalid number. | | #REF! | Invalid reference | It occurs when a formula contains an invalid reference. It is one of the most common errors users encounter when working with spreadsheets. | | #VALUE! | Wrong type of argument | It occurs when a formula tries to improperly use different types of data. For example, you will see this error when you will try to add a string to a number. | | #CYCLE! | Circular reference | It occurs when a formula refers to its own cell, both directly and indirectly. | | #ERROR! | An error occurred | It indicates that there is an unknown error in a formula. | | #LIC! | Invalid license key | It occurs when the license key is invalid, expired, or missing. | --- ## Release notes URL: https://hyperformula.handsontable.com/docs/guide/release-notes # Release notes This page lists HyperFormula release notes. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). HyperFormula adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## 3.3.0 **Release date: May 20, 2026** ### Added - Added 12 database functions: DCOUNT, DSUM, DAVERAGE, DMAX, DMIN, DGET, DPRODUCT, DCOUNTA, DSTDEV, DSTDEVP, DVAR, DVARP. [#1652](https://github.com/handsontable/hyperformula/pull/1652) - Added new functions: PERCENTILE, PERCENTILE.INC, PERCENTILE.EXC, QUARTILE, QUARTILE.INC, QUARTILE.EXC. [#1650](https://github.com/handsontable/hyperformula/pull/1650) - Added `maxPendingLazyTransformations` configuration option to control memory usage by limiting accumulated transformations before cleanup. [#1629](https://github.com/handsontable/hyperformula/issues/1629) - Added a new function: TEXTJOIN. [#1640](https://github.com/handsontable/hyperformula/pull/1640) - Added a new function: SEQUENCE. [#1645](https://github.com/handsontable/hyperformula/pull/1645) ### Fixed - Fixed a memory leak in `LazilyTransformingAstService` where the transformations array grew unboundedly, causing increasing memory usage over time. [#1629](https://github.com/handsontable/hyperformula/issues/1629) - Fixed a memory leak in `UndoRedo` where `oldData` entries for evicted undo stack entries were never cleaned up, causing increasing memory usage over time. [#1629](https://github.com/handsontable/hyperformula/issues/1629) - Fixed the IRR function returning `#NUM!` error when the initial investment significantly exceeds the sum of returns. [#1628](https://github.com/handsontable/hyperformula/issues/1628) - Fixed the ADDRESS function ignoring `defaultValue` when arguments are syntactically empty (e.g., `=ADDRESS(2,3,,FALSE())`). [#1632](https://github.com/handsontable/hyperformula/issues/1632) ## 3.2.0 **Release date: February 19, 2026** ### Added - Added a new function: IRR. [#1591](https://github.com/handsontable/hyperformula/issues/1591) - Added a new function: N. [#1585](https://github.com/handsontable/hyperformula/issues/1585) - Added a new function: VALUE. [#1592](https://github.com/handsontable/hyperformula/issues/1592) ### Fixed - Fixed `Error Map maximum size exceeded` error when loading big spreadsheets. [#1602](https://github.com/handsontable/hyperformula/issues/1602) ## 3.1.1 **Release date: December 18, 2025** ### Fixed - Fixed an issue where cells were not recalculated after adding, removing and renaming sheets. [#1116](https://github.com/handsontable/hyperformula/issues/1116) - Fixed an issue where overwriting a non-computed cell caused the `Value of the formula cell is not computed` error. [#1194](https://github.com/handsontable/hyperformula/issues/1194) ## 3.1.0 **Release date: October 14, 2025** ### Changed - Renamed the `arraySizeMethod` parameter in the `FunctionMetadata` interface to `sizeOfResultArrayMethod`. The `arraySizeMethod` is deprecated and will be removed in one of the next major releases. [#1401](https://github.com/handsontable/hyperformula/issues/1401) - Renamed the `arrayFunction` parameter in the `FunctionMetadata` interface to `enableArrayArithmeticForArguments`. The `arrayFunction` is deprecated and will be removed in one of the next major releases. [#1401](https://github.com/handsontable/hyperformula/issues/1401) ### Fixed - Fixed an issue where the `OFFSET` function was ignoring the sheet reference in the provided address. [#1477](https://github.com/handsontable/hyperformula/issues/1477) ## 3.0.1 **Release date: August 11, 2025** ### Fixed - Fixed `Edge does not exist` error when a named expression is used twice in the same formula. [#1102](https://github.com/handsontable/hyperformula/issues/1102) - Fixed typos in the built-in functions guide. [#1517](https://github.com/handsontable/hyperformula/issues/1517) - Fixed an issue where named expressions added on engine initialization were not updated on changes. [#1501](https://github.com/handsontable/hyperformula/issues/1501) ## 3.0.0 **Release date: January 14, 2025** ### Added - Added a new function: XLOOKUP. [#1458](https://github.com/handsontable/hyperformula/issues/1458) ### Changed - **Breaking change**: Changed ES module build to use `mjs` files and `exports` property in `package.json` to make importing language files possible in Node environment. [#1344](https://github.com/handsontable/hyperformula/issues/1344) - **Breaking change**: Changed the default value of the `precisionRounding` configuration option to `10`. [#1300](https://github.com/handsontable/hyperformula/issues/1300) - Make methods `simpleCellAddressToString` and `simpleCellRangeToString` more logical and easier to use. [#1151](https://github.com/handsontable/hyperformula/issues/1151) ### Removed - **Breaking change**: Removed the `binarySearchThreshold` configuration option. [#1439](https://github.com/handsontable/hyperformula/issues/1439) ## 2.7.1 **Release date: July 18, 2024** ### Fixed - Fixed an issue where adding or removing columns with `DenseStrategy` for address mapping resulted in the `Cannot read properties of undefined (reading 'splice')` error. [#1406](https://github.com/handsontable/hyperformula/issues/1406) ## 2.7.0 **Release date: Apr 10, 2024** ### Added - Added method `getNamedExpressionsFromFormula` to extract named expressions from formulas. [#1365](https://github.com/handsontable/hyperformula/issues/1365) - Added `context` config option for passing data to custom functions. [#1396](https://github.com/handsontable/hyperformula/issues/1396) ## 2.6.2 **Release date: Feb 15, 2024** ### Changed - Removed `unorm` dependency. [#1370](https://github.com/handsontable/hyperformula/issues/1370) ## 2.6.1 **Release date: Dec 27, 2023** ### Fixed - Fixed an issue where operating on ranges of incompatible sizes resulted in a runtime exception. [#1267](https://github.com/handsontable/hyperformula/issues/1267) - Fixed an issue where the [`simpleCellAddressFromString()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#simplecelladdressfromstring) method was crashing when called with a non-ASCII character in an unquoted sheet name. [#1312](https://github.com/handsontable/hyperformula/issues/1312) - Fixed an issue where adding a row to a very large spreadsheet resulted in the `Maximum call stack size exceeded` error. [#1332](https://github.com/handsontable/hyperformula/issues/1332) - Fixed an issue where using a column-range reference to an empty sheet as a function argument resulted in the `Incorrect array size` error. [#1147](https://github.com/handsontable/hyperformula/issues/1147) - Fixed an issue where the SUBSTITUTE function wasn't working correctly with regex special characters. [#1289](https://github.com/handsontable/hyperformula/issues/1289) - Fixed a typo in the JSDoc comment of the `HyperFormula` class. [#1323](https://github.com/handsontable/hyperformula/issues/1323) ## 2.6.0 **Release date: Sep 19, 2023** ### Added - Exported the `EmptyValue` symbol as a public API. This allows custom functions to handle empty cell values. [#1232](https://github.com/handsontable/hyperformula/issues/1265) ### Changed - Improved the efficiency of the default date/time parsing methods. [#876](https://github.com/handsontable/hyperformula/issues/876) - Improved the efficiency of the operations on the dependency graph. [#876](https://github.com/handsontable/hyperformula/issues/876) ### Fixed - Fixed a bug where neighboring exported changes of an array formula were missing. [#1291](https://github.com/handsontable/hyperformula/issues/1291) - Fixed a typo in the source code of the `MatrixPlugin`. [#1306](https://github.com/handsontable/hyperformula/issues/1306) ## 2.5.0 **Release date: May 29, 2023** ### Added - Added a new function: ADDRESS. [#1221](https://github.com/handsontable/hyperformula/issues/1221) - Added a new function: HYPERLINK. [#1215](https://github.com/handsontable/hyperformula/issues/1215) - Added a new function: IFS. [#1157](https://github.com/handsontable/hyperformula/issues/1157) ### Changed - Optimized the [`updateConfig()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#updateconfig) method to rebuild HyperFormula only when the new configuration is different from the old one. [#1251](https://github.com/handsontable/hyperformula/issues/1251) ### Fixed - Fixed the SEARCH function to be case-insensitive regardless of HyperFormula's configuration. [#1225](https://github.com/handsontable/hyperformula/issues/1225) ## 2.4.0 **Release date: April 24, 2023** ### Added - Exported the [`CellError`](https://hyperformula.handsontable.com/docs/api/classes/cellerror.md) class as a public API. [#1232](https://github.com/handsontable/hyperformula/issues/1232) - Exported the [`SimpleRangeValue`](https://hyperformula.handsontable.com/docs/api/classes/simplerangevalue.md) class as a public API. [#1178](https://github.com/handsontable/hyperformula/issues/1178) ### Fixed - Fixed an `EmptyCellVertex` data integrity issue between the `AddressMapping` and `DependencyGraph` objects. [#1188](https://github.com/handsontable/hyperformula/issues/1188) - Fixed a build issue with M1- and M2-chip MacBooks. [#1166](https://github.com/handsontable/hyperformula/issues/1166) - Fixed an issue where the order of items returned by [`removeColumns()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#removecolumns) depended on the address mapping policy. [#1205](https://github.com/handsontable/hyperformula/issues/1205) ## 2.3.1 **Release date: March 3, 2023** ### Fixed - Fixed an issue where named-expression names were not allowed to start with a cell reference. [#1058](https://github.com/handsontable/hyperformula/issues/1058) - Fixed an issue where named-expression names were allowed to start with "R1C1" cell references. For better compatibility with other spreadsheet software, strings such as `R4C5`, `RC1000`, `R1C` or `RC` can't be used in named-expression names anymore. [#1058](https://github.com/handsontable/hyperformula/issues/1058) - Fixed an issue where using reversed ranges with absolute addressing could cause the `Incorrect array size` error. [#1106](https://github.com/handsontable/hyperformula/issues/1106) - Fixed an issue where removing a sheet (`removeSheet()`) without clearing it (`clearSheet()`) could cause an error. [#1121](https://github.com/handsontable/hyperformula/issues/1121) ## 2.3.0 **Release date: December 22, 2022** ### Added - Exported the [`ArraySize`](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md) class as a public API. [#843](https://github.com/handsontable/hyperformula/issues/843) - Renamed an internal interface from `ArgumentTypes` to [`FunctionArgumentType`](https://hyperformula.handsontable.com/docs/api/classes/hyperformulans.md#functionargumenttype), and exported it as a public API. [#1108](https://github.com/handsontable/hyperformula/pull/1108) - Exported `ImplementedFunctions` and `FunctionMetadata` as public APIs. [#1108](https://github.com/handsontable/hyperformula/pull/1108) ## 2.2.0 **Release date: November 17, 2022** ### Added - Added an American English (`enUS`) language pack. It's a convenience alias: it contains the same translations as the existing British English (`enGB`) language pack. [#1025](https://github.com/handsontable/hyperformula/issues/1025) ### Fixed - Fixed functions VLOOKUP and HLOOKUP to handle duplicates in the way specified by the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#HLOOKUP) standard. [#1072](https://github.com/handsontable/hyperformula/issues/1072) - Fixed the MATCH function to handle descending ranges in the way specified by the [OpenDocument](https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocument-v1.3-os-part4-formula.html#MATCH) standard. [#1063](https://github.com/handsontable/hyperformula/issues/1063) ## 2.1.0 **Release date: September 8, 2022** ### Added - Added two new functions: MAXIFS and MINIFS. [#1049](https://github.com/handsontable/hyperformula/issues/1049) ### Changed - Changed the rounding strategy of the default time-parsing function to be independent of the [`timeFormats`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#timeformats) configuration option. Now, time values are always rounded to the nearest millisecond (0.001 s). [#953](https://github.com/handsontable/hyperformula/issues/953) ### Fixed - Fixed a rounding issue that caused the TEXT function to convert dates and times to strings incorrectly. [#1043](https://github.com/handsontable/hyperformula/issues/1043) - Fixed an issue where functions SUMIF, SUMIFS, COUNTIF, COUNTIFS, and AVERAGEIF incorrectly handled complex numeric values. [#951](https://github.com/handsontable/hyperformula/issues/951) ### Removed - Removed all polyfills from the CommonJS build and the ES modules build. In the UMD build, kept only the polyfills required by the [supported browsers](https://hyperformula.handsontable.com/guide/supported-browsers.html). [#1011](https://github.com/handsontable/hyperformula/issues/1011) ## 2.0.1 **Release date: June 14, 2022** ### Changed - Changed the following npm scripts (used internally): `docs`, `docs:api`, `docs:dev`, `docs:build`, `coverage`, `typings:check`. [#977](https://github.com/handsontable/hyperformula/issues/977) ### Fixed - Fixed an issue where it was impossible to add a custom function with no `parameters`. [#968](https://github.com/handsontable/hyperformula/issues/968) ## 2.0.0 **Release date: April 14, 2022** ### Added - Added support for reversed ranges. [#834](https://github.com/handsontable/hyperformula/issues/834) - Added a new configuration option, [`ignoreWhiteSpace`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#ignorewhitespace), which allows for parsing formulas that contain whitespace characters of any kind. [#898](https://github.com/handsontable/hyperformula/issues/898) ### Changed - **Breaking change**: Removed the `gpu.js` dependency and its use, to speed up the installation time. [#812](https://github.com/handsontable/hyperformula/issues/812) - **Breaking change**: Removed the deprecated `gpujs` and `gpuMode` configuration options. [#812](https://github.com/handsontable/hyperformula/issues/812) ### Fixed - Fixed an issue where the RATE function didn't converge for some inputs. [#905](https://github.com/handsontable/hyperformula/issues/905) ## 1.3.1 **Release date: January 11, 2022** ### Fixed - Fixed an issue where warnings about deprecated configuration options were getting duplicated. [#882](https://github.com/handsontable/hyperformula/pull/882) ## 1.3.0 **Release date: October 20, 2021** ### Added - Added a new static property: [`HyperFormula.defaultConfig`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#defaultconfig). [#822](https://github.com/handsontable/hyperformula/issues/822) - The [`getFillRangeData()`](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#getfillrangedata) method can now use one sheet for its source and another sheet for its target. [#836](https://github.com/handsontable/hyperformula/issues/836) ### Fixed - Fixed the handling of Unicode characters and non-letter characters in the [PROPER](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#text) function. [#811](https://github.com/handsontable/hyperformula/issues/811) - Fixed unnecessary warnings caused by deprecated configuration options. [#830](https://github.com/handsontable/hyperformula/issues/830) - Fixed the [SUMPRODUCT](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md#math-and-trigonometry) function. [#810](https://github.com/handsontable/hyperformula/issues/810) ## 1.2.0 **Release date: September 23, 2021** ### Changed - Removed `gpu.js` from optional dependencies and marked config options `gpujs` and `gpuMode` as deprecated. ## 1.1.0 **Release date: August 12, 2021** ### Added - Added support for the array arithmetic mode in the `calculateFormula()` method. [#782](https://github.com/handsontable/hyperformula/issues/782) - Added a new `CellType` returned by `getCellType`: `CellType.ARRAYFORMULA`. It's assigned to the top-left corner of an array, and is recognized by the `isCellPartOfArray()` and `doesCellHaveFormula()` methods. [#781](https://github.com/handsontable/hyperformula/issues/781) ### Changed - Deprecated the `binarySearchThreshold` configuration option, as every search of sorted data always uses binary search. [#791](https://github.com/handsontable/hyperformula/pull/791) ### Fixed - Fixed an issue with searching sorted data. [#787](https://github.com/handsontable/hyperformula/issues/787) - Fixed the `destroy` method to properly destroy HyperFormula instances. [#788](https://github.com/handsontable/hyperformula/pull/788) ## 1.0.0 **Release date: July 15, 2021** ### Added - Added support for array arithmetic. [#628](https://github.com/handsontable/hyperformula/issues/628) - Added performance improvements for array handling. [#629](https://github.com/handsontable/hyperformula/issues/629) - Added ARRAYFORMULA function. [#630](https://github.com/handsontable/hyperformula/issues/630) - Added FILTER function. [#668](https://github.com/handsontable/hyperformula/issues/668) - Added ARRAY_CONSTRAIN function. [#661](https://github.com/handsontable/hyperformula/issues/661) - Added casting to scalars from non-range arrays. [#663](https://github.com/handsontable/hyperformula/issues/663) - Added support for range interpolation. [#665](https://github.com/handsontable/hyperformula/issues/665) - Added parsing of arrays in formulas (together with respective config options for separators). [#671](https://github.com/handsontable/hyperformula/issues/671) - Added support for vectorization of scalar functions. [#673](https://github.com/handsontable/hyperformula/issues/673) - Added support for time in JS `Date()` objects on the input. [#648](https://github.com/handsontable/hyperformula/issues/648) - Added validation of API argument types for simple types. [#654](https://github.com/handsontable/hyperformula/issues/654) - Added named expression handling to engine factories. [#680](https://github.com/handsontable/hyperformula/issues/680) - Added `getAllNamedExpressionsSerialized` method. [#680](https://github.com/handsontable/hyperformula/issues/680) - Added parsing of arrays in formulas (together with respective config options for separators). [#671](https://github.com/handsontable/hyperformula/issues/671) - Added utility function for filling ranges with source from other range. [#678](https://github.com/handsontable/hyperformula/issues/678) - Added pretty print for detailedCellError. [#712](https://github.com/handsontable/hyperformula/issues/712) - Added `simpleCellRangeFromString` and `simpleCellRangeToString` helpers. [#720](https://github.com/handsontable/hyperformula/issues/720) - Added `CellError` to exports. [#736](https://github.com/handsontable/hyperformula/issues/736) - Added mapping policies to the exports: `AlwaysDense`, `AlwaysSparse`, `DenseSparseChooseBasedOnThreshold`. [#747](https://github.com/handsontable/hyperformula/issues/747) - Added `#SPILL!` error type. [#708](https://github.com/handsontable/hyperformula/issues/708) - Added large tests for CRUD interactions. [#755](https://github.com/handsontable/hyperformula/issues/755) - Added a flag to `getFillRangeData` to support different types of offsetting. [#767](https://github.com/handsontable/hyperformula/issues/767) ### Changed - **Breaking change**: Changed API of many sheet-related methods to take sheetId instead of sheetName as an argument. [#645](https://github.com/handsontable/hyperformula/issues/645) - **Breaking change**: Removed support for matrix formulas (`{=FORMULA}`) notation. Engine now supports formulas returning array of values (instead of only scalars). [#652](https://github.com/handsontable/hyperformula/issues/652) - **Breaking change**: Removed numeric matrix detection along with matrixDetection and matrixDetectionThreshold config options. [#669](https://github.com/handsontable/hyperformula/issues/669) - **Breaking change**: Changed API of the following methods to take `SimpleCellRange` type argument: `copy`, `cut`, `getCellDependents`, `getCellPrecedents`, `getFillRangeData`, `getRangeFormulas`, `getRangeSerialized`, `getRangeValues`, `isItPossibleToMoveCells`, `isItPossibleToSetCellContents`, `moveCells`. [#687](https://github.com/handsontable/hyperformula/issues/687) - **Breaking change**: Changed the AGPLv3 license to GPLv3. - **Breaking change**: Removed the free non-commercial license. - **Breaking change**: Changed behaviour of `setCellContents` so that it is possible to override space occupied by spilled array. [#708](https://github.com/handsontable/hyperformula/issues/708) - **Breaking change**: Changed behaviour of `addRows/removeRows` so that it is possible to add/remove rows across spilled array without changing array size. [#708](https://github.com/handsontable/hyperformula/issues/708) - **Breaking change**: Changed behaviour of `addColumns/removeColumns` so that it is possible to add/remove columns across spilled array without changing array size. [#732](https://github.com/handsontable/hyperformula/issues/732) - **Breaking change**: Changed config options [#747](https://github.com/handsontable/hyperformula/issues/747): | before | after | | --------------------- | -------------------- | | matrixColumnSeparator | arrayColumnSeparator | | matrixRowSeparator | arrayRowSeparator | - **Breaking change**: Changed CellType.MATRIX to CellType.ARRAY [#747](https://github.com/handsontable/hyperformula/issues/747) - **Breaking change**: Changed API methods [#747](https://github.com/handsontable/hyperformula/issues/747): | before | after | | ------------------ | ----------------- | | matrixMapping | arrrayMapping | | isCellPartOfMatrix | isCellPartOfArray | - **Breaking change**: Changed Exceptions [#747](https://github.com/handsontable/hyperformula/issues/747): | before | after | | ---------------------------- | --------------------------- | | SourceLocationHasMatrixError | SourceLocationHasArrayError | | TargetLocationHasMatrixError | TargetLocationHasArrayError | - Changed SWITCH function, so it takes array as its first argument. - Changed TRANSPOSE function, so it works with data of any type. [#708](https://github.com/handsontable/hyperformula/issues/708) - Changed the way how we include `gpu.js` making it even more optional [#753](https://github.com/handsontable/hyperformula/issues/753) ### Fixed - Fixed an issue with arrays and cruds. [#651](https://github.com/handsontable/hyperformula/issues/651) - Fixed handling of arrays for ROWS/COLUMNS functions. [#677](https://github.com/handsontable/hyperformula/issues/677) - Fixed an issue with nested namedexpressions. [#679](https://github.com/handsontable/hyperformula/issues/679) - Fixed an issue with matrixDetection + number parsing. [#686](https://github.com/handsontable/hyperformula/issues/686) - Fixed an issue with NOW and TODAY functions. [#709](https://github.com/handsontable/hyperformula/issues/709) - Fixed an issue with MIN/MAX function caches. [#711](https://github.com/handsontable/hyperformula/issues/711) - Fixed an issue with caching and order of evaluation. [#735](https://github.com/handsontable/hyperformula/issues/735) ## 0.6.2 **Release date: May 26, 2021** ### Changed - Modified a private field in one of the classes to ensure broader compatibility with older TypeScript versions. [#681](https://github.com/handsontable/hyperformula/issues/681) ## 0.6.1 **Release date: May 24, 2021** ### Changed - Remove redundant `'assert'` dependency from the code. [#672](https://github.com/handsontable/hyperformula/issues/672) ### Fixed - Fixed library support for IE11. The `unorm` package is added to the dependencies. [#675](https://github.com/handsontable/hyperformula/issues/675) ## 0.6.0 **Release date: April 27, 2021** ### Added - Added two new fired events, for suspending and resuming execution. [#637](https://github.com/handsontable/hyperformula/issues/637) - Added listing in scopes to `listNamedExpressions` method. [#638](https://github.com/handsontable/hyperformula/issues/638) ### Changed - **Breaking change**: Moved `GPU.js` from `dependencies` to `devDependencies` and `optionalDependencies`. [#642](https://github.com/handsontable/hyperformula/issues/642) ### Fixed - Fixed issues with scoped named expression. [#646](https://github.com/handsontable/hyperformula/issues/646) , [#641](https://github.com/handsontable/hyperformula/issues/641) - Fixed an issue with losing formating info about DateTime numbers. [#626](https://github.com/handsontable/hyperformula/issues/626) ## 0.5.0 **Release date: April 15, 2021** ### Added - Added support for row and column reordering. [#343](https://github.com/handsontable/hyperformula/issues/343) - Added type inferrence for subtypes for number. [#313](https://github.com/handsontable/hyperformula/issues/313) - Added parsing of number literals containing '%' or currency symbol (default '$'). [#590](https://github.com/handsontable/hyperformula/issues/590) - Added ability to fallback to plain CPU implementation for functions that uses GPU.js [#355](https://github.com/handsontable/hyperformula/issues/355) ### Changed - **Breaking change**: A change to the type of value returned via serialization methods. [#617](https://github.com/handsontable/hyperformula/issues/617) - An input value should be preserved through serialization more precisely. [#617](https://github.com/handsontable/hyperformula/issues/617) - GPU.js constructor needs to be provided directly to engine configuration. [#355](https://github.com/handsontable/hyperformula/issues/355) - A deprecated config option vlookupThreshold has been removed. [#620](https://github.com/handsontable/hyperformula/issues/620) ### Fixed - Fixed minor issue. [#631](https://github.com/handsontable/hyperformula/issues/631) - Fixed a bug with serialization of some addresses after CRUDs. [#587](https://github.com/handsontable/hyperformula/issues/587) - Fixed a bug with MEDIAN function implementation. [#601](https://github.com/handsontable/hyperformula/issues/601) - Fixed a bug with copy-paste operation that could cause out of scope references [#591](https://github.com/handsontable/hyperformula/issues/591) - Fixed a bug with date parsing. [#614](https://github.com/handsontable/hyperformula/issues/614) - Fixed a bug where accent/case sensitivity was ignored for LOOKUPs. [#621](https://github.com/handsontable/hyperformula/issues/621) - Fixed a bug with handling of no time format/no date format scenarios. [#616](https://github.com/handsontable/hyperformula/issues/616) ## 0.4.0 **Release date: December 17, 2020** ### Added - Added 50 mathematical functions: ROMAN, ARABIC, FACT, FACTDOUBLE, COMBIN, COMBINA, GCD, LCM, MROUND, MULTINOMIAL, QUOTIENT, RANDBETWEEN, SERIESSUM, SIGN, SQRTPI, SUMX2MY2, SUMX2PY2, SUMXMY2, CEILING.MATH, FLOOR.MATH, FLOOR, CEILING.PRECISE, FLOOR.PRECISE, ISO.CEILING, COMPLEX, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN. [#537](https://github.com/handsontable/hyperformula/issues/537) , [#582](https://github.com/handsontable/hyperformula/issues/582) , [#281](https://github.com/handsontable/hyperformula/issues/281) , [#581](https://github.com/handsontable/hyperformula/issues/581) - Added 106 statistical functions: EXPON.DIST, EXPONDIST, FISHER, FISHERINV, GAMMA, GAMMA.DIST, GAMMADIST, GAMMALN, GAMMALN.PRECISE, GAMMA.INV, GAMMAINV, GAUSS, BETA.DIST, BETADIST, BETA.INV, BETAINV, BINOM.DIST, BINOMDIST, BINOM.INV, BESSELI, BESSELJ, BESSELK, BESSELY, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHIDIST, CHIINV, F.DIST, F.DIST.RT, F.INV, F.INV.RT, FDIST, FINV, WEIBULL, WEIBULL.DIST, HYPGEOMDIST, HYPGEOM.DIST, T.DIST, T.DIST.2T, T.DIST.RT, T.INV, T.INV.2T, TDIST, TINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, LOGINV, NORM.DIST, NORMDIST, NORM.S.DIST, NORMSDIST, NORM.INV, NORMINV, NORM.S.INV, NORMSINV, PHI, NEGBINOM.DIST, NEGBINOMDIST, POISSON, POISSON.DIST, LARGE, SMALL, AVEDEV, CONFIDENCE, CONFIDENCE.NORM, CONFIDENCE.T, DEVSQ, GEOMEAN, HARMEAN, CRITBINOM, COVAR, COVARIANCE.P, COVARIANCE.S, PEARSON, RSQ, STANDARDIZE, Z.TEST, ZTEST, F.TEST, FTEST, STEYX, SLOPE, CHITEST, CHISQ.TEST, T.TEST, TTEST, SKEW.P, SKEW, WEIBULLDIST, VARS, TINV2T, TDISTRT, TDIST2T, STDEVS, FINVRT, FDISTRT, CHIDISTRT, CHIINVRT, COVARIANCEP, COVARIANCES, LOGNORMINV, POISSONDIST, SKEWP. [#152](https://github.com/handsontable/hyperformula/issues/152) , [#154](https://github.com/handsontable/hyperformula/issues/154) , [#160](https://github.com/handsontable/hyperformula/issues/160) - Added function aliases mechanism. [#569](https://github.com/handsontable/hyperformula/pull/569) - Added support for scientific notation. [#579](https://github.com/handsontable/hyperformula/issues/579) - Added support for complex numbers. [#281](https://github.com/handsontable/hyperformula/issues/281) ### Changed - A **breaking change**: CEILING function implementation to be consistent with existing implementations. [#582](https://github.com/handsontable/hyperformula/issues/582) ### Fixed - Fixed a problem with dependencies not collected for specific functions. [#550](https://github.com/handsontable/hyperformula/issues/550) , [#549](https://github.com/handsontable/hyperformula/issues/549) - Fixed a minor problem with dependencies under nested parenthesis. [#549](https://github.com/handsontable/hyperformula/issues/549) , [#558](https://github.com/handsontable/hyperformula/issues/558) - Fixed a problem with HLOOKUP/VLOOKUP getting stuck in binary search. [#559](https://github.com/handsontable/hyperformula/issues/559) , [#562](https://github.com/handsontable/hyperformula/issues/562) - Fixed a problem with the logic of dependency resolving. [#561](https://github.com/handsontable/hyperformula/issues/561) , [#563](https://github.com/handsontable/hyperformula/pull/563) - Fixed a minor bug with ATAN2 function. [#581](https://github.com/handsontable/hyperformula/issues/581) ## 0.3.0 **Release date: October 22, 2020** ### Added - Added 9 text functions EXACT, LOWER, UPPER, MID, T, SUBSTITUTE, REPLACE, UNICODE, UNICHAR. [#159](https://github.com/handsontable/hyperformula/issues/159) - Added 5 datetime functions: INTERVAL, NETWORKDAYS, NETWORKDAYS.INTL, WORKDAY, WORKDAY.INTL. [#153](https://github.com/handsontable/hyperformula/issues/153) - Added 3 information functions HLOOKUP, ROW, COLUMN. [#520](https://github.com/handsontable/hyperformula/pull/520) - Added 5 financial functions FVSCHEDULE, NPV, MIRR, PDURATION, XNPV. [#542](https://github.com/handsontable/hyperformula/pull/542) - Added 12 statistical functions VAR.P, VAR.S, VARA, VARPA, STDEV.P, STDEV.S, STDEVA, STDEVPA, VARP, VAR, STDEVP, STDEV. [#536](https://github.com/handsontable/hyperformula/pull/536) - Added 2 mathematical functions SUBTOTAL, PRODUCT. [#536](https://github.com/handsontable/hyperformula/pull/536) - Added 15 operator functions HF.ADD, HF.CONCAT, HF.DIVIDE, HF.EQ, HF.GT, HF.GTE, HF.LT, HF.LTE, HF.MINUS, HF.MULTIPLY, HF.NE, HF.POW, HF.UMINUS, HF.UNARY_PERCENT, HF.UPLUS. [#543](https://github.com/handsontable/hyperformula/pull/543) ### Fixed - Fixed multiple issues with VLOOKUP function. [#526](https://github.com/handsontable/hyperformula/issues/526) and [#528](https://github.com/handsontable/hyperformula/issues/528) - Fixed MATCH and INDEX functions compatiblity. [#520](https://github.com/handsontable/hyperformula/pull/520) - Fixed issue with config update that does not preserve named expressions. [#527](https://github.com/handsontable/hyperformula/issues/527) - Fixed minor issue with arithmetic operations error messages. [#532](https://github.com/handsontable/hyperformula/issues/532) ## 0.2.0 **Release date: September 22, 2020** ### Added - Added 9 text functions LEN, TRIM, PROPER, CLEAN, REPT, RIGHT, LEFT, SEARCH, FIND. [#221](https://github.com/handsontable/hyperformula/issues/221) - Added helper methods for keeping track of cell/range dependencies: `getCellPrecedents` and `getCellDependents`. [#441](https://github.com/handsontable/hyperformula/issues/441) - Added 22 financial functions FV, PMT, PPMT, IPMT, CUMIPMT, CUMPRINC, DB, DDB, DOLLARDE, DOLLARFR, EFFECT, ISPMT, NOMINAL, NPER, RATE, PV, RRI, SLN, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD. [#494](https://github.com/handsontable/hyperformula/issues/494) - Added FORMULATEXT function. [#422](https://github.com/handsontable/hyperformula/pull/422) - Added 8 information functions ISERR, ISNA, ISREF, NA, SHEET, SHEETS, ISBINARY, ISFORMULA. [#481](https://github.com/handsontable/hyperformula/issues/481) - Added 15 date functions: WEEKDAY, DATEVALUE, HOUR, MINUTE, SECOND, TIME, TIMEVALUE, NOW, TODAY, EDATE, WEEKNUM, ISOWEEKNUM, DATEDIF, DAYS360, YEARFRAC. [#483](https://github.com/handsontable/hyperformula/issues/483) - Added 13 trigonometry functions: SEC, CSC, SINH, COSH, TANH, COTH, SECH, CSCH, ACOT, ASINH, ACOSH, ATANH, ACOTH. [#485](https://github.com/handsontable/hyperformula/issues/485) - Added 6 engineering functions: OCT2BIN, OCT2DEC, OCT2HEX, HEX2BIN, HEX2OCT, HEX2DEC. [#497](https://github.com/handsontable/hyperformula/issues/497) - Added a configuration option to evaluate reference to an empty cells as a zero. [#476](https://github.com/handsontable/hyperformula/issues/476) - Added new error type: missing licence. [#306](https://github.com/handsontable/hyperformula/issues/306) - Added detailed error messages for error values. [#506](https://github.com/handsontable/hyperformula/issues/506) - Added ability to handle more characters in quoted sheet names. [#509](https://github.com/handsontable/hyperformula/issues/509) - Added support for escaping apostrophe character in quoted sheet names. [#64](https://github.com/handsontable/hyperformula/issues/64) ### Changed - Operation `moveCells` creating cyclic dependencies does not cause losing original formula. [#479](https://github.com/handsontable/hyperformula/issues/479) - Simplified adding new function modules, reworked (simplified) implementations of existing modules. [#480](https://github.com/handsontable/hyperformula/issues/480) ### Fixed - Fixed hardcoding of languages in i18n tests. [#471](https://github.com/handsontable/hyperformula/issues/471) - Fixed many compilation warnings based on LGTM analysis. [#473](https://github.com/handsontable/hyperformula/issues/473) - Fixed `moveCells` behaviour when moving part of a range. [#479](https://github.com/handsontable/hyperformula/issues/479) - Fixed `moveColumns`/`moveRows` inconsistent behaviour. [#479](https://github.com/handsontable/hyperformula/issues/479) - Fixed undo of `moveColumns`/`moveRows` operations. [#479](https://github.com/handsontable/hyperformula/issues/479) - Fixed name-collision issue in translations. [#486](https://github.com/handsontable/hyperformula/issues/486) - Fixed bug in concatenation + `nullValue`. [#495](https://github.com/handsontable/hyperformula/issues/495) - Fixed bug when undoing irreversible operation. [#502](https://github.com/handsontable/hyperformula/issues/502) - Fixed minor issue with CHAR function logic. [#510](https://github.com/handsontable/hyperformula/issues/510) - Fixed `simpleCellAddressToString` behaviour when converting quoted sheet names. [#514](https://github.com/handsontable/hyperformula/issues/514) - Fixed issues with numeric aggregation functions. [#515](https://github.com/handsontable/hyperformula/issues/515) ## 0.1.3 **Release date: July 21, 2020** ### Fixed - Fixed a bug in coercion of empty string to boolean value. [#453](https://github.com/handsontable/hyperformula/issues/453) ## 0.1.2 **Release date: July 13, 2020** ### Fixed - Fixed a bug in topological ordering module. [#442](https://github.com/handsontable/hyperformula/issues/442) ## 0.1.1 **Release date: July 1, 2020** ### Fixed - Fixed a typo in a config option from `useRegularExpresssions` to `useRegularExpressions`. [#437](https://github.com/handsontable/hyperformula/issues/437) ## 0.1.0 **Alpha release date: June 25, 2020 🎉** - Core functionality of the engine - Support for data types: String, Error, Number, Date, Time, DateTime, Duration, Distinct Logical - Support for logical operators: =, <>, >, <, >=, <= - Support for arithmetic operators: +, -, \*, /, % - Support for text operator: & - CRUD operations: - modifying the value of a single cell - adding/deleting row/column - reading the value or formula from the selected cell - moving a cell or a block of cells - deleting a subset of rows or columns - recalculating and refreshing of a worksheet - batching CRUD operations - support for wildcards and regex inside criterion functions like SUMIF, COUNTIF - named expressions support - support for cut, copy, paste - undo/redo support - The following functions: ABS(), ACOS(), AND(), ASIN(), ATAN(), ATAN2(), AVERAGE(), AVERAGEA(), AVERAGEIF(), BASE(), BIN2DEC(), BIN2HEX()BIN2OCT(), BITAND(), BITLSHIFT(), BITOR(), BITRSHIFT(), BITXOR(), CEILING(), CHAR(), CHOOSE(), CODE(), COLUMNS(), CONCATENATE(), CORREL(), COS(), COT(), COUNT(), COUNTA(), COUNTBLANK(), COUNTIF(), COUNTIFS(), COUNTUNIQUE(), DATE(), DAY(), DAYS(), DEC2BIN(), DEC2HEX(), DEC2OCT(), DECIMAL(), DEGREES(), DELTA(), E(), EOMONTH(), ERF(), ERFC(), EVEN(), EXP(), FALSE(), IF(), IFERROR(), IFNA(), INDEX(), INT(), ISBLANK(), ISERROR(), ISEVEN(), ISLOGICAL(), ISNONTEXT(), ISNUMBER(), ISODD(), ISTEXT(), LN(), LOG(), LOG10(), MATCH(), MAX(), MAXA(), MAXPOOL(), MEDIAN(), MEDIANPOOL(), MIN(), MINA(), MMULT(), MOD(), MONTH(), NOT(), ODD(), OFFSET(), OR(), PI(), POWER(), RADIANS() , RAND(), ROUND(), ROUNDDOWN(), ROUNDUP(), ROWS(), SIN(), SPLIT(), SQRT(), SUM(), SUMIF(), SUMIFS(), SUMPRODUCT(), SUMSQ(), SWITCH(), TAN(), TEXT(), TRANSPOSE(), TRUE(), TRUNC(), VLOOKUP(), XOR(), YEAR() - Support for volatile functions - Cultures supports - can be configured according to the application need - Custom functions support - Set [OpenDocument v1.2](http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part2.html) as a standard to follow - Error handling: - Division by zero: #DIV/0! - Unknown function name: #NAME? - Wrong type of argument in a function or wrong type of operator: #VALUE! - Invalid numeric values: #NUM! - No value available: #N/A - Cyclic dependency: #CYCLE! - Wrong address reference: #REF - Built-in function translation support for 16 languages: English, Czech, Danish, Dutch, Finnish, French, German, Hungarian, Italian, Norwegian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish. --- ## Specifications and limits URL: https://hyperformula.handsontable.com/docs/guide/specifications-and-limits # Specifications and limits The following table presents the limits of features. Many of them are bounded only by system resources. This means the actual limit depends on several factors, for example, the resources (such as available memory) of the device HyperFormula is running on. ## Sheet and cell limits
Feature Maximum limit
Number of cells

Limited by system resources (JavaScript)

Can be set in the configuration:

  • MaxRows (default: 40 000)
  • MaxColumns (default: 18 278)
Number of nested levels of functions 120
Earliest date allowed for the calculation December 30, 1899
Latest date allowed for the calculation December 31, 9999
Number of named expressions Limited by system resources (JavaScript)
Characters in a cell Limited by system resources (JavaScript)
Characters in a named expression Limited by system resources (JavaScript)
Characters in a sheet name Limited by system resources (JavaScript)
Characters in a column name Depends on the configuration of MaxColumns
Number of sheets in a workbook Limited by system resources (JavaScript)
Number of custom functions Limited by system resources (JavaScript)
Undo levels Limited by the configuration - undoLimit (default: 20)
Number of elements in a batch operation Limited by system resources (JavaScript)
## Calculation limits | Feature | Maximum limit | |:-------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Number precision | ~15 significant digits (with all the [limitations of the JavaScript floating-point arithmetics](https://patrickkarsh.medium.com/why-math-is-hard-in-javascript-floating-point-precision-in-javascript-41706aa7a89d)). HyperFormula rounds the operation results according to the [precisionRounding](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.html#precisionrounding) configuration option. | | Smallest magnitude allowed negative number | -5E-324 (inherited from JavaScript) | | Smallest magnitude allowed positive number | 5E-324 (inherited from JavaScript) | | Largest magnitude allowed positive number | 1.79E+308 (inherited from JavaScript) | | Largest magnitude allowed negative number | -1.79E+308 (inherited from JavaScript) | | Length of a single formula's contents | Limited by system resources (JavaScript) | | Number of iterations | Not supported | | Arguments in function | Limited by system resources (JavaScript) | | Number of cross-sheet dependencies | Limited by system resources (JavaScript) | | Number of dependencies in a single cell | Limited by system resources (JavaScript) | --- ## Types of operators URL: https://hyperformula.handsontable.com/docs/guide/types-of-operators # Types of operators The operators specify what type of actions are performed on arguments (operands) in the formula. HyperFormula supports the operators that are common in spreadsheet software. They are calculated in a [specific order](https://hyperformula.handsontable.com/docs/guide/order-of-precendece.md) which can be altered by the use of parentheses. HyperFormula supports the following operators: * Unary operators * Binary arithmetic operators * Comparison operators * Concatenation operator * Reference operators ## Unary operators The unary operators have only one argument (operand). For example, when the unary negation operation is provided with a number, it returns the negative value of that number. | Operator | Meaning | Example | Description | | :--- | :--- | :--- | :--- | | - | Unary minus | -a | Returns the negative of its argument. | | + | Unary plus | +a | Returns the positive of its argument. | | % | Percent | a% | Calculate the percent of an argument. | ## Binary arithmetic operators The binary arithmetic operators enable the computation of basic mathematical operations. They don't have to be wrapped with any functions. This table shows the basic behavior of the binary arithmetic operators: | Operator | Meaning | Example | Description | | :--- | :--- | :--- | :--- | | + | Addition | a + b | Add the two arguments. | | - | Subtraction | a - b | Subtract the second argument from the first argument. | | * | Multiplication | a * b | Multiply the two arguments. | | / | Division | a / b | Divide the first argument by the second argument. | | ^ | Exponentiation | a ^ b | Raise the first argument by the power of the second argument. | You are probably wondering why the _modulo_ operator is missing. It is supported by the function `MOD` so **instead of writing a % b**, as you would in a regular mathematical equation, you use a formula like this: **=MOD(a, b)**. ## Comparison operators The binary relational operators, when used in a formula, return boolean or logical values. Here are some very general rules: | Operator | Meaning | Example | Description | | :--- | :--- | :--- | :--- | | = | Equal to | a = b | True if a is equal to b. | | < | Less than | a < b | True if a is less than b. | | > | Greater than | a > b | True if a is greater than b. | | <= | Less than or equal | a <= b | True if a is less than or equal to b. | | >= | Greater than or equal | a >= b | True if a is greater than or equal to b. | | <> | Not equal to | a <> b | True if a is not equal to b. | ### Type coercion HyperFormula does type coercion and it can have an impact on comparing, adding, or any other operation between **values of a different type**. The tables represent some operations between different types and their results. ## Boolean to int coercion, basic arithmetic operations ### a) true and null | Operation | Result | | :--- | :--- | | true + null | 1 | | true - null | 1 | | true * null | 0 | | true / null | #DIV/0! | | true^null | 1 | | +true (unary plus true) | true | | -true (unary minus true) | -1 | | true% | 0.01 | ### b) null and true | Operation | Result | | :--- | :--- | | null + true | 1 | | null - true | -1 | | null * true | 0 | | null / true | 0 | | null ^ true | 0 | | +null (unary plus null) | null | | -null (unary minus null) | 0 | | null% | 0 | ### c) true and true | Operation | Result | | :--- | :--- | | true + true | 2 | | true - true | 0 | | true * true | 1 | | true / true | 1 | | true ^ true | 1 | ### d) false and true | Operation | Result | | :--- | :--- | | false + true | 1 | | false - true | -1 | | false * true | 0 | | false / true | 0 | | false ^ true | 0 | ### e) true and false | Operation | Result | | :--- | :--- | | true + false | 1 | | true - false | 1 | | true * false | 0 | | true / false | #DIV/0! | | true ^ false | 1 | ### f) false and false | Operation | Result | | :--- | :--- | | false + false | 0 | | false - false | 0 | | false * false | 0 | | false / false | #DIV/0! | | false ^ false | 1 | | +false (unary plus false) | false | | -false (unary minus false) | 0 | | false% | 0 | ### g) null and false | Operation | Result | | :--- | :--- | | null + false | 0 | | null - false | 0 | | null * false | 0 | | null / false | #DIV/0! | | null ^ false | 1 | ## Order operations, comparisons ### a) Empty string ("") and null | Operation | Result | | :--- | :--- | | "" > null | false | | "" < null | false | | "" >= null | true | | "" <= null | true | ### b) String ("string") and boolean | Operation | Result | | :--- | :--- | | "string" > false | false | | "string" < false | true | | "string" >= false | false | | "string" <= false | true | ### c) Null and false | Operation | Result | | :--- | :--- | | null > false | false | | null < false | false | | null >= false | true | | null <= false | true | ### d) Null and positive integer | Operation | Result | | :--- | :--- | | null > 1 | false | | null < 1 | true | | null >= 1 | false | | null <= 1 | true | ### e) Negative integer and null | Operation | Result | | :--- | :--- | | -1 > null | false | | -1 < null | true | | -1 >= null | false | | -1 <= null | true | ### f) 0 and null | Operation | Result | | :--- | :--- | | 0 > null | false | | 0 < null | false | | 0 >= null | true | | 0 <= null | true | ### g) 0 and false | Operation | Result | | :--- | :--- | | 0 > false | false | | 0 < false | true | | 0 >= false | false | | 0 <= false | true | | 0 = false | false | ### h) Positive integer and true | Operation | Result | | :--- | :--- | | 1 > true | false | | 1 < true | true | | 1 >= true | false | | 1 <= true | true | | 1 = true | false | ## Comparing strings By default, HyperFormula is case and accent insensitive. This means it will ignore upper and lower-case letters and accents during the comparison. For example, if you compare `AsTrOnAuT` with `aStroNaut` they will be understood as identical, the same goes for `Préservation` and `Preservation`. It applies to comparison operators only. It can be configured with `accentSensitive` and `caseSensitive` options in the [configuration](https://hyperformula.handsontable.com/docs/guide/configuration-options.md). Apart from accents and case sensitivity, you can also configure `caseFirst.` This option defines whether upper case or lower case should come first. Additionally the `ignorePunctuation` option specifies whether punctuation should be ignored in string comparison. By default `caseFirst` is set to `'lower'` and `ignorePunctuation` is set to `false`. For more details see the official [API reference](https://hyperformula.handsontable.com/docs/api) of HyperFormula. Here is an example configuration that overwrites default settings: ```javascript // this part of the configuration shows options // related to strings only const options = { caseSensitive: true, accentSensitive: true, caseFirst: 'upper', ignorePunctuation: true }; ``` ## Concatenation operator The concatenation operator is used to combine multiple text strings into a single value. | Operator | Meaning | Example | Description | | :--- | :--- | :--- | :--- | | & | Concatenation | "a" & "b" | Concatenates two arguments (left and right) into one | ## Reference operators The reference operators are used to perform calculations of combined ranges. | Operator | Meaning | Example | Description | | :--- | :--- | :--- | :--- | | : (colon) | Range operator | A1:B1 | Makes one reference to multiple cells between the two specified references. | | , (comma) | Union operator | A1:B1,A2:B2 | Returns the intersection of multiple ranges. | | (space) | Intersection operator | A1:B1 A2:B2 | Finds the intersection of the two ranges. | --- ## Types of values URL: https://hyperformula.handsontable.com/docs/guide/types-of-values # Types of values In HyperFormula, values can be of type Number, Text, Logical, Date, Time, DateTime, Error, Currency, or Percentage depending on the data. Functions may work differently based on the types of arguments. | Type of value | Description | |:---------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Number | A numeric value such as 0, 2, -40, 0.1, and also scientific notation e.g. 5.6E+01; with a period as a default decimal separator. | | Text (string) | A text value, like "ABC", "apollo". Inside a formula, it should be enclosed in double quotes (`"`). | | Logical (Distinct Boolean) | A logical value might be one of two values: TRUE or FALSE. Please note that even if there is type coercion this will be recognized as TRUE/FALSE when comparing to numbers. It will not be recognized as 1 or 0. | | Date | A Gregorian calendar date in DD/MM/YYYY (default format), like 22/06/2022. All dates from 30/12/1899 to 31/12/9999 are supported. | | Time | A time in hh:mm:ss or hh:mm (default format), like 10:40:16. | | DateTime | Date and Time types combined into one, like 22/06/2022 10:40:16. | | Error | An error returned as a result of formula calculation, like #REF! | | Currency | Number representing currency | | Percentage | Number representing percentage | ## How cell value types are determined HyperFormula automatically detects the type of cell content when you set a value using methods like `setCellContents`, `buildFromArray`, or `setSheetContent`. The type detection follows this priority order: ### For JavaScript values When you pass JavaScript values directly (not as strings): - `number` → **Number type** - `boolean` → **Logical type** - `Date` object → **Date/DateTime type** (converted to internal numeric representation) - `null` or `undefined` → **Empty cell** ```js const hf = HyperFormula.buildFromArray([ [42], // Number [true], // Logical [new Date()], // Date/DateTime [null], // Empty ]); ``` ### For string values When you pass string values, HyperFormula detects the type as follows: - String is "TRUE" or "FALSE" (case-insensitive) → **Logical type** - String starting with `=` → **Formula type** - String ending with `%` → **Percentage type** - String contains currency symbol → **Currency type** - String can be parsed as a number → **Number type** - String matches date/time format → **Date/Time/DateTime type** - None of the above match → **Text type** ```js const hf = HyperFormula.buildFromArray([ ["TRUE"], // Logical ["true"], // Logical ["=SUM(1,2,3)"], // Formula ["25%"], // Percentage (0.25) ["$100"], // Currency (100) ["123.45"], // Number ["5E+01"], // Number ["22/06/2022 10:40:16"], // DateTime ["22/06/2022"], // Date ["10:40:16"], // Time ["Hello"], // Text ]); ``` ### Forcing the text value type Sometimes a value should be treated as text even though it's parsable as a formula, number, date, time, datetime, boolean, currency or percentage. Typical examples are numeric values with no number semantics, such as ZIP codes, bank sort codes, social security numbers, etc. To prevent the automatic type conversion, prepend the value with an apostrophe (`'`). ```js const hf = HyperFormula.buildFromArray([ ["11201"], // a number: 11201 ["'11201"], // a string: "11201" ["22/06/2022"], // a date: June 22nd 2022 ["'22/06/2022"], // a string: "22/06/2022" ]); // a formula: SUM(B1,B2) hf.setCellContents({ col: 0, row: 4, sheet: 0 }, [["=SUM(B1,B2)"]]); // a string: "=SUM(B1,B2)" hf.setCellContents({ col: 0, row: 5, sheet: 0 }, [["'=SUM(B1,B2)"]]); ``` ## Date and time values For better compatibility with other spreadsheet software, HyperFormula stores date and time values as numbers. This makes it easier to perform mathematical operations such as calculating the number of days between two dates. - A Date value is represented as the number of full days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). - A Time value is represented as a fraction of a full day. - A DateTime value is represented as the number of (possibly fractional) days since [`nullDate`](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md#nulldate). ## Text values When working with text values directly inside formulas, you must enclose them in double quotes (`"`). This is different from entering text into cells, where quotes are not required. E.g.: ``` =IF(B1="Active", "Status OK", "Check Status") ``` ## Getting cell type Cells have types that can be retrieved by using the `getCellType` method. Cell content is not calculated and the method returns only the type, so, for example, you can check if there is a formula inside a cell. Here is the list of possible cell types: `'FORMULA'`, `'VALUE'`, `'ARRAY'`, `'EMPTY`, `ARRAYFORMULA`. ## Getting cell value type You can also use the `getCellValueType` method which returns the calculated value type, so a cell's value for the formula: `'=SUM(1, 2, 3)'` will be 'NUMBER'. Here is the list of possible cell value types: `'NUMBER'`, `'STRING'`, `'BOOLEAN'`, `'ERROR'`, `'EMPTY'`. ## Getting detailed cell value type Currently, number type contains several subtypes (date, time, datetime, currency, percentage), that can be used interchangeably with numbers in computation. We keep track of those, so e.g. if a function produces currency-type output, and later the value is used in arithmetic operations, the output of those is as well-marked as currency-type. Info about those can be extracted via `getCellValueDetailedType` function. Auxiliary information about formatting (if there is any) is available via `getCellValueFormat` function. In case of currency, it would be the currency symbol used when parsing the currency (e.g. '$'). --- ## Supported browsers URL: https://hyperformula.handsontable.com/docs/guide/supported-browsers # Supported browsers Each release of HyperFormula is tested on the **two latest versions** of every modern browser, on both mobile and desktop. In addition to running unit tests, we focus on two factors that are crucial for all users: performance and accuracy of calculations. ## List of supported browsers | Desktop Browsers | Mobile Browsers | | :--------------- | :------------------ | | Chrome | Chrome | | Firefox | Firefox for Android | | Safari | Firefox for iOS | | Edge | Safari iOS | | UC Browser | UC Browser * | | QQ browser | Opera | | | Samsung Internet | ## Full ICU support Browsers that do not support full-icu (e.g., UC Browser mobile) will not handle the comparison of accented strings properly. In these browsers, string comparison might give different results than in browsers that fully support the feature. Concerning full-icu, Node.js 13 or higher is required to handle string comparison properly. This can also be achieved with lower versions, like Node.js 10, but it requires the installation of the `full-icu` additional dependency. --- ## Undo-redo URL: https://hyperformula.handsontable.com/docs/guide/undo-redo # Undo-redo HyperFormula supports undo-redo for CRUD and move operations. By default, you can **undo 20 actions.** The `undoLimit` can be changed inside the [configuration options](https://hyperformula.handsontable.com/docs/guide/configuration-options.md) so you can adapt that number to your needs. Be careful when setting `undoLimit` to large numbers. It may result in performance issues. Undo and redo work together as a synced pair, so each time you **undo** some action it is put onto a **redo** stack. **Named expressions** behave just like any other [CRUD operation](https://hyperformula.handsontable.com/docs/guide/basic-operations). ## isThereSomething* methods There are two methods which can be used to check the actual state of the undo-redo stack:`isThereSomethingToUndo` and `isThereSomethingToRedo`. ## Batch operations When you [batch several operations](https://hyperformula.handsontable.com/docs/guide/batch-operations.md) remember that undo-redo will recognize them as a single cumulative operation. --- ## Volatile functions URL: https://hyperformula.handsontable.com/docs/guide/volatile-functions # Volatile functions If you work with spreadsheet software regularly, then you've probably heard about Volatile Functions. They are distinctive because they affect the way the calculation engine works. **Every cell dependent on a volatile function is recalculated upon every worksheet change triggered by the operations listed below (volatile actions).** HyperFormula uses a dependency tree to keep track of all related cells and ranges of cells. On top of that, it constructs a calculation chain which determines the order in which the recalculation process should be done. Usually, only cells marked as "dirty" are calculated selectively. However, this is not the case when a volatile function exists somewhere within the workbook. Volatile functions are always treated as "dirty" and recalculated on most actions. Depending on how many cells are dependent directly or indirectly on the volatile function, it may impact the engine's performance. Use them with caution, especially in large workbooks. ## Volatile functions Volatile functions are recalculated on every volatile action, regardless of the arguments passed in the function call. Functions that depend on the structure of the sheet act as if they were volatile but only on operations on the sheet structure, such as adding or removing rows or columns. #### Built-in volatile functions: - RAND - RANDBETWEEN - NOW - TODAY #### Built-in functions that depend on the structure of the sheet: - COLUMN - ROW - COLUMNS - ROWS - FORMULATEXT See the complete [list of functions](https://hyperformula.handsontable.com/docs/guide/built-in-functions.md) available. ## Volatile actions These actions trigger the recalculation process of volatile functions: | Description | Related method | |:---------------------------------------|:------------------------| | Recalculate on demand | `rebuildAndRecalculate` | | Resume an automatic recalculation mode | `resumeEvaluation` | | Batch operations | `batch` | | Modify cell content | `setCellContents` | | Modify sheet content | `setSheetContent` | | Clear sheet content | `clearSheet` | | Insert a row | `addRows` | | Remove a row | `removeRows` | | Insert a column | `addColumns` | | Remove a column | `removeColumns` | | Move a cell | `moveCells` | | Move a row | `moveRows` | | Move a column | `moveColumns` | | Add a defined name | `addNamedExpression` | | Modify a defined name | `changeNamedExpression` | | Remove a defined name | `removeNamedExpression` | | Add a sheet | `addSheet` | | Remove a sheet | `removeSheet` | | Rename a sheet | `renameSheet` | | Undo | `undo` | | Redo | `redo` | | Cut | `cut` | | Paste | `paste` | ## Tweaking performance The extensive use of volatile functions may cause a performance drop. To reduce the negative effect, you can try [batching these operations](https://hyperformula.handsontable.com/docs/guide/batch-operations.md). ## Volatile custom functions There is a way to mark a custom function as volatile: ```javascript // this is an example of how the RAND function is implemented // you can do the same with a custom function 'RAND': { method: 'rand', isVolatile: true, }, ``` You can find more information about creating custom functions in [this section](https://hyperformula.handsontable.com/docs/guide/custom-functions).