import { IStoreState, ID, IRow } from '../../index.data'; import { ParsedResult } from '../../formula-parser/data'; import { FormulaManagerConfig } from '../../formula-manager/index.data'; /** * 如何正确使用这个方法? 请查看单元测试 * 逐个单元格, 对 [整个state进行重算] * 使用场景: 首次重建整个依赖图, 并初始化全部计算值 ( 或增删改行时, 局部计算 ) * 不适合场景: 在依赖图已ok的前提下, 进行二次计算 ( 很可能这个场景最终不会出现 ) * 重点:1. 递归计算单元格, 比如要算cel1l1,可能需要先算出cell2, 2.已经算过的单元就不要再算了 * 需要得到两个结果: * 1. 重新构建整个依赖图 * 2. 重算全部公式 * 不返回整个全新state, 仅返回差异, 本质上可以当成一个action * @param options 使用了这个参数, 将仅计算 部分行, 而不会整体计算 * @param options.targetRowIds 进行行的增删升降级, 只需局部更新某些row, 不进行多余计算 * @param options.force 如果为true, 则强制计算所有delay单元格 */ export declare function recalculate(state: IStoreState, options?: { targetRowIds?: ID[]; force?: boolean; config?: FormulaManagerConfig; }): import("../formula_support/postProcess").CellWithDepsInState; /** * 递归地计算某个单元格的值 * 适用场景: 全部重算 * 基本假定: 依赖都未完成计算, 需要逐个计算, 并且排重 * 不适用: 单个单元格的即时计算 * @param state * @param cellId 要计算的单元格的值 * @return cells: 递归累积的cell.value,error * 特别指出: 返回值 并不仅是当前cellId对应的返回值, 而包括中间计算的所有返回值, 目的:全部重算时,算过的不再算 * 所以, 如果想自动重算, 则使用本方法, 如果仅想即时计算单个单元格, 则直接使用evalCellValue */ export declare function evalCellValueRecusively(state: IStoreState, _cellId: ID, known?: Record, config?: FormulaManagerConfig): Record; /** * 清除多余的deps * 两种情况: * 1. state中已删除某些行, 但一直到calculate时才能重置 deps, 因此在这里清除 * 2. 对于exceptRows, 因为需要重新计算, 为了避免 之前的deps错误地保留 , 因此先清除 */ export declare function cleanDeps(state: IStoreState, exceptRows: IRow[]): { cellDeps: Record; varDeps: Record; };