# 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/
An open-source headless spreadsheet for business web apps
--- 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.4.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 --- ## 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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L458)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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)›* --- ## 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/9c22416/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/9c22416/src/Operations.ts#L99)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:98](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/Operations.ts#L103)* **Returns:** *[ColumnRowIndex](https://hyperformula.handsontable.com/docs/api/globals.md#columnrowindex)[]* --- ## API Reference Overview URL: https://hyperformula.handsontable.com/docs/api/ # API Reference Overview Welcome to the HyperFormula `v3.4.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: 12/08/2026 17:13:12 ### 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'); ``` --- ## 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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L512)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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)›* --- ## 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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L46)* ## Accessors ### sheet • **get sheet**(): *number* *Defined in [src/AbsoluteCellRange.ts:60](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L267)* **Returns:** *number* ___ ### includesColumn ▸ **includesColumn**(`column`: number): *boolean* *Defined in [src/AbsoluteCellRange.ts:208](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L140)* **Returns:** *boolean* ___ ### moveToSheet ▸ **moveToSheet**(`toSheet`: number): *void* *Defined in [src/AbsoluteCellRange.ts:234](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/AbsoluteCellRange.ts#L247)* **Returns:** *boolean* ___ ### size ▸ **size**(): *number* *Defined in [src/AbsoluteCellRange.ts:271](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L271)* **Returns:** *number* ___ ### toString ▸ **toString**(): *string* *Defined in [src/AbsoluteCellRange.ts:259](https://github.com/handsontable/hyperformula/blob/9c22416/src/AbsoluteCellRange.ts#L259)* **Returns:** *string* ___ ### width ▸ **width**(): *number* *Defined in [src/AbsoluteCellRange.ts:263](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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)›* --- ## /api-ref-readme.html URL: https://hyperformula.handsontable.com/docs/api-ref-readme Welcome to the HyperFormula `v3.4.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: 12/08/2026 17:13:12 ### 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'); ``` --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L390)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:389](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/9c22416/src/UndoRedo.ts#L262)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:261](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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:391](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L391)* **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/9c22416/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/9c22416/src/ArrayValue.ts#L46)* ## Methods ### addColumns ▸ **addColumns**(`aboveColumn`: number, `numberOfColumns`: number): *void* *Defined in [src/ArrayValue.ts:75](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/ArrayValue.ts#L58)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[ArrayValue](https://hyperformula.handsontable.com/docs/api/classes/arrayvalue.md)‹›* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L449)* **Returns:** *Generator‹[UndoEntry](https://hyperformula.handsontable.com/docs/api/interfaces/undoentry.md), void, unknown›* --- ## 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/9c22416/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/9c22416/src/ArraySize.ts#L17)* ___ ### isRef • **isRef**: *boolean* *Defined in [src/ArraySize.ts:18](https://github.com/handsontable/hyperformula/blob/9c22416/src/ArraySize.ts#L18)* ___ ### width • **width**: *number* *Defined in [src/ArraySize.ts:16](https://github.com/handsontable/hyperformula/blob/9c22416/src/ArraySize.ts#L16)* ## Methods ### isScalar ▸ **isScalar**(): *boolean* *Defined in [src/ArraySize.ts:29](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/ArraySize.ts#L25)* **Returns:** *[ArraySize](https://hyperformula.handsontable.com/docs/api/classes/arraysize.md)‹›* --- ## 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/9c22416/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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Operations.ts#L81)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:80](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/Operations.ts#L89)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## 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:66](https://github.com/handsontable/hyperformula/blob/9c22416/src/BuildEngineFactory.ts#L66)* **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:59](https://github.com/handsontable/hyperformula/blob/9c22416/src/BuildEngineFactory.ts#L59)* **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:53](https://github.com/handsontable/hyperformula/blob/9c22416/src/BuildEngineFactory.ts#L53)* **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:72](https://github.com/handsontable/hyperformula/blob/9c22416/src/BuildEngineFactory.ts#L72)* **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)* --- ## 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/9c22416/src/CellContentParser.ts#L48)* **Returns:** *[Empty](https://hyperformula.handsontable.com/docs/api/classes/cellcontent.empty.md)‹›* --- ## CapabilityRegistry URL: https://hyperformula.handsontable.com/docs/api/classes/capabilityregistry # CapabilityRegistry Expands a [LicenseEntitlement](https://hyperformula.handsontable.com/docs/api/interfaces/licenseentitlement.md)'s capability tokens against a table of [CapabilityGrant](https://hyperformula.handsontable.com/docs/api/interfaces/capabilitygrant.md)s into the concrete functions and features they grant, and answers which token, if any, covers a given function id. ## Constructors ### constructor \+ **new CapabilityRegistry**(`table?`: ReadonlyMap‹string, [CapabilityGrant](https://hyperformula.handsontable.com/docs/api/interfaces/capabilitygrant.md)›): *[CapabilityRegistry](https://hyperformula.handsontable.com/docs/api/classes/capabilityregistry.md)* *Defined in [src/license/CapabilityRegistry.ts:28](https://github.com/handsontable/hyperformula/blob/9c22416/src/license/CapabilityRegistry.ts#L28)* **Parameters:** Name | Type | ------ | ------ | `table?` | ReadonlyMap‹string, [CapabilityGrant](https://hyperformula.handsontable.com/docs/api/interfaces/capabilitygrant.md)› | **Returns:** *[CapabilityRegistry](https://hyperformula.handsontable.com/docs/api/classes/capabilityregistry.md)* ## Methods ### capabilityOf ▸ **capabilityOf**(`functionId`: string): *string | undefined* *Defined in [src/license/CapabilityRegistry.ts:106](https://github.com/handsontable/hyperformula/blob/9c22416/src/license/CapabilityRegistry.ts#L106)* Returns the capability token a function id is covered by, or `undefined` if this registry's table does not cover it. The completeness invariant in `unit/license/capability-registry.spec.ts` guarantees every built-in registered in the static function registry is covered by the table, the core token, or the protected list — so `undefined` for a function known to the current instance's function registry means it is a custom, instance-registered function rather than an unlisted built-in. **Parameters:** Name | Type | ------ | ------ | `functionId` | string | **Returns:** *string | undefined* ___ ### resolve ▸ **resolve**(`entitlement`: [LicenseEntitlement](https://hyperformula.handsontable.com/docs/api/interfaces/licenseentitlement.md)): *[ResolvedCapabilities](https://hyperformula.handsontable.com/docs/api/interfaces/resolvedcapabilities.md)* *Defined in [src/license/CapabilityRegistry.ts:69](https://github.com/handsontable/hyperformula/blob/9c22416/src/license/CapabilityRegistry.ts#L69)* Expands an entitlement's capability tokens into the concrete functions and features they grant. An `unrestricted` entitlement short-circuits to an unrestricted result without consulting the table at all. Expansion through `implies` is transitive and cycle-safe (a visited set guards against a token implying itself, directly or through others); an unrecognized token is skipped without an error. **Parameters:** Name | Type | Description | ------ | ------ | ------ | `entitlement` | [LicenseEntitlement](https://hyperformula.handsontable.com/docs/api/interfaces/licenseentitlement.md) | the entitlement to resolve, e.g. one built by hand in a test or produced by PR 3's license-key payload adapter | **Returns:** *[ResolvedCapabilities](https://hyperformula.handsontable.com/docs/api/interfaces/resolvedcapabilities.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/9c22416/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/9c22416/src/CellContentParser.ts#L40)* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/CellContentParser.ts#L62)* --- ## 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/9c22416/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/9c22416/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)* --- ## 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/9c22416/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/9c22416/src/CellContentParser.ts#L35)* --- ## 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/9c22416/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/9c22416/src/CellContentParser.ts#L57)* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L428)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:427](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/9c22416/src/UndoRedo.ts#L332)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:331](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/enums/featureid.md#clipboard)* *Defined in [src/ClipboardOperations.ts:75](https://github.com/handsontable/hyperformula/blob/9c22416/src/ClipboardOperations.ts#L75)* ## Methods ### abortCut ▸ **abortCut**(): *void* *Defined in [src/ClipboardOperations.ts:107](https://github.com/handsontable/hyperformula/blob/9c22416/src/ClipboardOperations.ts#L107)* **Returns:** *void* ___ ### clear ▸ **clear**(): *void* *Defined in [src/ClipboardOperations.ts:113](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/ClipboardOperations.ts#L141)* **Returns:** *boolean* ___ ### isCutClipboard ▸ **isCutClipboard**(): *boolean* *Defined in [src/ClipboardOperations.ts:137](https://github.com/handsontable/hyperformula/blob/9c22416/src/ClipboardOperations.ts#L137)* **Returns:** *boolean* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Lookup/ColumnBinarySearch.ts#L53)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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` | "none" | "asc" | "desc" | `returnOccurrence` | undefined | "first" | "last" | **Returns:** *number* ___ ### forceApplyPostponedTransformations ▸ **forceApplyPostponedTransformations**(): *void* *Defined in [src/Lookup/ColumnIndex.ts:192](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Lookup/ColumnIndex.ts#L104)* **Parameters:** Name | Type | ------ | ------ | `range` | IterableIterator‹[RawScalarValue, [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md)]› | **Returns:** *void* --- ## 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/9c22416/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/9c22416/src/ClipboardOperations.ts#L57)* ___ ### height • **height**: *number* *Defined in [src/ClipboardOperations.ts:55](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/ClipboardOperations.ts#L56)* ___ ### width • **width**: *number* *Defined in [src/ClipboardOperations.ts:54](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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)]›* --- ## 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/9c22416/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/9c22416/src/Span.ts#L76)* ___ ### columnStart • **columnStart**: *number* *Defined in [src/Span.ts:75](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L75)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:74](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L74)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:94](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L94)* **Returns:** *number* ___ ### numberOfColumns • **get numberOfColumns**(): *number* *Defined in [src/Span.ts:86](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L86)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:90](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L90)* **Returns:** *number* ## Methods ### columns ▸ **columns**(): *IterableIterator‹number›* *Defined in [src/Span.ts:106](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Span.ts#L98)* **Parameters:** Name | Type | ------ | ------ | `sheet` | number | `columnStart` | number | `numberOfColumns` | number | **Returns:** *[ColumnsSpan](https://hyperformula.handsontable.com/docs/api/classes/columnsspan.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/9c22416/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/9c22416/src/Cell.ts#L152)* ___ ### root • **root**? : *FormulaVertex* *Defined in [src/Cell.ts:153](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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)* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/CrudOperations.ts#L200)* **Returns:** *void* ___ ### clearSheet ▸ **clearSheet**(`sheetId`: number): *void* *Defined in [src/CrudOperations.ts:240](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/CrudOperations.ts#L601)* **Returns:** *boolean* ___ ### isThereSomethingToUndo ▸ **isThereSomethingToUndo**(): *boolean* *Defined in [src/CrudOperations.ts:597](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/CrudOperations.ts#L304)* **Parameters:** Name | Type | ------ | ------ | `sheetId` | number | `rowMapping` | [number, number][] | **Returns:** *void* --- ## 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:226](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L226)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/ContentChanges.ts#L25)* **Returns:** *[ContentChanges](https://hyperformula.handsontable.com/docs/api/classes/contentchanges.md)‹›* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/DateTimeHelper.ts#L109)* **Returns:** *number* ___ ### getNullYear ▸ **getNullYear**(): *number* *Defined in [src/DateTimeHelper.ts:105](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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* --- ## 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:181](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L181)* **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:94](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L94)* 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:104](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L104)* 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:106](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L106)* 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:96](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L96)* 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:90](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L90)* 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:92](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L92)* 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:157](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L157)* 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:151](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L151)* 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:98](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L98)* 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:108](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L108)* 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:127](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L127)* When set to `true`, formulas evaluating to `null` evaluate to `0` instead. **`default`** false ___ ### functionArgSeparator • **functionArgSeparator**: *string* *Defined in [src/Config.ts:102](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L102)* 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:119](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L119)* 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:123](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L123)* 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:114](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L114)* 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:112](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L112)* 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:121](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L121)* 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:116](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L116)* 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:125](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L125)* 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:181](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L181)* 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:168](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L168)* Sets the maximum number of columns. **`default`** 18.278 (Columns A, B, ..., ZZZ) ___ ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* *Defined in [src/Config.ts:155](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L155)* 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:166](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L166)* 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:149](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L149)* 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:129](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L129)* 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:131](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L131)* 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:139](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L139)* 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:141](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L141)* 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:143](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L143)* 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:137](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L137)* 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:133](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L133)* 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:135](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L135)* 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:110](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L110)* 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:100](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L100)* 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:153](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L153)* 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:88](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L88)* 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:145](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L145)* 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:177](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L177)* 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:147](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L147)* 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:179](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L179)* 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:364](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L364)* **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:368](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L368)* **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:44](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L44)* ### accentSensitive • **accentSensitive**: *false* = false *Defined in [src/Config.ts:45](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L45)* ### arrayColumnSeparator • **arrayColumnSeparator**: *","* = "," *Defined in [src/Config.ts:63](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L63)* ### arrayRowSeparator • **arrayRowSeparator**: *";"* = ";" *Defined in [src/Config.ts:64](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L64)* ### caseFirst • **caseFirst**: *"lower"* = "lower" *Defined in [src/Config.ts:48](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L48)* ### caseSensitive • **caseSensitive**: *false* = false *Defined in [src/Config.ts:47](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L47)* ### chooseAddressMappingPolicy • **chooseAddressMappingPolicy**: *AlwaysDense‹›* = new AlwaysDense() *Defined in [src/Config.ts:50](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L50)* ### context • **context**: *undefined* = undefined *Defined in [src/Config.ts:49](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L49)* ### currencySymbol • **currencySymbol**: *string[]* = ['$'] *Defined in [src/Config.ts:46](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L46)* ### dateFormats • **dateFormats**: *string[]* = ['DD/MM/YYYY', 'DD/MM/YY'] *Defined in [src/Config.ts:51](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L51)* ### decimalSeparator • **decimalSeparator**: *"."* = "." *Defined in [src/Config.ts:52](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L52)* ### evaluateNullToZero • **evaluateNullToZero**: *false* = false *Defined in [src/Config.ts:53](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L53)* ### functionArgSeparator • **functionArgSeparator**: *string* = "," *Defined in [src/Config.ts:54](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L54)* ### functionPlugins • **functionPlugins**: *never[]* = [] *Defined in [src/Config.ts:55](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L55)* ### ignorePunctuation • **ignorePunctuation**: *false* = false *Defined in [src/Config.ts:56](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L56)* ### ignoreWhiteSpace • **ignoreWhiteSpace**: *"standard"* = "standard" *Defined in [src/Config.ts:58](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L58)* ### language • **language**: *string* = "enGB" *Defined in [src/Config.ts:57](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L57)* ### leapYear1900 • **leapYear1900**: *false* = false *Defined in [src/Config.ts:60](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L60)* ### licenseKey • **licenseKey**: *string* = "" *Defined in [src/Config.ts:59](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L59)* ### localeLang • **localeLang**: *string* = "en" *Defined in [src/Config.ts:61](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L61)* ### matchWholeCell • **matchWholeCell**: *true* = true *Defined in [src/Config.ts:62](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L62)* ### maxColumns • **maxColumns**: *number* = 18278 *Defined in [src/Config.ts:66](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L66)* ### maxPendingLazyTransformations • **maxPendingLazyTransformations**: *number* = 50 *Defined in [src/Config.ts:79](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L79)* ### maxRows • **maxRows**: *number* = 40000 *Defined in [src/Config.ts:65](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L65)* ### nullYear • **nullYear**: *number* = 30 *Defined in [src/Config.ts:67](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L67)* ### parseDateTime • **parseDateTime**: *[defaultParseToDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultparsetodatetime)* = defaultParseToDateTime *Defined in [src/Config.ts:69](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L69)* ### precisionEpsilon • **precisionEpsilon**: *number* = 1e-13 *Defined in [src/Config.ts:70](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L70)* ### precisionRounding • **precisionRounding**: *number* = 10 *Defined in [src/Config.ts:71](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L71)* ### smartRounding • **smartRounding**: *true* = true *Defined in [src/Config.ts:72](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L72)* ### stringifyCurrency • **stringifyCurrency**: *[defaultStringifyCurrency](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifycurrency)* = defaultStringifyCurrency *Defined in [src/Config.ts:75](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L75)* ### stringifyDateTime • **stringifyDateTime**: *[defaultStringifyDateTime](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifydatetime)* = defaultStringifyDateTime *Defined in [src/Config.ts:73](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L73)* ### stringifyDuration • **stringifyDuration**: *[defaultStringifyDuration](https://hyperformula.handsontable.com/docs/api/globals.md#defaultstringifyduration)* = defaultStringifyDuration *Defined in [src/Config.ts:74](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L74)* ### thousandSeparator • **thousandSeparator**: *""* = "" *Defined in [src/Config.ts:77](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L77)* ### timeFormats • **timeFormats**: *string[]* = ['hh:mm', 'hh:mm:ss.sss'] *Defined in [src/Config.ts:76](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L76)* ### undoLimit • **undoLimit**: *number* = 20 *Defined in [src/Config.ts:78](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L78)* ### useArrayArithmetic • **useArrayArithmetic**: *false* = false *Defined in [src/Config.ts:84](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L84)* ### useColumnIndex • **useColumnIndex**: *false* = false *Defined in [src/Config.ts:82](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L82)* ### useRegularExpressions • **useRegularExpressions**: *false* = false *Defined in [src/Config.ts:80](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L80)* ### useStats • **useStats**: *false* = false *Defined in [src/Config.ts:83](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L83)* ### useWildcards • **useWildcards**: *true* = true *Defined in [src/Config.ts:81](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L81)* ▪ **nullDate**: *object* *Defined in [src/Config.ts:68](https://github.com/handsontable/hyperformula/blob/9c22416/src/Config.ts#L68)* * **day**: *number* = 30 * **month**: *number* = 12 * **year**: *number* = 1899 --- ## 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:258](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L258)* **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* --- ## 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:210](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L210)* **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* --- ## 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/9c22416/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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Evaluator.ts#L56)* **Parameters:** Name | Type | ------ | ------ | `ast` | Ast | `address` | [SimpleCellAddress](https://hyperformula.handsontable.com/docs/api/interfaces/simplecelladdress.md) | `dependencies` | RelativeDependency[] | **Returns:** *InterpreterValue* --- ## 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:178](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L178)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/ArrayValue.ts#L168)* **Returns:** *number* --- ## 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/9c22416/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/9c22416/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/9c22416/src/Exporter.ts#L26)* ## Accessors ### col • **get col**(): *number* *Defined in [src/Exporter.ts:30](https://github.com/handsontable/hyperformula/blob/9c22416/src/Exporter.ts#L30)* **Returns:** *number* ___ ### row • **get row**(): *number* *Defined in [src/Exporter.ts:34](https://github.com/handsontable/hyperformula/blob/9c22416/src/Exporter.ts#L34)* **Returns:** *number* ___ ### sheet • **get sheet**(): *number* *Defined in [src/Exporter.ts:38](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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:243](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L243)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/src/Exporter.ts#L50)* --- ## 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:194](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L194)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Exporter.ts#L94)* **Parameters:** Name | Type | ------ | ------ | `value` | InterpreterValue | **Returns:** *[CellValue](https://hyperformula.handsontable.com/docs/api/globals.md#cellvalue)* --- ## 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:322](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L322)* **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:318](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L318)* **Parameters:** Name | Type | ------ | ------ | `functionId` | string | `pluginName` | string | **Returns:** *[FunctionPluginValidationError](https://hyperformula.handsontable.com/docs/api/classes/functionpluginvalidationerror.md)* --- ## 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/9c22416/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/9c22416/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* --- ## 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/9c22416/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/9c22416/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/9c22416/src/NamedExpressions.ts#L27)* ___ ### displayName • **displayName**: *string* *Defined in [src/NamedExpressions.ts:26](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/NamedExpressions.ts#L33)* **Returns:** *string* --- ## 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/9c22416/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/9c22416/src/statistics/EmptyStatistics.ts#L12)* **`inheritdoc`** **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/EmptyStatistics.ts:17](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/statistics/EmptyStatistics.ts#L22)* **`inheritdoc`** **Parameters:** Name | Type | ------ | ------ | `_name` | [StatType](https://hyperformula.handsontable.com/docs/api/enums/stattype.md) | **Returns:** *void* --- ## 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/9c22416/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/9c22416/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/9c22416/src/index.ts#L68)* ___ ### CellValueDetailedType ▪ **CellValueDetailedType**: *object* = CellValueDetailedType *Defined in [src/index.ts:70](https://github.com/handsontable/hyperformula/blob/9c22416/src/index.ts#L70)* #### Type declaration: ___ ### CellValueType ▪ **CellValueType**: *object* = CellValueType *Defined in [src/index.ts:69](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/index.ts#L71)* ___ ### EmptyValue ▪ **EmptyValue**: *symbol* = EmptyValue *Defined in [src/index.ts:81](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/index.ts#L73)* ___ ### FunctionArgumentType ▪ **FunctionArgumentType**: *FunctionArgumentType* = FunctionArgumentType *Defined in [src/index.ts:83](https://github.com/handsontable/hyperformula/blob/9c22416/src/index.ts#L83)* ___ ### FunctionPlugin ▪ **FunctionPlugin**: *FunctionPlugin* = FunctionPlugin *Defined in [src/index.ts:82](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/index.ts#L105)* ___ ## Static Properties ### buildDate ▪ **buildDate**: *string* = process.env.HT_BUILD_DATE as string *Defined in [src/HyperFormula.ts:108](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L108)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:124](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L124)* 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:115](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L115)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:101](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L101)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:163](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L163)* 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:356](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L356)* 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:282](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L282)* 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:329](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L329)* 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:4794](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4794)* 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:1183](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1183)* 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:1197](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1197)* 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:1160](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1160)* 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:2791](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2791)* 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:2941](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2941)* 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:3632](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3632)* 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:3351](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3351)* 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:1036](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1036)* 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:1107](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1107)* 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:1132](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1132)* 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:1088](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1088)* 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:1063](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1063)* 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:973](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L973)* 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:3326](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3326)* 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:3280](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3280)* 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:3302](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3302)* 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:1006](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1006)* 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:940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L940)* 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:2752](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2752)* 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:2899](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2899)* 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:2824](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2824)* 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:3659](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3659)* 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:2972](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2972)* 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:2867](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2867)* 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:3697](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3697)* 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:3009](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3009)* 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:2708](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2708)* 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:2635](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2635)* 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:2674](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2674)* 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:2599](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2599)* 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:1836](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1836)* 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:1794](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1794)* 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:2196](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2196)* 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:1868](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1868)* 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:1587](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1587)* 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:1499](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1499)* 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:2243](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2243)* 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:1909](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1909)* 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:1551](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1551)* 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:1467](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1467)* 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:1986](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1986)* 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:1940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1940)* 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:2279](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2279)* 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:2017](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2017)* 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:1758](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1758)* 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:1674](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1674)* 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:2332](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2332)* 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:2062](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2062)* 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:1724](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1724)* 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:1645](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1645)* 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:3443](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3443)* 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:3412](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3412)* 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:846](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L846)* 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:876](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L876)* 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:908](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L908)* 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:3380](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3380)* 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:815](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L815)* 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:3574](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3574)* 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:3608](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3608)* 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:3538](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3538)* 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:3475](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3475)* 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:3503](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3503)* 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:2099](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2099)* 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:1361](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1361)* 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:2156](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2156)* 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:1414](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1414)* 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:3940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3940)* 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:4163](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4163)* 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:4333](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4333)* 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:4066](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4066)* 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:4021](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4021)* 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:3979](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3979)* 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:3888](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3888)* 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:4115](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4115)* 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:4200](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4200)* 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:4295](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4295)* 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:4245](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4245)* 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:4398](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4398)* 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:4569](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4569)* 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` — 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. That registry is a snapshot taken when the instance was built, not a live view of the global one: a 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) afterwards reaches only the engines built later, so an engine kept across a late registration keeps reporting the set it was built with. 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:3207](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3207)* 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:3245](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3245)* 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:4614](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4614)* 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`, ...). 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. `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:4429](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4429)* 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:4362](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4362)* 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:4668](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4668)* 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:4642](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4642)* 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:4693](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4693)* 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:3048](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3048)* 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:3117](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3117)* 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:3077](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3077)* 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:3170](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3170)* 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:4463](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4463)* 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:2514](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2514)* 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:2371](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2371)* 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:2412](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2412)* 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:2497](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2497)* 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:2464](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2464)* 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:2544](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2544)* 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:2571](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2571)* 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:1329](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1329)* 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:1310](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1310)* 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:1281](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1281)* 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:1242](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1242)* 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:3739](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3739)* 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:3859](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3859)* 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:3824](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3824)* 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:3787](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3787)* 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:4779](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4779)* 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:4719](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4719)* 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:4745](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4745)* 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:4532](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4532)* 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:4514](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4514)* 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:4484](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4484)* 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:655](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L655)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:639](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L639)* 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:378](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L378)* 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:609](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L609)* 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:459](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L459)* 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:543](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L543)* 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:489](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L489)* 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:409](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L409)* 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:590](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L590)* 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:573](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L573)* 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:513](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L513)* 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:439](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L439)* 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* --- ## 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:57](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L57)* **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* --- ## 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:66](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L66)* **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* --- ## 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:292](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L292)* **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* --- ## 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:303](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L303)* **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* --- ## 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:267](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L267)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L73)* ___ ### height • **height**: *number* *Defined in [src/UndoRedo.ts:72](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L70)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:76](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L76)* ___ ### width • **width**: *number* *Defined in [src/UndoRedo.ts:71](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L89)* **Returns:** *number[]* --- ## LicenseCapabilityMissingError URL: https://hyperformula.handsontable.com/docs/api/classes/licensecapabilitymissingerror # LicenseCapabilityMissingError Error thrown when a public API method is called for a [FeatureId](https://hyperformula.handsontable.com/docs/api/enums/featureid.md) that the current license entitlement does not grant. Mirrors gate B's `ErrorMessage.LicenseCapability`, but this one guards the API surface itself (HF-307 PR 2) rather than a formula evaluation, so it is thrown synchronously instead of surfacing as a cell error. **`see`** [addNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/namedexpressions.md#addnamedexpression) **`see`** [changeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/hyperformula.md#changenamedexpression) **`see`** [removeNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#removenamedexpression) **`see`** [copy](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md#copy) **`see`** [cut](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#cut) **`see`** [paste](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#paste) **`see`** [undo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#undo) **`see`** [redo](https://hyperformula.handsontable.com/docs/api/classes/crudoperations.md#redo) **`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 LicenseCapabilityMissingError**(`feature`: [FeatureId](https://hyperformula.handsontable.com/docs/api/enums/featureid.md)): *[LicenseCapabilityMissingError](https://hyperformula.handsontable.com/docs/api/classes/licensecapabilitymissingerror.md)* *Defined in [src/errors.ts:415](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L415)* **Parameters:** Name | Type | ------ | ------ | `feature` | [FeatureId](https://hyperformula.handsontable.com/docs/api/enums/featureid.md) | **Returns:** *[LicenseCapabilityMissingError](https://hyperformula.handsontable.com/docs/api/classes/licensecapabilitymissingerror.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/9c22416/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/9c22416/src/UndoRedo.ts#L200)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:198](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L198)* ___ ### startColumn • **startColumn**: *number* *Defined in [src/UndoRedo.ts:199](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L199)* ___ ### targetColumn • **targetColumn**: *number* *Defined in [src/UndoRedo.ts:201](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L201)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:195](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L195)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:194](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L194)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:202](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L217)* **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:102](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L102)* **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* --- ## 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:108](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L108)* Latest build date. ___ ### languages ▪ **languages**: *Record‹string, RawTranslationPackage›* *Defined in [src/HyperFormula.ts:124](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L124)* 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:115](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L115)* A release date. ___ ### version ▪ **version**: *string* = process.env.HT_VERSION as string *Defined in [src/HyperFormula.ts:101](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L101)* Version of the HyperFormula. ## Static Accessors ### defaultConfig • **get defaultConfig**(): *[ConfigParams](https://hyperformula.handsontable.com/docs/api/interfaces/configparams.md)* *Defined in [src/HyperFormula.ts:163](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L163)* 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:356](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L356)* 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:282](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L282)* 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:329](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L329)* 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:4794](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4794)* 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:1183](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1183)* 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:1197](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1197)* 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:1160](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1160)* 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:2791](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2791)* 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:2941](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2941)* 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:3632](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3632)* 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:3351](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3351)* 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:1036](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1036)* 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:1107](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1107)* 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:1132](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1132)* 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:1088](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1088)* 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:1063](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1063)* 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:973](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L973)* 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:3326](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3326)* 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:3280](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3280)* 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:3302](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3302)* 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:1006](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1006)* 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:940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L940)* 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:2752](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2752)* 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:2899](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2899)* 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:2824](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2824)* 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:3659](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3659)* 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:2972](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2972)* 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:2867](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2867)* 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:3697](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3697)* 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:3009](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3009)* 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:2708](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2708)* 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:2635](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2635)* 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:2674](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2674)* 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:2599](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2599)* 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:1836](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1836)* 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:1794](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1794)* 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:2196](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2196)* 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:1868](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1868)* 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:1587](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1587)* 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:1499](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1499)* 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:2243](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2243)* 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:1909](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1909)* 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:1551](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1551)* 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:1467](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1467)* 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:1986](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1986)* 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:1940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1940)* 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:2279](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2279)* 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:2017](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2017)* 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:1758](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1758)* 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:1674](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1674)* 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:2332](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2332)* 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:2062](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2062)* 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:1724](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1724)* 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:1645](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1645)* 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:3443](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3443)* 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:3412](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3412)* 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:846](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L846)* 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:876](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L876)* 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:908](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L908)* 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:3380](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3380)* 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:815](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L815)* 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:3574](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3574)* 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:3608](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3608)* 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:3538](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3538)* 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:3475](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3475)* 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:3503](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3503)* 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:2099](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2099)* 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:1361](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1361)* 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:2156](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2156)* 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:1414](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1414)* 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:3940](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3940)* 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:4163](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4163)* 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:4333](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4333)* 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:4066](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4066)* 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:4021](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4021)* 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:3979](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3979)* 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:3888](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3888)* 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:4115](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4115)* 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:4200](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4200)* 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:4295](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4295)* 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:4245](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4245)* 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:4398](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4398)* 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:4569](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4569)* 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` — 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. That registry is a snapshot taken when the instance was built, not a live view of the global one: a 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) afterwards reaches only the engines built later, so an engine kept across a late registration keeps reporting the set it was built with. 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:3207](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3207)* 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:3245](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3245)* 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:4614](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4614)* 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`, ...). 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. `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:4429](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4429)* 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:4362](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4362)* 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:4668](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4668)* 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:4642](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4642)* 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:4693](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4693)* 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:3048](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3048)* 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:3117](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3117)* 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:3077](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3077)* 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:3170](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3170)* 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:4463](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4463)* 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:2514](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2514)* 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:2371](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2371)* 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:2412](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2412)* 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:2497](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2497)* 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:2464](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2464)* 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:2544](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2544)* 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:2571](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L2571)* 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:1329](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1329)* 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:1310](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1310)* 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:1281](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1281)* 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:1242](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L1242)* 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:3739](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3739)* 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:3859](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3859)* 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:3824](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3824)* 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:3787](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L3787)* 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:4779](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4779)* 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:4719](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4719)* 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:4745](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4745)* 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:4532](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4532)* 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:4514](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4514)* 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:4484](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L4484)* 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:655](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L655)* Returns classes of all plugins registered in HyperFormula. **`example`** ```js // return classes of all plugins const allClasses = HyperFormula.getAllFunctionPlugins(); ``` **Returns:** *FunctionPluginDefinition[]* ___ ### getFunctionPlugin ▸ **getFunctionPlugin**(`functionId`: string): *FunctionPluginDefinition | undefined* *Defined in [src/HyperFormula.ts:639](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L639)* 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:378](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L378)* 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:609](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L609)* 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:459](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L459)* 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:543](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L543)* 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:489](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L489)* 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:409](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L409)* 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:590](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L590)* 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:573](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L573)* 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:513](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L513)* 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:439](https://github.com/handsontable/hyperformula/blob/9c22416/src/HyperFormula.ts#L439)* 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* --- ## 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:84](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L84)* **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:93](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L93)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/NamedExpressions.ts#L247)* **Returns:** *string[]* ___ ### getAllNamedExpressionsNamesInScope ▸ **getAllNamedExpressionsNamesInScope**(`sheetId?`: undefined | number): *string[]* *Defined in [src/NamedExpressions.ts:243](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/NamedExpressions.ts#L216)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *[InternalNamedExpression](https://hyperformula.handsontable.com/docs/api/classes/internalnamedexpression.md)* --- ## 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/9c22416/src/error-message.ts#L14)* ___ ### BadCriterion ▪ **BadCriterion**: *string* = "Incorrect criterion." *Defined in [src/error-message.ts:18](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L18)* ___ ### BadMode ▪ **BadMode**: *string* = "Mode not recognized." *Defined in [src/error-message.ts:26](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L58)* ___ ### CellRangeExpected ▪ **CellRangeExpected**: *string* = "Cell range expected." *Defined in [src/error-message.ts:20](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L20)* ___ ### CellRefExpected ▪ **CellRefExpected**: *string* = "Cell reference expected." *Defined in [src/error-message.ts:37](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/src/error-message.ts#L67)* ___ ### ComplexNumberExpected ▪ **ComplexNumberExpected**: *string* = "Complex number expected." *Defined in [src/error-message.ts:73](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/src/error-message.ts#L27)* ___ ### DistinctSigns ▪ **DistinctSigns**: *string* = "Distinct signs." *Defined in [src/error-message.ts:10](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L10)* ___ ### EmptyArg ▪ **EmptyArg**: *string* = "Empty function argument." *Defined in [src/error-message.ts:12](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L31)* ___ ### Formula ▪ **Formula**: *string* = "Expected formula." *Defined in [src/error-message.ts:52](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L50)* ___ ### IndexLarge ▪ **IndexLarge**: *string* = "Index too large." *Defined in [src/error-message.ts:51](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/src/error-message.ts#L25)* ___ ### InvalidDate ▪ **InvalidDate**: *string* = "Invalid date." *Defined in [src/error-message.ts:57](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L57)* ___ ### InvalidRoman ▪ **InvalidRoman**: *string* = "Invalid roman numeral." *Defined in [src/error-message.ts:71](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L63)* ___ ### NoDefault ▪ **NoDefault**: *string* = "No default option." *Defined in [src/error-message.ts:62](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L23)* ___ ### NumberExpected ▪ **NumberExpected**: *string* = "Number argument expected." *Defined in [src/error-message.ts:24](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L28)* ___ ### ParseError ▪ **ParseError**: *string* = "Parsing error." *Defined in [src/error-message.ts:54](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L54)* ___ ### PatternNotFound ▪ **PatternNotFound**: *string* = "Pattern not found." *Defined in [src/error-message.ts:46](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L74)* ___ ### SizeMismatch ▪ **SizeMismatch**: *string* = "Array dimensions mismatched." *Defined in [src/error-message.ts:75](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L43)* ___ ### ValueLarge ▪ **ValueLarge**: *string* = "Value too large." *Defined in [src/error-message.ts:17](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L17)* ___ ### ValueNotFound ▪ **ValueNotFound**: *string* = "Value not found." *Defined in [src/error-message.ts:41](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L41)* ___ ### ValueSmall ▪ **ValueSmall**: *string* = "Value too small." *Defined in [src/error-message.ts:16](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L11)* ___ ### WrongDimension ▪ **WrongDimension**: *string* = "Wrong range dimension." *Defined in [src/error-message.ts:21](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/error-message.ts#L29)* ## Methods ### FunctionName ▸ **FunctionName**(`arg`: string): *string* *Defined in [src/error-message.ts:77](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L77)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* ___ ### LicenseCapability ▸ **LicenseCapability**(`functionName`: string): *string* *Defined in [src/error-message.ts:80](https://github.com/handsontable/hyperformula/blob/9c22416/src/error-message.ts#L80)* **Parameters:** Name | Type | ------ | ------ | `functionName` | string | **Returns:** *string* ___ ### LicenseKey ▸ **LicenseKey**(`arg`: string): *string* *Defined in [src/error-message.ts:79](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/src/error-message.ts#L78)* **Parameters:** Name | Type | ------ | ------ | `arg` | string | **Returns:** *string* --- ## 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/9c22416/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/9c22416/src/LazilyTransformingAstService.ts#L49)* ___ ### undoRedo • **undoRedo**? : *[UndoRedo](https://hyperformula.handsontable.com/docs/api/enums/featureid.md#undoredo)* *Defined in [src/LazilyTransformingAstService.ts:50](https://github.com/handsontable/hyperformula/blob/9c22416/src/LazilyTransformingAstService.ts#L50)* ## Methods ### addTransformation ▸ **addTransformation**(`transformation`: FormulaTransformer): *number* *Defined in [src/LazilyTransformingAstService.ts:66](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/LazilyTransformingAstService.ts#L79)* **Returns:** *number* ___ ### compact ▸ **compact**(): *void* *Defined in [src/LazilyTransformingAstService.ts:135](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/LazilyTransformingAstService.ts#L62)* **Returns:** *number* --- ## 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:120](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L120)* **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* --- ## 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:111](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L111)* **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:21](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L21)* **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* --- ## 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:379](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L379)* **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* --- ## 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:48](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L48)* **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* --- ## 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/9c22416/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/9c22416/src/CellValue.ts#L18)* ___ ### message • **message**: *string* *Defined in [src/CellValue.ts:13](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/src/CellValue.ts#L12)* ___ ### value • **value**: *string* *Defined in [src/CellValue.ts:17](https://github.com/handsontable/hyperformula/blob/9c22416/src/CellValue.ts#L17)* ## Methods ### toString ▸ **toString**(): *string* *Defined in [src/CellValue.ts:24](https://github.com/handsontable/hyperformula/blob/9c22416/src/CellValue.ts#L24)* **Returns:** *string* ___ ### valueOf ▸ **valueOf**(): *string* *Defined in [src/CellValue.ts:28](https://github.com/handsontable/hyperformula/blob/9c22416/src/CellValue.ts#L28)* **Returns:** *string* --- ## 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:129](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L129)* **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/9c22416/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/9c22416/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/9c22416/src/NumberLiteralHelper.ts#L39)* **Parameters:** Name | Type | ------ | ------ | `input` | string | **Returns:** *number* --- ## 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/9c22416/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/9c22416/src/ArrayValue.ts#L24)* ## Methods ### get ▸ **get**(`col`: number, `row`: number): *number* *Defined in [src/ArrayValue.ts:36](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/ArrayValue.ts#L27)* **Returns:** *number* --- ## 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:335](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L335)* **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:339](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L339)* **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:343](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L343)* **Returns:** *[ProtectedFunctionError](https://hyperformula.handsontable.com/docs/api/classes/protectedfunctionerror.md)* --- ## 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:280](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L280)* **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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L254)* **Returns:** *number[]* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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* --- ## 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:12](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L12)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L406)* ___ ### scope • **scope**? : *undefined | number* *Defined in [src/UndoRedo.ts:408](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/Operations.ts#L63)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:62](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/src/Operations.ts#L71)* **Returns:** *[RowsSpan](https://hyperformula.handsontable.com/docs/api/classes/rowsspan.md)[]* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L63)* **Returns:** *number[]* --- ## 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/9c22416/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/9c22416/src/Operations.ts#L117)* ___ ### sheet • **sheet**: *number* *Defined in [src/Operations.ts:116](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L311)* ___ ### newName • **newName**: *string* *Defined in [src/UndoRedo.ts:309](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L309)* ___ ### oldName • **oldName**: *string* *Defined in [src/UndoRedo.ts:308](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L308)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:307](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L307)* ___ ### version • **version**? : *undefined | number* *Defined in [src/UndoRedo.ts:310](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L324)* **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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L281)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:279](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L279)* ___ ### sheetName • **sheetName**: *string* *Defined in [src/UndoRedo.ts:278](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L132)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:130](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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[]* --- ## 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/9c22416/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/9c22416/src/Span.ts#L16)* ___ ### rowStart • **rowStart**: *number* *Defined in [src/Span.ts:15](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L15)* ___ ### sheet • **sheet**: *number* *Defined in [src/Span.ts:14](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L14)* ## Accessors ### end • **get end**(): *number* *Defined in [src/Span.ts:34](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L34)* **Returns:** *number* ___ ### numberOfRows • **get numberOfRows**(): *number* *Defined in [src/Span.ts:26](https://github.com/handsontable/hyperformula/blob/9c22416/src/Span.ts#L26)* **Returns:** *number* ___ ### start • **get start**(): *number* *Defined in [src/Span.ts:30](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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* --- ## 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/9c22416/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/9c22416/src/UndoRedo.ts#L114)* ___ ### rowMapping • **rowMapping**: *[number, number][]* *Defined in [src/UndoRedo.ts:113](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L113)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:112](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L149)* ___ ### sheetId • **sheetId**: *number* *Defined in [src/UndoRedo.ts:148](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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:30](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L30)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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)* --- ## 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:39](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L39)* **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* --- ## 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:351](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L351)* **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* --- ## 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/9c22416/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/9c22416/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)* --- ## 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/9c22416/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/9c22416/src/UndoRedo.ts#L171)* ___ ### sheet • **sheet**: *number* *Defined in [src/UndoRedo.ts:169](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L169)* ___ ### startRow • **startRow**: *number* *Defined in [src/UndoRedo.ts:170](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L170)* ___ ### targetRow • **targetRow**: *number* *Defined in [src/UndoRedo.ts:172](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L172)* ___ ### undoEnd • **undoEnd**: *number* *Defined in [src/UndoRedo.ts:166](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L166)* ___ ### undoStart • **undoStart**: *number* *Defined in [src/UndoRedo.ts:165](https://github.com/handsontable/hyperformula/blob/9c22416/src/UndoRedo.ts#L165)* ___ ### version • **version**: *number* *Defined in [src/UndoRedo.ts:173](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/src/UndoRedo.ts#L188)* **Returns:** *number[]* --- ## 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/9c22416/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/9c22416/src/statistics/Statistics.ts#L18)* **Returns:** *void* ___ ### incrementCriterionFunctionPartialCacheUsed ▸ **incrementCriterionFunctionPartialCacheUsed**(): *void* *Defined in [src/statistics/Statistics.ts:24](https://github.com/handsontable/hyperformula/blob/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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* --- ## 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:367](https://github.com/handsontable/hyperformula/blob/9c22416/src/errors.ts#L367)* **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* --- ## 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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/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/9c22416/src/NamedExpressions.ts#L72)* **Parameters:** Name | Type | ------ | ------ | `expressionName` | string | **Returns:** *void* --- ## 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/9c22416/src/Cell.ts#L56)* ___ ### ARRAYFORMULA • **ARRAYFORMULA**: = "ARRAYFORMULA" *Defined in [src/Cell.ts:58](https://github.com/handsontable/hyperformula/blob/9c22416/src/Cell.ts#L58)* ___ ### EMPTY • **EMPTY**: = "EMPTY" *Defined in [src/Cell.ts:57](https://github.com/handsontable/hyperformula/blob/9c22416/src/Cell.ts#L57)* ___ ### FORMULA • **FORMULA**: = "FORMULA" *Defined in [src/Cell.ts:54](https://github.com/handsontable/hyperformula/blob/9c22416/src/Cell.ts#L54)* ___ ### VALUE • **VALUE**: = "VALUE" *Defined in [src/Cell.ts:55](https://github.com/handsontable/hyperformula/blob/9c22416/src/Cell.ts#L55)* --- ## 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
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)
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)
| {{ cell }} | }
| {{ cell }} |
| {String(cell ?? '')} | ))}
| {{ cell }} |
Result: {result}
{/if}| {#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} | {/each}
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.4.x/svelte-demo?v=). --- ## 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. --- ## 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/9c22416/src/Emitter.ts#L17)* ___ ### EvaluationSuspended • **EvaluationSuspended**: = "evaluationSuspended" *Defined in [src/Emitter.ts:16](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L16)* ___ ### NamedExpressionAdded • **NamedExpressionAdded**: = "namedExpressionAdded" *Defined in [src/Emitter.ts:13](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L13)* ___ ### NamedExpressionRemoved • **NamedExpressionRemoved**: = "namedExpressionRemoved" *Defined in [src/Emitter.ts:14](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L14)* ___ ### SheetAdded • **SheetAdded**: = "sheetAdded" *Defined in [src/Emitter.ts:10](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L10)* ___ ### SheetRemoved • **SheetRemoved**: = "sheetRemoved" *Defined in [src/Emitter.ts:11](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L11)* ___ ### SheetRenamed • **SheetRenamed**: = "sheetRenamed" *Defined in [src/Emitter.ts:12](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L12)* ___ ### ValuesUpdated • **ValuesUpdated**: = "valuesUpdated" *Defined in [src/Emitter.ts:15](https://github.com/handsontable/hyperformula/blob/9c22416/src/Emitter.ts#L15)* --- ## 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) --- ## 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 ``` --- ## 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.4.0 **Release date: August 10, 2026** ### Added - Added the `getAvailableFunctions()` and `getFunctionDetails()` instance methods for retrieving function metadata. [#1692](https://github.com/handsontable/hyperformula/pull/1692) - Added new functions: VSTACK, HSTACK. [#1698](https://github.com/handsontable/hyperformula/pull/1698) - Added a new function: `XIRR`. [#1701](https://github.com/handsontable/hyperformula/pull/1701) - Added the UNIQUE function. [#1708](https://github.com/handsontable/hyperformula/pull/1708) - Added the SORT function. [#1707](https://github.com/handsontable/hyperformula/pull/1707) - Added an Indonesian (Bahasa Indonesia) language pack. [#1674](https://github.com/handsontable/hyperformula/pull/1674) - Added a `stringifyCurrency` config option that lets you plug in a custom currency formatter for the `TEXT` function. [#1145](https://github.com/handsontable/hyperformula/issues/1145) ### Fixed - Fixed the behavior of `MATCH`, `VLOOKUP`, `HLOOKUP`, and `XLOOKUP` functions when the search range contained empty cells. [#1697](https://github.com/handsontable/hyperformula/pull/1697) - Fixed the `VLOOKUP`, `HLOOKUP`, and `XLOOKUP` functions to return `0` instead of an empty value when the matched cell in the result range is empty. [#1697](https://github.com/handsontable/hyperformula/pull/1697) - Fixed the page freezing when entering a long string of digits containing a non-digit character near the end (e.g. `012...789a` or `012...789 123`) into a cell. [#1520](https://github.com/handsontable/hyperformula/issues/1520) ## 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:
|
| 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) |
| 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 |