@omegagrid/grid-core 0.6.96 → 0.6.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,10 @@
1
- import { CellModel, GridModel, Viewport, Dependencies } from "../model";
1
+ import { CellModel, GridModel, Viewport } from "../model";
2
2
  import { Formula, FormulaString, Tokenizer } from "../calculations";
3
3
  import { ShiftOptions } from "../types";
4
- export declare class CalculationModel {
5
- readonly model: GridModel;
4
+ import { DependencyModel } from "./dependencyModel";
5
+ export declare class CalculationModel extends DependencyModel {
6
6
  private _tokenizer;
7
7
  get tokenizer(): Tokenizer;
8
- private _dependencies;
9
- get dependencies(): Dependencies;
10
8
  private _formulas;
11
9
  get formulas(): Map<string, Formula>;
12
10
  private context;
@@ -1 +1 @@
1
- {"version":3,"file":"calculationModel.d.ts","sourceRoot":"","sources":["../../src/model/calculationModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAY,MAAM,UAAU,CAAC;AAClF,OAAO,EAAsB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAcxC,qBAAa,gBAAgB;aAaA,KAAK,EAAE,SAAS;IAX5C,OAAO,CAAC,UAAU,CAAmB;IACrC,IAAI,SAAS,cAA6B;IAE1C,OAAO,CAAC,aAAa,CAAe;IACpC,IAAI,YAAY,iBAAgC;IAEhD,OAAO,CAAC,SAAS,CAA8B;IAC/C,IAAI,QAAQ,yBAA4B;IAExC,OAAO,CAAC,OAAO,CAAqB;gBAER,KAAK,EAAE,SAAS;IAK5C,aAAa,CAAC,IAAI,EAAE,SAAS;IAQ7B,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAcjC,cAAc,CAAC,IAAI,EAAE,SAAS;IAO9B,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAKlC,UAAU,CAAC,IAAI,EAAE,SAAS;IAI1B,OAAO;IAKP,gBAAgB,CAAC,IAAI,EAAE,SAAS;IAOhC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO;IAK3D,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO;IAMxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IA0BrD,WAAW;IAIX,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;IAkBpC,KAAK,CAAC,OAAO,EAAE,YAAY;IAqB3B,eAAe;IAef,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAc5C,wBAAwB,CAAC,IAAI,EAAE,SAAS;IASxC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;CA2B/C"}
1
+ {"version":3,"file":"calculationModel.d.ts","sourceRoot":"","sources":["../../src/model/calculationModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAY,MAAM,UAAU,CAAC;AACpE,OAAO,EAAsB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAcpD,qBAAa,gBAAiB,SAAQ,eAAe;IAEpD,OAAO,CAAC,UAAU,CAAmB;IACrC,IAAI,SAAS,cAA6B;IAE1C,OAAO,CAAC,SAAS,CAA8B;IAC/C,IAAI,QAAQ,yBAA4B;IAExC,OAAO,CAAC,OAAO,CAAqB;gBAExB,KAAK,EAAE,SAAS;IAK5B,aAAa,CAAC,IAAI,EAAE,SAAS;IAQ7B,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAcjC,cAAc,CAAC,IAAI,EAAE,SAAS;IAO9B,kBAAkB,CAAC,IAAI,EAAE,SAAS;IAKlC,UAAU,CAAC,IAAI,EAAE,SAAS;IAI1B,OAAO;IAKP,gBAAgB,CAAC,IAAI,EAAE,SAAS;IAOhC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO;IAK3D,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO;IAMxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IA0BrD,WAAW;IAIX,iBAAiB,CAAC,QAAQ,EAAE,QAAQ;IAkBpC,KAAK,CAAC,OAAO,EAAE,YAAY;IAqB3B,eAAe;IAef,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAc5C,wBAAwB,CAAC,IAAI,EAAE,SAAS;IASxC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;CA2B/C"}
@@ -1,5 +1,5 @@
1
- import { Dependencies } from "../model";
2
1
  import { CalculationContext, Formula, Tokenizer } from "../calculations";
2
+ import { DependencyModel } from "./dependencyModel";
3
3
  function evaluationErrorHandler(error) {
4
4
  if (error instanceof RangeError) {
5
5
  if (error.message == 'Maximum call stack size exceeded') {
@@ -13,15 +13,13 @@ function evaluationErrorHandler(error) {
13
13
  return error.toString();
14
14
  }
15
15
  }
16
- export class CalculationModel {
16
+ export class CalculationModel extends DependencyModel {
17
17
  get tokenizer() { return this._tokenizer; }
18
- get dependencies() { return this._dependencies; }
19
18
  get formulas() { return this._formulas; }
20
19
  constructor(model) {
21
- this.model = model;
20
+ super(model, 'calculations');
22
21
  this._tokenizer = new Tokenizer();
23
22
  this._formulas = new Map();
24
- this._dependencies = new Dependencies(model);
25
23
  this.context = new CalculationContext(model);
26
24
  }
27
25
  createFormula(cell) {
@@ -1 +1 @@
1
- {"version":3,"file":"calculationModel.js","sourceRoot":"","sources":["../../src/model/calculationModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CellModel, GridModel, Viewport, Dependencies, RowModel } from \"../model\";\nimport { CalculationContext, Formula, FormulaString, Tokenizer } from \"../calculations\";\nimport { ShiftOptions } from \"../types\";\n\nfunction evaluationErrorHandler(error: unknown) {\n\tif (error instanceof RangeError) {\n\t\tif (error.message == 'Maximum call stack size exceeded') {\n\t\t\treturn 'infinite loop';\n\t\t} else {\n\t\t\treturn error.message;\n\t\t}\n\t} else {\n\t\treturn error.toString();\n\t}\n}\n\nexport class CalculationModel {\n\n\tprivate _tokenizer = new Tokenizer();\n\tget tokenizer() { return this._tokenizer }\n\n\tprivate _dependencies: Dependencies;\n\tget dependencies() { return this._dependencies }\n\n\tprivate _formulas = new Map<string, Formula>();\n\tget formulas() { return this._formulas }\n\n\tprivate context: CalculationContext;\n\n\tconstructor(public readonly model: GridModel) {\n\t\tthis._dependencies = new Dependencies(model);\n\t\tthis.context = new CalculationContext(model);\n\t}\n\n\tcreateFormula(cell: CellModel) {\n\t\tconst f = new Formula(cell.formula, this.tokenizer);\n\t\tthis._formulas.set(cell.address, f);\n\t\tif (cell.hasOwnFormula) cell.formula = f.createFormulaString(); // normalize formula string\n\t\tthis.createDependecies(cell);\n\t\treturn f;\n\t}\n\n\tcreateDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tif (this.formulas.has(addr)) {\n\t\t\tconst f = this.formulas.get(addr);\n\t\t\tf.ranges.forEach(([_i, r, sheet]) => this._dependencies.add(addr, r.A1, sheet));\n\t\t\tf.cells.forEach(([_i, r, sheet]) => this._dependencies.add(addr, r.A1, sheet));\n\t\t\tf.variables.forEach(([_i, v]) => {\n\t\t\t\tconst c = this.model.getCellByName(v, cell.range);\n\t\t\t\tif (c) this._dependencies.add(addr, c.address, null)\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\trefreshFormula(cell: CellModel) {\n\t\tcell.refreshFormula();\n\t\tthis.formulas.delete(cell.address);\n\t\tthis.clearDependecies(cell);\n\t\treturn this;\n\t}\n\n\tupdateDependencies(cell: CellModel) {\n\t\tthis.clearDependecies(cell).getFormula(cell);\n\t\treturn this;\n\t}\n\n\tgetFormula(cell: CellModel) {\n\t\treturn this._formulas.has(cell.address) ? this._formulas.get(cell.address) : this.createFormula(cell);\n\t}\n\n\trefresh() {\n\t\tthis.dependencies.clear();\n\t\tthis._formulas.clear();\n\t}\n\n\tclearDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tthis.dependencies.clearCellDependecies(addr);\n\t\tthis.formulas.delete(addr);\n\t\treturn this;\n\t}\n\n\tevaluateFormula(formula: Formula, cell: CellModel): unknown {\n\t\tthis.context.currentCell = cell;\n\t\treturn formula.fn(this.context, { cell, formula });\n\t}\n\n\tevaluateExpression(expression: FormulaString, cell?: CellModel): unknown {\n\t\tthis.context.currentCell = cell;\n\t\tconst formula = new Formula(expression, this.tokenizer);\n\t\treturn formula.fn(this.context, { cell, formula });\n\t}\n\t\n\tevaluate(cell: CellModel, noSpill?: boolean): unknown {\n\t\tif (!cell) return null;\n\t\tlet value = null;\n\t\tif (cell.hasFormula) {\n\t\t\tconst formula = this.getFormula(cell);\n\t\t\ttry {\n\t\t\t\tcell.clearError();\n\t\t\t\tthis.context.currentCell = cell;\n\t\t\t\tvalue = formula.fn(this.context, { cell, formula });\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tif (!noSpill) this.model.spillValues({cell: cell, values: value}).range;\n\t\t\t\t\tvalue = value.length > 0 && value[0].length > 0 ? value[0][0] : null;\n\t\t\t\t\tif (noSpill) cell.value = value;\n\t\t\t\t} else {\n\t\t\t\t\tcell.value = value;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tcell.error = {message: evaluationErrorHandler(error)};\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = cell.value;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tevaluateAll() {\n\t\tthis.model.rows.forEach(row => this.model.columns.forEach((_, c) => row.cell(c).evaluate()));\n\t}\n\n\tcalculateViewport(viewport: Viewport) {\n\t\tconst calculatedCells: CellModel[] = [];\n\t\tviewport.rows.forEach(row => row.cells.forEach(cell => {\n\t\t\tif (cell.hasFormula) {\n\t\t\t\tif (!cell.hasValue) {\n\t\t\t\t\tthis.evaluate(cell);\n\t\t\t\t\tif (cell.spillRange) {\n\t\t\t\t\t\tfor (const cell2 of this.model.getRangeIterator(cell.spillRange)) {\n\t\t\t\t\t\t\tcalculatedCells.push(cell2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcalculatedCells.push(cell);\n\t\t\t}\n\t\t}));\n\t\treturn calculatedCells;\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\tthis.getFormulaCells().forEach(cell => {\n\t\t\tcell.formula = this.getFormula(cell).shift(options).createFormulaString(false);\n\t\t\tthis.updateDependencies(cell);\n\t\t});\n\n\t\tconst thisSheet = this.model.name;\n\t\tthis.dependencies.sheetDependants.forEach(sheet => {\n\t\t\tconst connectedModel = this.model.getConnectedModel(sheet);\n\t\t\tconnectedModel?.calculations.getFormulaCells().forEach(cell => {\n\t\t\t\tconst formula = connectedModel.calculations.getFormula(cell);\n\t\t\t\tif (formula.hasSheetReference(thisSheet)) {\n\t\t\t\t\tcell.formula = formula.shift(options).createFormulaString(false);\n\t\t\t\t\tconnectedModel.calculations.updateDependencies(cell);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tgetFormulaCells() {\n\t\tconst m = this.model;\n\t\tconst cells: CellModel[] = [];\n\t\tlet row: RowModel;\n\t\tconst rows = m.rows.length;\n\t\tconst columns = m.columns.length;\n\t\tfor (let r = 0; r < rows; r++) {\n\t\t\trow = m.rows[r];\n\t\t\tfor (let c = 0; c < columns; c++) {\n\t\t\t\tif (row.hasCellFormula(c)) cells.push(row.cell(c));\n\t\t\t}\n\t\t}\n\t\treturn cells;\n\t}\n\n\trenameSheet(oldName: string, newName: string) {\n\t\tlet renamed = false;\n\t\tthis.dependencies.renameSheet(oldName, newName);\n\t\tthis.getFormulaCells().forEach(cell => {\n\t\t\tconst f = this.getFormula(cell);\n\t\t\tif (f.renameSheet(oldName, newName)) {\n\t\t\t\tcell.formula = f.createFormulaString();\n\t\t\t\tthis.refreshFormula(cell);\n\t\t\t\trenamed = true;\n\t\t\t}\n\t\t});\n\t\treturn renamed;\n\t}\n\n\tinvalidateCellDependants(cell: CellModel) {\n\t\tconst cells: [CellModel, string?][] = [];\n\t\tthis.dependencies.getDependants(cell.range).forEach(([cell, sheet]) => {\n\t\t\tcells.push([cell, sheet]);\n\t\t\tcell.invalidateValue();\n\t\t});\n\t\treturn cells;\n\t}\n\n\tinvalidateDependants(cells: Iterable<CellModel>) {\n\t\tconst updatedCells = new Map<CellModel, string|null>();\n\t\tconst recalculatedCells = new Map<CellModel, string|null>();\n\t\tfor (const cell of cells) {\n\t\t\tthis.invalidateCellDependants(cell).forEach(([cell2, sheet]) => updatedCells.set(cell2, sheet));\n\t\t}\n\t\tupdatedCells.forEach((sheet, cell) => recalculatedCells.set(cell, sheet));\n\n\t\tfor (const cell of cells) {\n\t\t\tupdatedCells.set(cell, null);\n\t\t}\n\t\t\n\t\tupdatedCells.forEach((_sheet, updatedCell) => {\n\t\t\tthis.model.sparklines.dependencies.getDependants(updatedCell.range).forEach(([cell, sheet]) => {\n\t\t\t\trecalculatedCells.set(cell, sheet);\n\t\t\t});\n\n\t\t\tthis.model.conditionalFormats.dependencies.getDependants(updatedCell.range).forEach(([cell, sheet]) => {\n\t\t\t\tthis.model.conditionalFormats.invalidateExtremes(cell);\n\t\t\t\tcell.invalidateStyle();\n\t\t\t\trecalculatedCells.set(cell, sheet);\n\t\t\t});\n\t\t});\n\n\t\treturn recalculatedCells;\n\t}\n\n}"]}
1
+ {"version":3,"file":"calculationModel.js","sourceRoot":"","sources":["../../src/model/calculationModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { CellModel, GridModel, Viewport, RowModel } from \"../model\";\nimport { CalculationContext, Formula, FormulaString, Tokenizer } from \"../calculations\";\nimport { ShiftOptions } from \"../types\";\nimport { DependencyModel } from \"./dependencyModel\";\n\nfunction evaluationErrorHandler(error: unknown) {\n\tif (error instanceof RangeError) {\n\t\tif (error.message == 'Maximum call stack size exceeded') {\n\t\t\treturn 'infinite loop';\n\t\t} else {\n\t\t\treturn error.message;\n\t\t}\n\t} else {\n\t\treturn error.toString();\n\t}\n}\n\nexport class CalculationModel extends DependencyModel {\n\n\tprivate _tokenizer = new Tokenizer();\n\tget tokenizer() { return this._tokenizer }\n\n\tprivate _formulas = new Map<string, Formula>();\n\tget formulas() { return this._formulas }\n\n\tprivate context: CalculationContext;\n\n\tconstructor(model: GridModel) {\n\t\tsuper(model, 'calculations');\n\t\tthis.context = new CalculationContext(model);\n\t}\n\n\tcreateFormula(cell: CellModel) {\n\t\tconst f = new Formula(cell.formula, this.tokenizer);\n\t\tthis._formulas.set(cell.address, f);\n\t\tif (cell.hasOwnFormula) cell.formula = f.createFormulaString(); // normalize formula string\n\t\tthis.createDependecies(cell);\n\t\treturn f;\n\t}\n\n\tcreateDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tif (this.formulas.has(addr)) {\n\t\t\tconst f = this.formulas.get(addr);\n\t\t\tf.ranges.forEach(([_i, r, sheet]) => this._dependencies.add(addr, r.A1, sheet));\n\t\t\tf.cells.forEach(([_i, r, sheet]) => this._dependencies.add(addr, r.A1, sheet));\n\t\t\tf.variables.forEach(([_i, v]) => {\n\t\t\t\tconst c = this.model.getCellByName(v, cell.range);\n\t\t\t\tif (c) this._dependencies.add(addr, c.address, null)\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\trefreshFormula(cell: CellModel) {\n\t\tcell.refreshFormula();\n\t\tthis.formulas.delete(cell.address);\n\t\tthis.clearDependecies(cell);\n\t\treturn this;\n\t}\n\n\tupdateDependencies(cell: CellModel) {\n\t\tthis.clearDependecies(cell).getFormula(cell);\n\t\treturn this;\n\t}\n\n\tgetFormula(cell: CellModel) {\n\t\treturn this._formulas.has(cell.address) ? this._formulas.get(cell.address) : this.createFormula(cell);\n\t}\n\n\trefresh() {\n\t\tthis.dependencies.clear();\n\t\tthis._formulas.clear();\n\t}\n\n\tclearDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tthis.dependencies.clearCellDependecies(addr);\n\t\tthis.formulas.delete(addr);\n\t\treturn this;\n\t}\n\n\tevaluateFormula(formula: Formula, cell: CellModel): unknown {\n\t\tthis.context.currentCell = cell;\n\t\treturn formula.fn(this.context, { cell, formula });\n\t}\n\n\tevaluateExpression(expression: FormulaString, cell?: CellModel): unknown {\n\t\tthis.context.currentCell = cell;\n\t\tconst formula = new Formula(expression, this.tokenizer);\n\t\treturn formula.fn(this.context, { cell, formula });\n\t}\n\t\n\tevaluate(cell: CellModel, noSpill?: boolean): unknown {\n\t\tif (!cell) return null;\n\t\tlet value = null;\n\t\tif (cell.hasFormula) {\n\t\t\tconst formula = this.getFormula(cell);\n\t\t\ttry {\n\t\t\t\tcell.clearError();\n\t\t\t\tthis.context.currentCell = cell;\n\t\t\t\tvalue = formula.fn(this.context, { cell, formula });\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tif (!noSpill) this.model.spillValues({cell: cell, values: value}).range;\n\t\t\t\t\tvalue = value.length > 0 && value[0].length > 0 ? value[0][0] : null;\n\t\t\t\t\tif (noSpill) cell.value = value;\n\t\t\t\t} else {\n\t\t\t\t\tcell.value = value;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tcell.error = {message: evaluationErrorHandler(error)};\n\t\t\t}\n\t\t} else {\n\t\t\tvalue = cell.value;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tevaluateAll() {\n\t\tthis.model.rows.forEach(row => this.model.columns.forEach((_, c) => row.cell(c).evaluate()));\n\t}\n\n\tcalculateViewport(viewport: Viewport) {\n\t\tconst calculatedCells: CellModel[] = [];\n\t\tviewport.rows.forEach(row => row.cells.forEach(cell => {\n\t\t\tif (cell.hasFormula) {\n\t\t\t\tif (!cell.hasValue) {\n\t\t\t\t\tthis.evaluate(cell);\n\t\t\t\t\tif (cell.spillRange) {\n\t\t\t\t\t\tfor (const cell2 of this.model.getRangeIterator(cell.spillRange)) {\n\t\t\t\t\t\t\tcalculatedCells.push(cell2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcalculatedCells.push(cell);\n\t\t\t}\n\t\t}));\n\t\treturn calculatedCells;\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\tthis.getFormulaCells().forEach(cell => {\n\t\t\tcell.formula = this.getFormula(cell).shift(options).createFormulaString(false);\n\t\t\tthis.updateDependencies(cell);\n\t\t});\n\n\t\tconst thisSheet = this.model.name;\n\t\tthis.dependencies.sheetDependants.forEach(sheet => {\n\t\t\tconst connectedModel = this.model.getConnectedModel(sheet);\n\t\t\tconnectedModel?.calculations.getFormulaCells().forEach(cell => {\n\t\t\t\tconst formula = connectedModel.calculations.getFormula(cell);\n\t\t\t\tif (formula.hasSheetReference(thisSheet)) {\n\t\t\t\t\tcell.formula = formula.shift(options).createFormulaString(false);\n\t\t\t\t\tconnectedModel.calculations.updateDependencies(cell);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tgetFormulaCells() {\n\t\tconst m = this.model;\n\t\tconst cells: CellModel[] = [];\n\t\tlet row: RowModel;\n\t\tconst rows = m.rows.length;\n\t\tconst columns = m.columns.length;\n\t\tfor (let r = 0; r < rows; r++) {\n\t\t\trow = m.rows[r];\n\t\t\tfor (let c = 0; c < columns; c++) {\n\t\t\t\tif (row.hasCellFormula(c)) cells.push(row.cell(c));\n\t\t\t}\n\t\t}\n\t\treturn cells;\n\t}\n\n\trenameSheet(oldName: string, newName: string) {\n\t\tlet renamed = false;\n\t\tthis.dependencies.renameSheet(oldName, newName);\n\t\tthis.getFormulaCells().forEach(cell => {\n\t\t\tconst f = this.getFormula(cell);\n\t\t\tif (f.renameSheet(oldName, newName)) {\n\t\t\t\tcell.formula = f.createFormulaString();\n\t\t\t\tthis.refreshFormula(cell);\n\t\t\t\trenamed = true;\n\t\t\t}\n\t\t});\n\t\treturn renamed;\n\t}\n\n\tinvalidateCellDependants(cell: CellModel) {\n\t\tconst cells: [CellModel, string?][] = [];\n\t\tthis.dependencies.getDependants(cell.range).forEach(([cell, sheet]) => {\n\t\t\tcells.push([cell, sheet]);\n\t\t\tcell.invalidateValue();\n\t\t});\n\t\treturn cells;\n\t}\n\n\tinvalidateDependants(cells: Iterable<CellModel>) {\n\t\tconst updatedCells = new Map<CellModel, string|null>();\n\t\tconst recalculatedCells = new Map<CellModel, string|null>();\n\t\tfor (const cell of cells) {\n\t\t\tthis.invalidateCellDependants(cell).forEach(([cell2, sheet]) => updatedCells.set(cell2, sheet));\n\t\t}\n\t\tupdatedCells.forEach((sheet, cell) => recalculatedCells.set(cell, sheet));\n\n\t\tfor (const cell of cells) {\n\t\t\tupdatedCells.set(cell, null);\n\t\t}\n\t\t\n\t\tupdatedCells.forEach((_sheet, updatedCell) => {\n\t\t\tthis.model.sparklines.dependencies.getDependants(updatedCell.range).forEach(([cell, sheet]) => {\n\t\t\t\trecalculatedCells.set(cell, sheet);\n\t\t\t});\n\n\t\t\tthis.model.conditionalFormats.dependencies.getDependants(updatedCell.range).forEach(([cell, sheet]) => {\n\t\t\t\tthis.model.conditionalFormats.invalidateExtremes(cell);\n\t\t\t\tcell.invalidateStyle();\n\t\t\t\trecalculatedCells.set(cell, sheet);\n\t\t\t});\n\t\t});\n\n\t\treturn recalculatedCells;\n\t}\n\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cellModel.d.ts","sourceRoot":"","sources":["../../src/model/cellModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cellModel.d.ts","sourceRoot":"","sources":["../../src/model/cellModel.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,16 @@ const cellValueHandler = {
11
11
  },
12
12
  ['t']: (v) => v,
13
13
  ['d']: (v, cell) => {
14
+ if (v == null || v === '')
15
+ return null;
14
16
  if (utils.isString(v)) {
15
17
  return utils.isNumericString(v)
16
18
  ? utils.strToNum(v)
17
19
  : dates.dateToSerialDate(dates.parse(v, cell.model.options.formatLocale));
18
20
  }
19
- else if (v instanceof Date) {
21
+ if (v instanceof Date)
20
22
  return dates.dateToSerialDate(v);
21
- }
22
- else
23
- return v;
23
+ return v;
24
24
  },
25
25
  ['tm']: (v) => utils.isString(v) ? new Date(v) : v,
26
26
  ['dt']: (v) => utils.isString(v) ? new Date(v) : v,
@@ -1 +1 @@
1
- {"version":3,"file":"cellModel.js","sourceRoot":"","sources":["../../src/model/cellModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentAdapter, dates, numbers, utils, ValueFormatter } from \"@omegagrid/core\";\nimport { isFormula, prefixFormula } from \"../calculations/formula\";\nimport { CellAddress, CellRange } from \"../common\";\n// import { cellTypeRendererMap } from \"../renderers\";\nimport { ColumnModel } from \"./columnModel\";\nimport { ElementModel, ElementSource } from \"./elementModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\nimport { Style, StylePropertyKey } from \"./style\";\nimport { CSSStyle, styleToCSStyle } from \"./cssStyle\";\nimport { CellSerializationOptions, CellType } from \"../types\";\nimport { CommentSource } from \"./commentModel\";\nimport { validateValue } from \"./validations\";\n\n/** Source object type for grid cell */\nexport type CellSource = {\n\t/** row index */\n\tr: number;\n\t/** col index */\n\tc: number;\n\t/** cell value */\n\tv?: unknown;\n\t/** cell display value */\n\tdv?: string;\n\t/** cell column span */\n\tcs?: number;\n\t/** cell row span */\n\trs?: number;\n\t/** hyperlink */\n\thl?: string;\n\t/** cell tooltip content */\n\ttooltip?: string|unknown;\n\t/** comment */\n\tcomment?: CommentSource;\n} & ElementSource;\n\nconst cellValueHandler: Record<string, (v: unknown, cell: CellModel) => unknown> = {\n\t['n']: (v) => {\n\t\tconst value = utils.isString(v) ? parseFloat(v as string) : v;\n\t\treturn Number.isNaN(value) ? v : value;\n\t},\n\t['t']: (v) => v,\n\t['d']: (v, cell) => {\n\t\tif (utils.isString(v)) {\n\t\t\treturn utils.isNumericString(v as string) \n\t\t\t\t? utils.strToNum(v as string)\n\t\t\t\t: dates.dateToSerialDate(dates.parse(v as string, cell.model.options.formatLocale));\n\t\t} else if (v instanceof Date) {\n\t\t\treturn dates.dateToSerialDate(v);\n\t\t} else return v;\n\t},\n\t['tm']: (v) => utils.isString(v) ? new Date(v as string) : v,\n\t['dt']: (v) => utils.isString(v) ? new Date(v as string) : v,\n\t['b']: (v) => !!v && v !== '0' && v.toString().toLowerCase() !== 'false',\n\t['s']: (v) => v,\n\t['m']: (v) => v,\n\t['g']: (v) => {\n\t\tif (v == null || v === '') return null;\n\t\tconst f = parseFloat(v as string);\n\t\treturn isNaN(f) ? v : f;\n\t},\n\t['a']: (v) => utils.isString(v) && v !== '' ? JSON.parse(v as string) : v,\n\t['h']: (v) => v,\n};\n\nconst dropdownFormatters = new Map<{k: string, v: string}[], ValueFormatter<string>>();\nconst getDropdownFormatter = (content?: {k: string, v: string}[]) => {\n\tcontent = content || null;\n\tif (!dropdownFormatters.has(content)) {\n\t\tif (content) {\n\t\t\tconst items = content.reduce((map, e) => map.set(e.k, e.v), new Map<string, string>());\n\t\t\tdropdownFormatters.set(content, (k: string) => items.has(k) ? items.get(k) : k);\n\t\t} else {\n\t\t\tdropdownFormatters.set(content, (k: string) => k);\n\t\t}\n\t}\n\treturn dropdownFormatters.get(content);\n};\n\nexport type CellError = {\n\tmessage: string;\n\thandled?: boolean;\n}\n\nexport class CellModel extends ElementModel {\n\t\n\tpublic _content: HTMLDivElement;\n\t\n\tprivate _tooltip: string|unknown;\n\tget tooltip() { return this._tooltip }\n\tset tooltip(v: string|unknown) { this._tooltip = v }\n\tget hasTooltip() { return this._tooltip != null }\n\t\n\tprivate _rowspan : number;\n\tget rowspan() { return this._rowspan }\n\tset rowspan(v: number) { this._rowspan = v }\n\t\n\tprivate _colspan : number;\n\tget colspan() { return this._colspan }\n\tset colspan(v: number) { this._colspan = v }\n\t\n\tprivate _row: RowModel;\n\tget row() { return this._row }\n\tget r() { return this._row.index}\n\tset row(v: RowModel) {\n\t\tthis._row = v;\n\t\tthis._address = null;\n\t}\n\t\n\tprivate _column: ColumnModel;\n\tget column() { return this._column }\n\tset column(v: ColumnModel) {\n\t\tthis._column = v;\n\t\tthis._address = null;\n\t}\n\tget c() { return this._column.index }\n\n\tprivate _value: unknown;\n\tprivate _evaluated = true;\n\tget hasValue() { return this._value != null }\n\tget value() { \n\t\tif (!this._evaluated) this.evaluate();\n\t\treturn this._value \n\t}\n\tset value(v: unknown) {\n\t\tif (v && isFormula(v.toString())) {\n\t\t\tthis._value = undefined;\n\t\t\tthis.formula = v as string;\n\t\t} else {\n\t\t\tlet value = cellValueHandler[this.type](v, this);\n\t\t\t\n\t\t\tif (!validateValue(this, value)) value = undefined;\n\t\t\t\n\t\t\tif (value !== this._value) {\n\t\t\t\tthis._value = value;\n\t\t\t\tthis._displayValue = undefined;\n\t\t\t}\n\t\t\t\n\t\t\tif (this.row.data && this.column.data) {\n\t\t\t\tthis.row.data[this.column.data] = this._value;\n\t\t\t}\n\t\t}\n\t}\n\tevaluate() {\n\t\tthis._value = cellValueHandler[this.type](this.model.calculations.evaluate(this), this);\n\t\tthis._evaluated = true;\n\t\treturn this._value;\n\t}\n\t\n\tget value2() { return this.hasFormula ? prefixFormula(this.formula) : this.value }\n\n\tprivate _displayValue: string;\n\tget hasDisplayValue() { return this._displayValue != null }\n\tget displayValue() { return this._displayValue }\n\tset displayValue(v: string) { this._displayValue = v }\n\t\n\t/* tells if cell has type that prefers usage of display value */\n\tget prefersDisplayValue() { return ['s', 'm'].includes(this.type) }\n\n\tprivate _error: CellError;\n\tget error() { return this._error }\n\tset error(v: CellError) { this._error = v }\n\tget hasError() { return !!this._error }\n\tclearError() { this._error = undefined }\n\n\tprivate _spillRange: CellRange;\n\tprivate _prevSpillRange: CellRange;\n\tget spillRange() { return this._spillRange }\n\tget prevSpillRange() { return this._prevSpillRange }\n\tset spillRange(v: CellRange) {\n\t\tif (this._spillRange && (!v || !this._spillRange.equals(v))) {\n\t\t\tthis._prevSpillRange = this._spillRange;\n\t\t}\n\t\tthis._spillRange = v;\n\t}\n\tget isSpillSource() { return this._spillRange != null }\n\n\tprivate _spillSource: CellModel;\n\tget spillSource() { return this._spillSource }\n\tget isSpilled() { return this._spillSource != null }\n\tspillValue(v: unknown, source?: CellModel) {\n\t\tthis.value = v;\n\t\tthis._spillSource = source;\n\t}\n\tclearSpilledValue() {\n\t\tthis._spillSource = undefined;\n\t\tthis._value = undefined;\n\t}\n\n\tprivate _sparkline: boolean = null;\n\tget hasSparkline() {\n\t\treturn this._sparkline === null ? (this._sparkline = this.model.sparklines.has(this.address)) : this._sparkline;\n\t}\n\t\n\tprivate _hasComment?: boolean = null;\n\tget hasComment() {\n\t\treturn this._hasComment === null ? (\n\t\t\tthis._hasComment = (this.model.comments.get(this.address) ?? []).length > 0\n\t\t) : this._hasComment;\n\t}\n\tget comments() { return this.model.comments.get(this.address) }\n\n\tprivate _composedStyle: Style;\n\tprivate _cssStyle: CSSStyle;\n\tprivate _hasStyle?: boolean = null;\n\n\tget valueFormatter(): ValueFormatter<unknown> {\n\t\tconst formatter = super.valueFormatter ?? this.row.valueFormatter ?? this.column.valueFormatter;\n\t\tif (formatter) return formatter;\n\n\t\tconst type = this.type;\n\t\tconst format = this.format;\n\t\tconst { formatLocale, fixNumberFormat } = this.model.options;\n\t\tconst v = this.value;\n\n\t\tif (v == null || v === '') {\n\t\t\treturn null;\n\t\t} else if (type == 'n') {\n\t\t\tif (format != null) return numbers.getNumberFormatter(formatLocale, format, fixNumberFormat);\n\t\t\telse return this.model.options.numberFormatter;\n\t\t} else if (type == 'g') {\n\t\t\tif (format != null) return numbers.getNumberFormatter(formatLocale, format, fixNumberFormat);\n\t\t\telse if (utils.isNumber(v)) return this.model.options.numberFormatter;\n\t\t} else if (type == 't') {\n\t\t\treturn format == null ? null : numbers.getNumberFormatter(formatLocale, format, false);\n\t\t} else if (type == 'd') {\n\t\t\treturn format ? dates.getDateFormatter(formatLocale, format) : this.model.options.dateFormatter;\n\t\t} else if (type == 's' && this.editorContent) {\n\t\t\treturn getDropdownFormatter(this.editorContent as {k: string, v: string}[]);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget formattedValue(): string {\n\t\tif (this.value == null) return '';\n\t\tif (this.hasDisplayValue) return this.displayValue;\n\t\treturn this.valueFormatter ? this.valueFormatter(this.value) : this.value.toString();\n\t}\n\t\n\tprivate get elm1() { return this.row.priority >= this.column.priority ? this.row : this.column }\n\tprivate get elm2() { return this.row.priority < this.column.priority ? this.row : this.column }\n\n\tget clickable() { return super.clickable ?? this.elm1.clickable ?? this.elm2.clickable }\n\tget type() { return super.type ?? this.elm1.type ?? this.elm2.type ?? 'g' }\n\tset type(value: CellType) { this._type = value }\n\tget editorContent() { return super.editorContent ?? this.elm1.editorContent ?? this.elm2.editorContent ?? null }\n\tget adapter() { return super.adapter ?? this.elm1.adapter ?? this.elm2.adapter }\n\tset adapter(value: ComponentAdapter) { this._adapter = value }\n\n\tprivate _address: CellAddress;\n\tget address() { return this._address ?? (this._address = this.column.address + this.row.address) }\n\n\tget range() { return CellRange.fromA1(this.address) }\n\tget validation() { return super.validation ?? this.elm1.validation ?? this.elm2.validation ?? this.model.options.cellValidation }\n\tget editable() { return super.editable ?? this.elm1.editable ?? this.elm2.editable ?? this.model.options.editable }\n\tset editable(v: boolean) { this._editable = v }\n\tget commentable() { return super.commentable ?? this.elm1.commentable ?? this.elm2.commentable ?? this.model.options.commentable }\n\tget renderer() { return super.renderer ?? this.elm1.renderer ?? this.elm2.renderer }\n\tget afterRenderer() { return super.afterRenderer ?? this.elm1.afterRenderer ?? this.elm2.afterRenderer ?? this.model.options.afterRenderer }\n\tget commentRenderer() { return super.commentRenderer ?? this.elm1.commentRenderer ?? this.elm2.commentRenderer ?? this.model.options.comments.renderer }\n\tget format() { return super.format ?? this.elm1.format ?? this.elm2.format }\n\tset format(v: numbers.NumberFormatString) { super.format = v }\n\n\tprivate _hyperlink : string;\n\tget hyperlink() { return this._hyperlink }\n\tset hyperlink(v: string) { this._hyperlink = v }\n\n\tprivate _hasFormula: boolean;\n\n\tget hasOwnFormula() { return !!this._formula }\n\tget hasFormula() {\n\t\tif (this._hasFormula == null) this._hasFormula = !!this.formula;\n\t\treturn this._hasFormula;\n\t}\n\tget formula() { return this._formula ?? this.elm1.formula ?? this.elm2.formula }\n\tset formula(v: string) {\n\t\tsuper.formula = v;\n\t\tthis.refreshFormula();\n\t}\n\n\tinvalidateValue() {\n\t\tif (this.hasFormula) {\n\t\t\tthis._value = undefined;\n\t\t\tthis._evaluated = false;\n\t\t} else {\n\t\t\tthis._evaluated = true;\n\t\t}\n\t\tthis.clearError();\n\t}\n\n\trefreshFormula() { \n\t\tthis.invalidateValue();\n\t\tthis._hasFormula = null;\n\t}\n\n\tclearFormula() {\n\t\tthis._formula = null;\n\t\tthis._hasFormula = false;\n\t\tthis._evaluated = true;\n\t}\n\n\tconstructor(model: GridModel, source: CellSource) {\n\t\tsuper(model);\n\t\tthis.row = model.rows[source.r];\n\t\tthis.column = model.columns[source.c];\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: CellSource) {\n\t\tsuper.populate(source);\n\t\tthis._colspan = source.cs ?? 1;\n\t\tthis._rowspan = source.rs ?? 1;\n\t\tthis._tooltip = source.tooltip;\n\t\tthis._hyperlink = source.hl;\n\t\tif (source.f != null && source.f !== '') this._evaluated = false;\n\t\telse if (source.v != null) this.value = source.v; // load static value only if no formula is present\n\t\tthis._displayValue = source.dv; // display value must be set after value\n\t}\n\n\tupdate(source: CellSource) {\n\t\tconst updatedProps = super.update(source) as CellSource;\n\t\tif ('cs' in source) { updatedProps.cs = this._colspan; this._colspan = source.cs; }\n\t\tif ('rs' in source) { updatedProps.rs = this._rowspan; this._rowspan = source.rs; }\n\t\tif ('tooltip' in source) { updatedProps.tooltip = this._tooltip; this._tooltip = source.tooltip; }\n\t\tif ('hl' in source) { updatedProps.hl = this._hyperlink; this._hyperlink = source.hl; }\n\t\tif ('f' in source) { this._evaluated = false; }\n\t\telse if ('v' in source) { updatedProps.v = this.value; this.value = source.v; }\n\t\tif ('dv' in source) { updatedProps.dv = this._displayValue; this._displayValue = source.dv; }\n\t\treturn updatedProps;\n\t}\n\n\tgetSourceData(options?: CellSerializationOptions) : CellSource {\n\t\tconst data = super.getSourceData() as CellSource;\n\t\tif (this._colspan > 1) data.cs = this._colspan;\n\t\tif (this._rowspan > 1) data.rs = this._rowspan;\n\t\tif (this.value != null) data.v = this.value;\n\t\tif (this.hasTooltip) data.tooltip = this._tooltip;\n\t\tif (this._hyperlink) data.hl = this._hyperlink;\n\n\t\tif (options) {\n\t\t\tif (options.displayValue && this.hasDisplayValue) data.dv = this._displayValue;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate createComposedStyle(columnStyle?: Style|number, rowStyle?: Style|number, extraStyle?: Style) {\n\t\tconst styles: (number|Style)[] = [];\n\t\t\n\t\tcolumnStyle = columnStyle || this.column.style;\n\t\trowStyle = rowStyle || this.row.style;\n\t\tif (columnStyle != null && rowStyle != null) {\n\t\t\tif (this.column.priority > this.row.priority) {\n\t\t\t\tstyles.push(rowStyle, columnStyle);\n\t\t\t} else {\n\t\t\t\tstyles.push(columnStyle, rowStyle);\n\t\t\t}\n\t\t} \n\t\telse if (columnStyle != null) styles.push(columnStyle);\n\t\telse if (rowStyle != null) styles.push(rowStyle); \n\n\t\tif (this.style != null) styles.push(this.style);\n\t\tif (extraStyle != null) styles.push(extraStyle);\n\n\t\treturn styles.length > 0 ? this.model.styles.merge(...styles) : null;\n\t}\n\n\tget composedStyle() : Style {\n\t\tif (this._hasStyle === null) {\n\t\t\tconst s = this.createComposedStyle(null, null, this.model.conditionalFormats.evaluate(this));\n\t\t\tthis._hasStyle = s != null;\n\t\t\tthis._composedStyle = s;\n\t\t}\n\t\treturn this._composedStyle;\n\t}\n\n\tget calculatedIndent(): number|null {\n\t\tconst s = this.composedStyle;\n\t\tif (s?.alignment?.indent) return s.alignment.indent;\n\n\t\t// calculates cell text indent based on row level\n\t\tif (this.column.levelIndent && this.row.level > 0) {\n\t\t\treturn this.row.level * this.model.options.levelIndentFactor;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget cssStyle() : CSSStyle {\n\t\tif (this._hasStyle === false) return null;\n\t\tif (!this._cssStyle) {\n\t\t\tconst composedStyle = this.composedStyle;\n\t\t\tif (composedStyle) {\n\t\t\t\tthis._cssStyle = styleToCSStyle(composedStyle);\n\t\t\t}\n\t\t}\n\t\treturn this._cssStyle;\n\t}\n\n\tinvalidateStyle() {\n\t\tthis._hasComment = null;\n\t\tthis._hasStyle = null;\n\t\tthis._composedStyle = null;\n\t\tthis._cssStyle = null;\n\t\tthis._sparkline = null;\n\t}\n\n\tsetStyleProperties(props: Record<StylePropertyKey, unknown>) {\n\t\tsuper.setStyleProperties(props);\n\t\tthis.invalidateStyle();\n\t}\n\n\tremoveStyleProperties(props: string[]) {\n\t\tsuper.removeStyleProperties(props);\n\t\tthis.invalidateStyle();\n\t}\n\n\tpreviewStyleProperties(\n\t\tprops: Record<StylePropertyKey, unknown>,\n\t\ttype: 'cell'|'column'|'row' = 'cell'\n\t) {\n\t\tconst composedStyle = Object.assign({}, this.createComposedStyle(type == 'column' ? props : null, type == 'row' ? props : null) ?? {});\n\t\t\n\t\tif (type == 'cell') {\n\t\t\tfor (const k in props) composedStyle[k] = props[k];\n\t\t}\n\t\tthis._hasStyle = true;\n\t\tthis._cssStyle = styleToCSStyle(composedStyle);\n\t}\n\n\tvalidate() {\n\t\tif (!this.validation) return true;\n\t\treturn validateValue(this, this.value);\n\t}\n\n\ttoString() { return this.address }\n\n}"]}
1
+ {"version":3,"file":"cellModel.js","sourceRoot":"","sources":["../../src/model/cellModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentAdapter, dates, numbers, utils, ValueFormatter } from \"@omegagrid/core\";\nimport { isFormula, prefixFormula } from \"../calculations/formula\";\nimport { CellAddress, CellRange } from \"../common\";\n// import { cellTypeRendererMap } from \"../renderers\";\nimport { ColumnModel } from \"./columnModel\";\nimport { ElementModel, ElementSource } from \"./elementModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\nimport { Style, StylePropertyKey } from \"./style\";\nimport { CSSStyle, styleToCSStyle } from \"./cssStyle\";\nimport { CellSerializationOptions, CellType } from \"../types\";\nimport { CommentSource } from \"./commentModel\";\nimport { validateValue } from \"./validations\";\n\n/** Source object type for grid cell */\nexport type CellSource = {\n\t/** row index */\n\tr: number;\n\t/** col index */\n\tc: number;\n\t/** cell value */\n\tv?: unknown;\n\t/** cell display value */\n\tdv?: string;\n\t/** cell column span */\n\tcs?: number;\n\t/** cell row span */\n\trs?: number;\n\t/** hyperlink */\n\thl?: string;\n\t/** cell tooltip content */\n\ttooltip?: string|unknown;\n\t/** comment */\n\tcomment?: CommentSource;\n} & ElementSource;\n\nconst cellValueHandler: Record<string, (v: unknown, cell: CellModel) => unknown> = {\n\t['n']: (v) => {\n\t\tconst value = utils.isString(v) ? parseFloat(v as string) : v;\n\t\treturn Number.isNaN(value) ? v : value;\n\t},\n\t['t']: (v) => v,\n\t['d']: (v, cell) => {\n\t\tif (v == null || v === '') return null;\n\t\tif (utils.isString(v)) {\n\t\t\treturn utils.isNumericString(v as string) \n\t\t\t\t? utils.strToNum(v as string)\n\t\t\t\t: dates.dateToSerialDate(dates.parse(v as string, cell.model.options.formatLocale));\n\t\t} \n\t\tif (v instanceof Date) return dates.dateToSerialDate(v);\n\t\treturn v;\n\t},\n\t['tm']: (v) => utils.isString(v) ? new Date(v as string) : v,\n\t['dt']: (v) => utils.isString(v) ? new Date(v as string) : v,\n\t['b']: (v) => !!v && v !== '0' && v.toString().toLowerCase() !== 'false',\n\t['s']: (v) => v,\n\t['m']: (v) => v,\n\t['g']: (v) => {\n\t\tif (v == null || v === '') return null;\n\t\tconst f = parseFloat(v as string);\n\t\treturn isNaN(f) ? v : f;\n\t},\n\t['a']: (v) => utils.isString(v) && v !== '' ? JSON.parse(v as string) : v,\n\t['h']: (v) => v,\n};\n\nconst dropdownFormatters = new Map<{k: string, v: string}[], ValueFormatter<string>>();\nconst getDropdownFormatter = (content?: {k: string, v: string}[]) => {\n\tcontent = content || null;\n\tif (!dropdownFormatters.has(content)) {\n\t\tif (content) {\n\t\t\tconst items = content.reduce((map, e) => map.set(e.k, e.v), new Map<string, string>());\n\t\t\tdropdownFormatters.set(content, (k: string) => items.has(k) ? items.get(k) : k);\n\t\t} else {\n\t\t\tdropdownFormatters.set(content, (k: string) => k);\n\t\t}\n\t}\n\treturn dropdownFormatters.get(content);\n};\n\nexport type CellError = {\n\tmessage: string;\n\thandled?: boolean;\n}\n\nexport class CellModel extends ElementModel {\n\t\n\tpublic _content: HTMLDivElement;\n\t\n\tprivate _tooltip: string|unknown;\n\tget tooltip() { return this._tooltip }\n\tset tooltip(v: string|unknown) { this._tooltip = v }\n\tget hasTooltip() { return this._tooltip != null }\n\t\n\tprivate _rowspan : number;\n\tget rowspan() { return this._rowspan }\n\tset rowspan(v: number) { this._rowspan = v }\n\t\n\tprivate _colspan : number;\n\tget colspan() { return this._colspan }\n\tset colspan(v: number) { this._colspan = v }\n\t\n\tprivate _row: RowModel;\n\tget row() { return this._row }\n\tget r() { return this._row.index}\n\tset row(v: RowModel) {\n\t\tthis._row = v;\n\t\tthis._address = null;\n\t}\n\t\n\tprivate _column: ColumnModel;\n\tget column() { return this._column }\n\tset column(v: ColumnModel) {\n\t\tthis._column = v;\n\t\tthis._address = null;\n\t}\n\tget c() { return this._column.index }\n\n\tprivate _value: unknown;\n\tprivate _evaluated = true;\n\tget hasValue() { return this._value != null }\n\tget value() { \n\t\tif (!this._evaluated) this.evaluate();\n\t\treturn this._value \n\t}\n\tset value(v: unknown) {\n\t\tif (v && isFormula(v.toString())) {\n\t\t\tthis._value = undefined;\n\t\t\tthis.formula = v as string;\n\t\t} else {\n\t\t\tlet value = cellValueHandler[this.type](v, this);\n\t\t\t\n\t\t\tif (!validateValue(this, value)) value = undefined;\n\t\t\t\n\t\t\tif (value !== this._value) {\n\t\t\t\tthis._value = value;\n\t\t\t\tthis._displayValue = undefined;\n\t\t\t}\n\t\t\t\n\t\t\tif (this.row.data && this.column.data) {\n\t\t\t\tthis.row.data[this.column.data] = this._value;\n\t\t\t}\n\t\t}\n\t}\n\tevaluate() {\n\t\tthis._value = cellValueHandler[this.type](this.model.calculations.evaluate(this), this);\n\t\tthis._evaluated = true;\n\t\treturn this._value;\n\t}\n\t\n\tget value2() { return this.hasFormula ? prefixFormula(this.formula) : this.value }\n\n\tprivate _displayValue: string;\n\tget hasDisplayValue() { return this._displayValue != null }\n\tget displayValue() { return this._displayValue }\n\tset displayValue(v: string) { this._displayValue = v }\n\t\n\t/* tells if cell has type that prefers usage of display value */\n\tget prefersDisplayValue() { return ['s', 'm'].includes(this.type) }\n\n\tprivate _error: CellError;\n\tget error() { return this._error }\n\tset error(v: CellError) { this._error = v }\n\tget hasError() { return !!this._error }\n\tclearError() { this._error = undefined }\n\n\tprivate _spillRange: CellRange;\n\tprivate _prevSpillRange: CellRange;\n\tget spillRange() { return this._spillRange }\n\tget prevSpillRange() { return this._prevSpillRange }\n\tset spillRange(v: CellRange) {\n\t\tif (this._spillRange && (!v || !this._spillRange.equals(v))) {\n\t\t\tthis._prevSpillRange = this._spillRange;\n\t\t}\n\t\tthis._spillRange = v;\n\t}\n\tget isSpillSource() { return this._spillRange != null }\n\n\tprivate _spillSource: CellModel;\n\tget spillSource() { return this._spillSource }\n\tget isSpilled() { return this._spillSource != null }\n\tspillValue(v: unknown, source?: CellModel) {\n\t\tthis.value = v;\n\t\tthis._spillSource = source;\n\t}\n\tclearSpilledValue() {\n\t\tthis._spillSource = undefined;\n\t\tthis._value = undefined;\n\t}\n\n\tprivate _sparkline: boolean = null;\n\tget hasSparkline() {\n\t\treturn this._sparkline === null ? (this._sparkline = this.model.sparklines.has(this.address)) : this._sparkline;\n\t}\n\t\n\tprivate _hasComment?: boolean = null;\n\tget hasComment() {\n\t\treturn this._hasComment === null ? (\n\t\t\tthis._hasComment = (this.model.comments.get(this.address) ?? []).length > 0\n\t\t) : this._hasComment;\n\t}\n\tget comments() { return this.model.comments.get(this.address) }\n\n\tprivate _composedStyle: Style;\n\tprivate _cssStyle: CSSStyle;\n\tprivate _hasStyle?: boolean = null;\n\n\tget valueFormatter(): ValueFormatter<unknown> {\n\t\tconst formatter = super.valueFormatter ?? this.row.valueFormatter ?? this.column.valueFormatter;\n\t\tif (formatter) return formatter;\n\n\t\tconst type = this.type;\n\t\tconst format = this.format;\n\t\tconst { formatLocale, fixNumberFormat } = this.model.options;\n\t\tconst v = this.value;\n\n\t\tif (v == null || v === '') {\n\t\t\treturn null;\n\t\t} else if (type == 'n') {\n\t\t\tif (format != null) return numbers.getNumberFormatter(formatLocale, format, fixNumberFormat);\n\t\t\telse return this.model.options.numberFormatter;\n\t\t} else if (type == 'g') {\n\t\t\tif (format != null) return numbers.getNumberFormatter(formatLocale, format, fixNumberFormat);\n\t\t\telse if (utils.isNumber(v)) return this.model.options.numberFormatter;\n\t\t} else if (type == 't') {\n\t\t\treturn format == null ? null : numbers.getNumberFormatter(formatLocale, format, false);\n\t\t} else if (type == 'd') {\n\t\t\treturn format ? dates.getDateFormatter(formatLocale, format) : this.model.options.dateFormatter;\n\t\t} else if (type == 's' && this.editorContent) {\n\t\t\treturn getDropdownFormatter(this.editorContent as {k: string, v: string}[]);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget formattedValue(): string {\n\t\tif (this.value == null) return '';\n\t\tif (this.hasDisplayValue) return this.displayValue;\n\t\treturn this.valueFormatter ? this.valueFormatter(this.value) : this.value.toString();\n\t}\n\t\n\tprivate get elm1() { return this.row.priority >= this.column.priority ? this.row : this.column }\n\tprivate get elm2() { return this.row.priority < this.column.priority ? this.row : this.column }\n\n\tget clickable() { return super.clickable ?? this.elm1.clickable ?? this.elm2.clickable }\n\tget type() { return super.type ?? this.elm1.type ?? this.elm2.type ?? 'g' }\n\tset type(value: CellType) { this._type = value }\n\tget editorContent() { return super.editorContent ?? this.elm1.editorContent ?? this.elm2.editorContent ?? null }\n\tget adapter() { return super.adapter ?? this.elm1.adapter ?? this.elm2.adapter }\n\tset adapter(value: ComponentAdapter) { this._adapter = value }\n\n\tprivate _address: CellAddress;\n\tget address() { return this._address ?? (this._address = this.column.address + this.row.address) }\n\n\tget range() { return CellRange.fromA1(this.address) }\n\tget validation() { return super.validation ?? this.elm1.validation ?? this.elm2.validation ?? this.model.options.cellValidation }\n\tget editable() { return super.editable ?? this.elm1.editable ?? this.elm2.editable ?? this.model.options.editable }\n\tset editable(v: boolean) { this._editable = v }\n\tget commentable() { return super.commentable ?? this.elm1.commentable ?? this.elm2.commentable ?? this.model.options.commentable }\n\tget renderer() { return super.renderer ?? this.elm1.renderer ?? this.elm2.renderer }\n\tget afterRenderer() { return super.afterRenderer ?? this.elm1.afterRenderer ?? this.elm2.afterRenderer ?? this.model.options.afterRenderer }\n\tget commentRenderer() { return super.commentRenderer ?? this.elm1.commentRenderer ?? this.elm2.commentRenderer ?? this.model.options.comments.renderer }\n\tget format() { return super.format ?? this.elm1.format ?? this.elm2.format }\n\tset format(v: numbers.NumberFormatString) { super.format = v }\n\n\tprivate _hyperlink : string;\n\tget hyperlink() { return this._hyperlink }\n\tset hyperlink(v: string) { this._hyperlink = v }\n\n\tprivate _hasFormula: boolean;\n\n\tget hasOwnFormula() { return !!this._formula }\n\tget hasFormula() {\n\t\tif (this._hasFormula == null) this._hasFormula = !!this.formula;\n\t\treturn this._hasFormula;\n\t}\n\tget formula() { return this._formula ?? this.elm1.formula ?? this.elm2.formula }\n\tset formula(v: string) {\n\t\tsuper.formula = v;\n\t\tthis.refreshFormula();\n\t}\n\n\tinvalidateValue() {\n\t\tif (this.hasFormula) {\n\t\t\tthis._value = undefined;\n\t\t\tthis._evaluated = false;\n\t\t} else {\n\t\t\tthis._evaluated = true;\n\t\t}\n\t\tthis.clearError();\n\t}\n\n\trefreshFormula() { \n\t\tthis.invalidateValue();\n\t\tthis._hasFormula = null;\n\t}\n\n\tclearFormula() {\n\t\tthis._formula = null;\n\t\tthis._hasFormula = false;\n\t\tthis._evaluated = true;\n\t}\n\n\tconstructor(model: GridModel, source: CellSource) {\n\t\tsuper(model);\n\t\tthis.row = model.rows[source.r];\n\t\tthis.column = model.columns[source.c];\n\t\tthis.populate(source);\n\t}\n\n\tpopulate(source: CellSource) {\n\t\tsuper.populate(source);\n\t\tthis._colspan = source.cs ?? 1;\n\t\tthis._rowspan = source.rs ?? 1;\n\t\tthis._tooltip = source.tooltip;\n\t\tthis._hyperlink = source.hl;\n\t\tif (source.f != null && source.f !== '') this._evaluated = false;\n\t\telse if (source.v != null) this.value = source.v; // load static value only if no formula is present\n\t\tthis._displayValue = source.dv; // display value must be set after value\n\t}\n\n\tupdate(source: CellSource) {\n\t\tconst updatedProps = super.update(source) as CellSource;\n\t\tif ('cs' in source) { updatedProps.cs = this._colspan; this._colspan = source.cs; }\n\t\tif ('rs' in source) { updatedProps.rs = this._rowspan; this._rowspan = source.rs; }\n\t\tif ('tooltip' in source) { updatedProps.tooltip = this._tooltip; this._tooltip = source.tooltip; }\n\t\tif ('hl' in source) { updatedProps.hl = this._hyperlink; this._hyperlink = source.hl; }\n\t\tif ('f' in source) { this._evaluated = false; }\n\t\telse if ('v' in source) { updatedProps.v = this.value; this.value = source.v; }\n\t\tif ('dv' in source) { updatedProps.dv = this._displayValue; this._displayValue = source.dv; }\n\t\treturn updatedProps;\n\t}\n\n\tgetSourceData(options?: CellSerializationOptions) : CellSource {\n\t\tconst data = super.getSourceData() as CellSource;\n\t\tif (this._colspan > 1) data.cs = this._colspan;\n\t\tif (this._rowspan > 1) data.rs = this._rowspan;\n\t\tif (this.value != null) data.v = this.value;\n\t\tif (this.hasTooltip) data.tooltip = this._tooltip;\n\t\tif (this._hyperlink) data.hl = this._hyperlink;\n\n\t\tif (options) {\n\t\t\tif (options.displayValue && this.hasDisplayValue) data.dv = this._displayValue;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate createComposedStyle(columnStyle?: Style|number, rowStyle?: Style|number, extraStyle?: Style) {\n\t\tconst styles: (number|Style)[] = [];\n\t\t\n\t\tcolumnStyle = columnStyle || this.column.style;\n\t\trowStyle = rowStyle || this.row.style;\n\t\tif (columnStyle != null && rowStyle != null) {\n\t\t\tif (this.column.priority > this.row.priority) {\n\t\t\t\tstyles.push(rowStyle, columnStyle);\n\t\t\t} else {\n\t\t\t\tstyles.push(columnStyle, rowStyle);\n\t\t\t}\n\t\t} \n\t\telse if (columnStyle != null) styles.push(columnStyle);\n\t\telse if (rowStyle != null) styles.push(rowStyle); \n\n\t\tif (this.style != null) styles.push(this.style);\n\t\tif (extraStyle != null) styles.push(extraStyle);\n\n\t\treturn styles.length > 0 ? this.model.styles.merge(...styles) : null;\n\t}\n\n\tget composedStyle() : Style {\n\t\tif (this._hasStyle === null) {\n\t\t\tconst s = this.createComposedStyle(null, null, this.model.conditionalFormats.evaluate(this));\n\t\t\tthis._hasStyle = s != null;\n\t\t\tthis._composedStyle = s;\n\t\t}\n\t\treturn this._composedStyle;\n\t}\n\n\tget calculatedIndent(): number|null {\n\t\tconst s = this.composedStyle;\n\t\tif (s?.alignment?.indent) return s.alignment.indent;\n\n\t\t// calculates cell text indent based on row level\n\t\tif (this.column.levelIndent && this.row.level > 0) {\n\t\t\treturn this.row.level * this.model.options.levelIndentFactor;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tget cssStyle() : CSSStyle {\n\t\tif (this._hasStyle === false) return null;\n\t\tif (!this._cssStyle) {\n\t\t\tconst composedStyle = this.composedStyle;\n\t\t\tif (composedStyle) {\n\t\t\t\tthis._cssStyle = styleToCSStyle(composedStyle);\n\t\t\t}\n\t\t}\n\t\treturn this._cssStyle;\n\t}\n\n\tinvalidateStyle() {\n\t\tthis._hasComment = null;\n\t\tthis._hasStyle = null;\n\t\tthis._composedStyle = null;\n\t\tthis._cssStyle = null;\n\t\tthis._sparkline = null;\n\t}\n\n\tsetStyleProperties(props: Record<StylePropertyKey, unknown>) {\n\t\tsuper.setStyleProperties(props);\n\t\tthis.invalidateStyle();\n\t}\n\n\tremoveStyleProperties(props: string[]) {\n\t\tsuper.removeStyleProperties(props);\n\t\tthis.invalidateStyle();\n\t}\n\n\tpreviewStyleProperties(\n\t\tprops: Record<StylePropertyKey, unknown>,\n\t\ttype: 'cell'|'column'|'row' = 'cell'\n\t) {\n\t\tconst composedStyle = Object.assign({}, this.createComposedStyle(type == 'column' ? props : null, type == 'row' ? props : null) ?? {});\n\t\t\n\t\tif (type == 'cell') {\n\t\t\tfor (const k in props) composedStyle[k] = props[k];\n\t\t}\n\t\tthis._hasStyle = true;\n\t\tthis._cssStyle = styleToCSStyle(composedStyle);\n\t}\n\n\tvalidate() {\n\t\tif (!this.validation) return true;\n\t\treturn validateValue(this, this.value);\n\t}\n\n\ttoString() { return this.address }\n\n}"]}
@@ -1,8 +1,9 @@
1
1
  import { StyleSource } from "../types";
2
2
  import { Formula, FormulaString } from "../calculations";
3
3
  import { CellRange, RangeAddress } from "../common";
4
- import { CellModel, GridModel, Style, Dependencies, Color } from "../model";
4
+ import { CellModel, GridModel, Style, Color } from "../model";
5
5
  import { IconSpec } from "@omegagrid/core";
6
+ import { DependencyModel } from "./dependencyModel";
6
7
  export type ConditionalFormatTypeDiffStyle = 'avg' | /* Format only values that are above or below average */ 'blank' | /* Format only cells that contain: Blanks or no Blanks */ 'date' | /* Format only cells that contain: Dates Occurring */ 'dup' | /* Format all duplicate values */ 'error' | /* Format only cells that contain: Errors or No Errors */ 'formula' | /* Format values where formula is true */ 'rank' | /* Format only top or bottom ranked values */ 'text' | /* Format only cells that contain: Specific Text */ 'unique' | /* Format all unique values */ 'val';
7
8
  export type ConditionalFormatTypeNoDiff = 'bar' | /* Format all cells based on values: Data Bars */ 'icon' | /* Format all cells based on values: Icon Sets */ 'scale';
8
9
  export type ConditionalFormatIconType = '3Arrows' | /* 3 Arrows (Colored) */ '3ArrowsGray' | /* 3 Arrows (Gray) */ '3Flags' | /* 3 Flags */ '3TrafficLights1' | /* 3 Traffic Lights (unrimmed) */ '3TrafficLights2' | /* 3 Traffic Lights (rimmed) */ '3Signs' | /* 3 Signs */ '3Symbols' | /* 3 Symbols (Circled) */ '3Symbols2' | /* 3 Symbols (Uncircled) */ '3Stars' | /* 3 Stars */ '3Triangles' | /* 3 Triangles */ '4Arrows' | /* 4 Arrows (Colored) */ '4ArrowsGray' | /* 4 Arrows (Gray) */ '4RedToBlack' | /* Red To Black */ '4Rating' | /* 4 Ratings */ '4TrafficLights' | /* 4 Traffic Lights */ '5Arrows' | /* 5 Arrows (Colored) */ '5ArrowsGray' | /* 5 Arrows (Gray) */ '5Rating' | /* 5 Ratings */ '5Quarters' | /* 5 Quarters */ '5Boxes';
@@ -55,13 +56,10 @@ export type CellConditionalFormat = {
55
56
  initialized?: boolean;
56
57
  };
57
58
  export declare const iconSets: Map<ConditionalFormatIconType, IconSpec[]>;
58
- export declare class ConditionalFormats {
59
- readonly model: GridModel;
59
+ export declare class ConditionalFormats extends DependencyModel {
60
60
  readonly formats: ConditionalFormat[];
61
61
  readonly cellFormatMap: Map<string, CellConditionalFormat[]>;
62
62
  readonly extremes: Map<string, [number, number]>;
63
- private _dependencies;
64
- get dependencies(): Dependencies;
65
63
  constructor(model: GridModel, sourceData?: ConditionalFormatSource);
66
64
  populate(sourceData: ConditionalFormatSource): void;
67
65
  refresh(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"conditionalFormats.d.ts","sourceRoot":"","sources":["../../src/model/conditionalFormats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conditionalFormats.d.ts","sourceRoot":"","sources":["../../src/model/conditionalFormats.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Formula } from "../calculations";
2
2
  import { CellRange } from "../common";
3
- import { IterableAddressRange, Dependencies } from "../model";
3
+ import { IterableAddressRange } from "../model";
4
4
  import { colors, log } from "@omegagrid/core";
5
+ import { DependencyModel } from "./dependencyModel";
5
6
  const ICON_CLR_RED = '#ff0000';
6
7
  const ICON_CLR_YELLOW = '#fcd53f';
7
8
  const ICON_CLR_GREEN = '#00bb5e';
@@ -120,14 +121,12 @@ const getIcon = (iconset, index) => {
120
121
  const i = iconSets.get(iconset);
121
122
  return i ? i[index] : null;
122
123
  };
123
- export class ConditionalFormats {
124
- get dependencies() { return this._dependencies; }
124
+ export class ConditionalFormats extends DependencyModel {
125
125
  constructor(model, sourceData) {
126
- this.model = model;
126
+ super(model, 'conditionalFormats');
127
127
  this.formats = [];
128
128
  this.cellFormatMap = new Map();
129
129
  this.extremes = new Map();
130
- this._dependencies = new Dependencies(model);
131
130
  if (sourceData)
132
131
  this.populate(sourceData);
133
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conditionalFormats.js","sourceRoot":"","sources":["../../src/model/conditionalFormats.ts"],"names":[],"mappings":"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","sourcesContent":["import { StyleSource } from \"../types\";\nimport { Formula, FormulaString } from \"../calculations\"\nimport { CellAddress, CellRange, RangeAddress } from \"../common\"\nimport { CellModel, GridModel, IterableAddressRange, Style, Dependencies, Color } from \"../model\"\nimport { IconSpec, colors, log } from \"@omegagrid/core\";\n\nexport type ConditionalFormatTypeDiffStyle =\n 'avg' | /* Format only values that are above or below average */\n 'blank' | /* Format only cells that contain: Blanks or no Blanks */\n 'date' | /* Format only cells that contain: Dates Occurring */\n 'dup' | /* Format all duplicate values */\n 'error' | /* Format only cells that contain: Errors or No Errors */\n 'formula' | /* Format values where formula is true */\n 'rank' | /* Format only top or bottom ranked values */\n 'text' | /* Format only cells that contain: Specific Text */\n 'unique' | /* Format all unique values */\n 'val' ; /* Format only cells that contain: Cell Value */\n\nexport type ConditionalFormatTypeNoDiff =\n 'bar' | /* Format all cells based on values: Data Bars */\n 'icon' | /* Format all cells based on values: Icon Sets */\n 'scale' ; /* Format all cells based on values: 2- or 3- color scale */\n\nexport type ConditionalFormatIconType =\n\t'3Arrows'\t\t\t| /* 3 Arrows (Colored) */\n\t'3ArrowsGray'\t\t| /* 3 Arrows (Gray) */\n\t'3Flags'\t\t\t| /* 3 Flags */\n\t'3TrafficLights1'\t| /* 3 Traffic Lights (unrimmed) */\n\t'3TrafficLights2'\t| /* 3 Traffic Lights (rimmed) */\n\t'3Signs'\t\t\t| /* 3 Signs */\n\t'3Symbols'\t\t\t| /* 3 Symbols (Circled) */\n\t'3Symbols2'\t\t\t| /* 3 Symbols (Uncircled) */\n\t'3Stars'\t\t\t| /* 3 Stars */\n\t'3Triangles'\t\t| /* 3 Triangles */\n\t'4Arrows'\t\t\t| /* 4 Arrows (Colored) */\n\t'4ArrowsGray'\t\t| /* 4 Arrows (Gray) */\n\t'4RedToBlack'\t\t| /* Red To Black */\n\t'4Rating'\t\t\t| /* 4 Ratings */\n\t'4TrafficLights'\t| /* 4 Traffic Lights */\n\t'5Arrows'\t\t\t| /* 5 Arrows (Colored) */\n\t'5ArrowsGray'\t\t| /* 5 Arrows (Gray) */\n\t'5Rating'\t\t\t| /* 5 Ratings */\n\t'5Quarters'\t\t\t| /* 5 Quarters */\n\t'5Boxes' \t\t\t; /* 5 Boxes */\n\nexport type ConditionalFormatIconSetDefinition = {\n\ttype: string,\n\tcount: number,\n\ticons: IconSpec[]\n}\n\nexport type ConditionalFormatType = ConditionalFormatTypeDiffStyle | ConditionalFormatTypeNoDiff;\nexport type ConditionalFormatThresholdType = 'num'|'percent'|'percentile'|'formula'|'min'|'max';\nexport type ConditionalFormatThreshold = {t?: ConditionalFormatThresholdType, v?: number, f?: FormulaString, color?: Color};\n\nexport type ConditionalFormatItemSource = {\n\ttype?: ConditionalFormatType,\n\tranges: RangeAddress,\n\tstyle?: StyleSource,\n\tcondition?: FormulaString,\n\tstop?: boolean,\n\tcmin?: ConditionalFormatThreshold,\n\tcmid?: ConditionalFormatThreshold,\n\tcmax?: ConditionalFormatThreshold,\n\tcolor?: Color,\n\tv?: ConditionalFormatIconType|unknown,\n\tthresh?: ConditionalFormatThreshold[]\n};\n\nexport type ConditionalFormatSource = ConditionalFormatItemSource[];\n\nexport type ConditionalFormat = {\n\ttype: ConditionalFormatType,\n\tkey?: string,\n\tranges?: CellRange[],\n\tfirstCell?: CellRange,\n\tstyle?: Style,\n\tcondition?: FormulaString,\n\tformula?: Formula,\n\tstop?: boolean,\n\tcmin?: ConditionalFormatThreshold,\n\tcmid?: ConditionalFormatThreshold,\n\tcmax?: ConditionalFormatThreshold,\n\tcolor?: Color,\n\tv?: ConditionalFormatIconType|unknown,\n\tthresh?: ConditionalFormatThreshold[]\n}\n\nexport type CellConditionalFormat = {\n\tcf: ConditionalFormat, \n\tf?: Formula,\n\tinitialized?: boolean\n}\n\nconst ICON_CLR_RED = '#ff0000';\nconst ICON_CLR_YELLOW = '#fcd53f';\nconst ICON_CLR_GREEN = '#00bb5e';\nconst ICON_CLR_GRAY = '#555555';\n\nexport const iconSets = new Map<ConditionalFormatIconType, IconSpec[]>([\n\t['3Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN}\n\t]],\n\t['3ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY}\n\t]],\n\t['3Flags', [\n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_GREEN}\n\t]],\n\t['3TrafficLights1', [\n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['3TrafficLights2', [\n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Signs', [\n\t\t{icon: ['fas', 'square'], rotation: 45, color: ICON_CLR_RED},\n\t\t{icon: ['fas', 'triangle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Symbols', [\n\t\t{icon: ['fas', 'circle-xmark'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle-exclamation'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle-check'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Symbols2', [\n\t\t{icon: ['fas', 'xmark'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'exclamation'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'check'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Stars', [\n\t\t{icon: ['fal', 'star'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'star-half-stroke'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'star'], color: ICON_CLR_YELLOW}\n\t]],\n\t['3Triangles', [\n\t\t{icon: 'caret-down', color: ICON_CLR_RED}, \n\t\t{icon: 'dash', color: ICON_CLR_YELLOW}, \n\t\t{icon: 'caret-up', color: ICON_CLR_GREEN}\n\t]],\n\t['4Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN}\n\t]],\n\t['4ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY}\n\t]],\n\t['4RedToBlack', [\n\t\t{icon: ['fas', 'circle'], color: '#000000'}, \n\t\t{icon: ['fas', 'circle'], color: '#b1b1b1'}, \n\t\t{icon: ['fas', 'circle'], color: '#edb2a3'}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}\n\t]],\t\n\t['4Rating', [\n\t\t{icon: 'signal-bars-weak', color: '#4a7db1'}, \n\t\t{icon: 'signal-bars-fair', color: '#4a7db1'}, \n\t\t{icon: 'signal-bars-good', color: '#4a7db1'}, \n\t\t{icon: ['fas', 'signal-bars'], color: '#4a7db1'}\n\t]],\n\t['4TrafficLights', [\n\t\t{icon: ['fas', 'circle'], color: '#000000'}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['5Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN},\n\t]],\n\t['5ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY},\n\t]], \n\t['5Rating', [\n\t\t{icon: ['fal', 'signal-bars']}, \n\t\t{icon: ['fal', 'signal-bars-weak'], color: '#4a7db1'}, \n\t\t{icon: ['fal', 'signal-bars-fair'], color: '#4a7db1'}, \n\t\t{icon: ['fal', 'signal-bars-good'], color: '#4a7db1'}, \n\t\t{icon: ['fas', 'signal-bars'], color: '#4a7db1'},\n\t]],\n\t['5Quarters', [\n\t\t{icon: ['fal', 'circle'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-quarter-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-half-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-three-quarters-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle'], color: '#505050'}\n\t]]\n]);\n\nconst getIcon = (iconset: ConditionalFormatIconType, index: number) => {\n\tconst i = iconSets.get(iconset);\n\treturn i ? i[index] : null;\n}\n\nexport class ConditionalFormats {\n\n\tpublic readonly formats: ConditionalFormat[] = [];\n\tpublic readonly cellFormatMap = new Map<CellAddress, CellConditionalFormat[]>();\n\tpublic readonly extremes = new Map<string, [number, number]>();\n\n\tprivate _dependencies: Dependencies;\n\tget dependencies() { return this._dependencies }\n\n\tconstructor(public readonly model: GridModel, sourceData?: ConditionalFormatSource) {\n\t\tthis._dependencies = new Dependencies(model);\n\t\tif (sourceData) this.populate(sourceData);\n\t}\n\n\tpopulate(sourceData: ConditionalFormatSource) {\n\t\tsourceData.forEach(item => {\n\t\t\ttry {\n\t\t\t\tthis.add(item);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`conditional format error: ${JSON.stringify(item)}`, error);\n\t\t\t}\n\t\t});\n\t}\n\n\trefresh() {\n\t\tthis.dependencies.clear();\n\t\tthis.cellFormatMap.clear();\n\t\tthis.extremes.clear();\n\t\tthis.formats.forEach(item => this.initConditionalFormat(item));\n\t}\n\n\tclearCellDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tthis.dependencies.clearCellDependecies(addr);\n\t\t\n\t\t// clear cached formulas\n\t\tconst item = this.cellFormatMap.get(addr);\n\t\titem.forEach(i => ({cf: i.cf}));\n\t\t\n\t\t// TODO - update extremes\n\t\t// maybe it should return all affected cells\n\n\t\treturn this;\n\t}\n\n\tgetExtremes(cf: ConditionalFormat) {\n\t\tif (this.extremes.has(cf.key)) return this.extremes.get(cf.key);\n\n\t\tconst extremes: [number, number] = [Infinity, -Infinity];\n\n\t\tcf.ranges.forEach(r => {\n\t\t\tfor (const row of this.model.getValuesInRange(r)) {\n\t\t\t\tfor (const v of row) {\n\t\t\t\t\tif (v == null) continue;\n\t\t\t\t\tif (isNaN(v as number)) continue;\n\t\t\t\t\textremes[0] = Math.min(extremes[0], v as number);\n\t\t\t\t\textremes[1] = Math.max(extremes[1], v as number);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif (cf.cmin) {\n\t\t\tif (cf.cmin.t == 'num') extremes[0] = cf.cmin.v;\n\t\t\telse if (cf.cmin.t == 'percent') {\n\t\t\t\textremes[0] = extremes[0] + (extremes[1] - extremes[0]) * cf.cmin.v / 100;\n\t\t\t}\n\t\t}\n\n\t\tif (cf.cmax) {\n\t\t\tif (cf.cmax.t == 'num') extremes[1] = cf.cmax.v;\n\t\t\telse if (cf.cmax.t == 'percent') {\n\t\t\t\textremes[1] = extremes[0] + (extremes[1] - extremes[0]) * cf.cmax.v / 100;\n\t\t\t}\n\t\t}\n\n\t\tthis.extremes.set(cf.key, extremes);\n\t\treturn extremes;\n\t}\n\n\tinvalidateExtremes(cell: CellModel) {\n\t\tthis.cellFormatMap.get(cell.address).forEach(item => this.extremes.delete(item.cf.key));\n\t}\n\n\tevaluateScaleFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value;\n\t\tif (v == null) return null;\n\n\t\tconst [min, max] = this.getExtremes(ccf.cf);\n\t\tlet fgColor: string;\n\t\tconst amount = ((v as number) - min) / (max - min);\n\n\t\tif (ccf.cf.cmid?.color) {\n\t\t\t// 3 color scale\n\t\t\tif (amount == 0.5) {\n\t\t\t\tfgColor = '#' + ccf.cf.cmid.color;\n\t\t\t} else if (amount > 0.5) {\n\t\t\t\tfgColor = colors.mix('#' + ccf.cf.cmid.color, '#' + ccf.cf.cmax.color, (amount - 0.5) * 2);\n\t\t\t} else {\n\t\t\t\tfgColor = colors.mix('#' + ccf.cf.cmin.color, '#' + ccf.cf.cmid.color, amount * 2);\n\t\t\t}\n\t\t} else if (ccf.cf.cmin?.color && ccf.cf.cmax?.color) {\n\t\t\t// 2 color scale\n\t\t\tfgColor = colors.mix('#' + ccf.cf.cmin.color, '#' + ccf.cf.cmax.color, amount);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tcolor: colors.contrastColor(fgColor).substring(1),\n\t\t\tfgColor: fgColor.substring(1)\n\t\t};\n\t}\n\n\tevaluateBarFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value as number;\n\t\tif (v == null) return null;\n\n\t\tconst ext = this.getExtremes(ccf.cf);\n\t\tlet min = ext[0];\n\t\tconst max = ext[1];\n\t\tconst hasNegative = min < 0;\n\t\tif (!hasNegative) min = min - 0.1 * (max - min);\n\t\tconst amount = Math.round((100 * (v - min) / (max - min)));\n\n\t\tif (!ccf.initialized) {\n\t\t\tccf.initialized = true;\n\t\t\tccf.cf.ranges.forEach(r => this._dependencies.add(cell.address, r.A1, null));\n\t\t}\n\n\t\tconst gradient: string[] = [];\n\n\t\tif (hasNegative) {\n\t\t\tconst offset = Math.round(-100 * min / (max - min));\n\t\t\tif (v >= 0) {\n\t\t\t\tgradient.push(`#00000000 ${offset}%`);\n\t\t\t\tgradient.push(`#${ccf.cf.color} ${offset}%`);\n\t\t\t\tgradient.push(`#${ccf.cf.color} ${amount}%`);\n\t\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t\t} else {\n\t\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t\t\tgradient.push(`#ff0000 ${amount}%`);\n\t\t\t\tgradient.push(`#ff0000 ${offset}%`);\n\t\t\t\tgradient.push(`#00000000 ${offset}%`);\n\t\t\t}\n\t\t} else {\n\t\t\tgradient.push(`#${ccf.cf.color} ${amount}%`);\n\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t}\n\n\t\treturn {\n\t\t\tcssStyle: {\n\t\t\t\tbackgroundClip: 'padding-box',\n\t\t\t\tbackgroundImage: `linear-gradient(90deg, ${gradient.join(',')})`\n\t\t\t}\n\t\t};\n\t}\n\n\tevaluateFormulaFormat(cell: CellModel, ccf: CellConditionalFormat) {\n\t\tif (!ccf.initialized && ccf.cf.condition) {\n\t\t\tccf.initialized = true;\n\t\t\tconst addr = cell.address;\n\t\t\tconst f = new Formula(ccf.cf.condition, this.model.calculations.tokenizer);\n\t\t\tccf.f = f.shift({\n\t\t\t\tindex: 0,\n\t\t\t\toffset: cell.c - ccf.cf.firstCell.c1, \n\t\t\t\tdirection: 'right'\n\t\t\t}).shift({\n\t\t\t\tindex: 0, \n\t\t\t\toffset: cell.r - ccf.cf.firstCell.r1,\n\t\t\t\tdirection: 'down'\n\t\t\t});\n\n\t\t\tf.cells.forEach(dep => this._dependencies.add(addr, dep[1].A1, dep[2]));\n\t\t\tf.ranges.forEach(dep => this._dependencies.add(addr, dep[1].A1, dep[2]));\n\t\t\tf.variables.forEach(([_i, v]) => {\n\t\t\t\tconst c = this.model.getCellByName(v, cell.range);\n\t\t\t\tif (c) this._dependencies.add(addr, c.address, null);\n\t\t\t});\n\t\t}\n\n\t\t// if condition is not provided, it evaluates to true\n\t\tconst res = ccf.f ? this.model.calculations.evaluateFormula(ccf.f, cell) : true;\n\t\tif (!res) return null;\n\t\tconst style = {...ccf.cf.style};\n\t\tif (!style.color) colors.plainHex(colors.contrastColor(colors.css(ccf.cf.style.fgColor)));\n\t\treturn style;\n\t}\n\n\tevaluateIconFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value;\n\t\tif (v == null) return null;\n\n\t\tconst [min, max] = this.getExtremes(ccf.cf);\n\t\tlet percentValue: number;\n\t\t\n\t\tfor (let i = ccf.cf.thresh.length - 1; i >= 0; i--) {\n\t\t\tconst thresh = ccf.cf.thresh[i];\n\t\t\tif (thresh.t === 'percent') {\n\t\t\t\tif (percentValue == null) percentValue = 100 * (v as number - min) / (max - min);\n\t\t\t\tif (percentValue >= thresh.v) {\n\t\t\t\t\treturn {icon: getIcon(ccf.cf.v as ConditionalFormatIconType, i)};\n\t\t\t\t}\n\t\t\t} else if (thresh.t === 'num') {\n\t\t\t\tif (v as number >= thresh.v) {\n\t\t\t\t\treturn {icon: getIcon(ccf.cf.v as ConditionalFormatIconType, i)};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tevaluate(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tconst formats = this.cellFormatMap.get(addr);\n\t\tif (!formats) return null;\n\t\tlet style: Style = null;\n\t\tlet diffStyle: Style = null;\n\t\tfor (const item of formats) {\n\t\t\ttry {\n\t\t\t\tswitch (item.cf.type) {\n\t\t\t\t\tcase 'formula':\n\t\t\t\t\t\tdiffStyle = this.evaluateFormulaFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tdiffStyle = this.evaluateScaleFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bar':\n\t\t\t\t\t\tdiffStyle = this.evaluateBarFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'icon':\n\t\t\t\t\t\tdiffStyle = this.evaluateIconFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdiffStyle = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Conditional format error: ${JSON.stringify(item)}`, error);\n\t\t\t}\n\t\t\t\n\t\t\tif (diffStyle) {\n\t\t\t\tstyle = style ? {...style, ...diffStyle} : diffStyle;\n\t\t\t\tif (item.cf.stop) break;\n\t\t\t}\n\t\t}\n\t\treturn style;\n\t}\n\n\tinitConditionalFormat(item: ConditionalFormat) {\n\t\titem.firstCell = null;\n\t\t(item.ranges as CellRange[]).forEach(range => {\n\t\t\tfor (const r of new IterableAddressRange(range.intersect(this.model.gridRange))) {\n\t\t\t\tconst a1 = r.A1;\n\t\t\t\tswitch (item.type) {\n\t\t\t\t\tcase 'formula':\n\t\t\t\t\t\tif (!item.firstCell) {\n\t\t\t\t\t\t\titem.firstCell = r;\n\t\t\t\t\t\t\titem.formula = item.condition ? new Formula(item.condition, this.model.calculations.tokenizer) : null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst ccfs = this.cellFormatMap.get(a1) || this.cellFormatMap.set(a1, []).get(a1);\n\t\t\t\tccfs.push({cf: item});\n\t\t\t}\n\t\t});\n\t\treturn item;\n\t}\n\n\tadd(itemSource: ConditionalFormatItemSource) {\n\t\tconst item: ConditionalFormat = {\n\t\t\tkey: itemSource.ranges,\n\t\t\tranges: CellRange.fromA1s(itemSource.ranges),\n\t\t\ttype: itemSource.type || 'formula',\n\t\t\tfirstCell: null,\n\t\t\tformula: null,\n\t\t\tstyle: itemSource.style ? this.model.styles.add(itemSource.style) : null,\n\t\t\tcondition: itemSource.condition,\n\t\t\tstop: !!itemSource.stop,\n\t\t\tcmin: itemSource.cmin,\n\t\t\tcmid: itemSource.cmid,\n\t\t\tcmax: itemSource.cmax,\n\t\t\tcolor: itemSource.color,\n\t\t\tv: itemSource.v,\n\t\t\tthresh: itemSource.thresh\n\t\t};\n\n\t\tthis.formats.push(this.initConditionalFormat(item));\n\t}\n\n\tgetSourceData() {\n\t\treturn this.formats.map<ConditionalFormatItemSource>(format => ({\n\t\t\ttype: format.type,\n\t\t\tranges: CellRange.toA1s(format.ranges),\n\t\t\tstyle: format.style,\n\t\t\tcondition: format.condition,\n\t\t\tstop: format.stop,\n\t\t\tcmin: format.cmin,\n\t\t\tcmid: format.cmid,\n\t\t\tcmax: format.cmax,\n\t\t\tcolor: format.color,\n\t\t\tv: format.v,\n\t\t\tthresh: format.thresh\n\t\t}));\n\t}\n\n\n}"]}
1
+ {"version":3,"file":"conditionalFormats.js","sourceRoot":"","sources":["../../src/model/conditionalFormats.ts"],"names":[],"mappings":"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","sourcesContent":["import { StyleSource } from \"../types\";\nimport { Formula, FormulaString } from \"../calculations\"\nimport { CellAddress, CellRange, RangeAddress } from \"../common\"\nimport { CellModel, GridModel, IterableAddressRange, Style, Color } from \"../model\"\nimport { IconSpec, colors, log } from \"@omegagrid/core\";\nimport { DependencyModel } from \"./dependencyModel\";\n\nexport type ConditionalFormatTypeDiffStyle =\n 'avg' | /* Format only values that are above or below average */\n 'blank' | /* Format only cells that contain: Blanks or no Blanks */\n 'date' | /* Format only cells that contain: Dates Occurring */\n 'dup' | /* Format all duplicate values */\n 'error' | /* Format only cells that contain: Errors or No Errors */\n 'formula' | /* Format values where formula is true */\n 'rank' | /* Format only top or bottom ranked values */\n 'text' | /* Format only cells that contain: Specific Text */\n 'unique' | /* Format all unique values */\n 'val' ; /* Format only cells that contain: Cell Value */\n\nexport type ConditionalFormatTypeNoDiff =\n 'bar' | /* Format all cells based on values: Data Bars */\n 'icon' | /* Format all cells based on values: Icon Sets */\n 'scale' ; /* Format all cells based on values: 2- or 3- color scale */\n\nexport type ConditionalFormatIconType =\n\t'3Arrows'\t\t\t| /* 3 Arrows (Colored) */\n\t'3ArrowsGray'\t\t| /* 3 Arrows (Gray) */\n\t'3Flags'\t\t\t| /* 3 Flags */\n\t'3TrafficLights1'\t| /* 3 Traffic Lights (unrimmed) */\n\t'3TrafficLights2'\t| /* 3 Traffic Lights (rimmed) */\n\t'3Signs'\t\t\t| /* 3 Signs */\n\t'3Symbols'\t\t\t| /* 3 Symbols (Circled) */\n\t'3Symbols2'\t\t\t| /* 3 Symbols (Uncircled) */\n\t'3Stars'\t\t\t| /* 3 Stars */\n\t'3Triangles'\t\t| /* 3 Triangles */\n\t'4Arrows'\t\t\t| /* 4 Arrows (Colored) */\n\t'4ArrowsGray'\t\t| /* 4 Arrows (Gray) */\n\t'4RedToBlack'\t\t| /* Red To Black */\n\t'4Rating'\t\t\t| /* 4 Ratings */\n\t'4TrafficLights'\t| /* 4 Traffic Lights */\n\t'5Arrows'\t\t\t| /* 5 Arrows (Colored) */\n\t'5ArrowsGray'\t\t| /* 5 Arrows (Gray) */\n\t'5Rating'\t\t\t| /* 5 Ratings */\n\t'5Quarters'\t\t\t| /* 5 Quarters */\n\t'5Boxes' \t\t\t; /* 5 Boxes */\n\nexport type ConditionalFormatIconSetDefinition = {\n\ttype: string,\n\tcount: number,\n\ticons: IconSpec[]\n}\n\nexport type ConditionalFormatType = ConditionalFormatTypeDiffStyle | ConditionalFormatTypeNoDiff;\nexport type ConditionalFormatThresholdType = 'num'|'percent'|'percentile'|'formula'|'min'|'max';\nexport type ConditionalFormatThreshold = {t?: ConditionalFormatThresholdType, v?: number, f?: FormulaString, color?: Color};\n\nexport type ConditionalFormatItemSource = {\n\ttype?: ConditionalFormatType,\n\tranges: RangeAddress,\n\tstyle?: StyleSource,\n\tcondition?: FormulaString,\n\tstop?: boolean,\n\tcmin?: ConditionalFormatThreshold,\n\tcmid?: ConditionalFormatThreshold,\n\tcmax?: ConditionalFormatThreshold,\n\tcolor?: Color,\n\tv?: ConditionalFormatIconType|unknown,\n\tthresh?: ConditionalFormatThreshold[]\n};\n\nexport type ConditionalFormatSource = ConditionalFormatItemSource[];\n\nexport type ConditionalFormat = {\n\ttype: ConditionalFormatType,\n\tkey?: string,\n\tranges?: CellRange[],\n\tfirstCell?: CellRange,\n\tstyle?: Style,\n\tcondition?: FormulaString,\n\tformula?: Formula,\n\tstop?: boolean,\n\tcmin?: ConditionalFormatThreshold,\n\tcmid?: ConditionalFormatThreshold,\n\tcmax?: ConditionalFormatThreshold,\n\tcolor?: Color,\n\tv?: ConditionalFormatIconType|unknown,\n\tthresh?: ConditionalFormatThreshold[]\n}\n\nexport type CellConditionalFormat = {\n\tcf: ConditionalFormat, \n\tf?: Formula,\n\tinitialized?: boolean\n}\n\nconst ICON_CLR_RED = '#ff0000';\nconst ICON_CLR_YELLOW = '#fcd53f';\nconst ICON_CLR_GREEN = '#00bb5e';\nconst ICON_CLR_GRAY = '#555555';\n\nexport const iconSets = new Map<ConditionalFormatIconType, IconSpec[]>([\n\t['3Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN}\n\t]],\n\t['3ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY}\n\t]],\n\t['3Flags', [\n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'flag-pennant'], color: ICON_CLR_GREEN}\n\t]],\n\t['3TrafficLights1', [\n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['3TrafficLights2', [\n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'square-o'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Signs', [\n\t\t{icon: ['fas', 'square'], rotation: 45, color: ICON_CLR_RED},\n\t\t{icon: ['fas', 'triangle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Symbols', [\n\t\t{icon: ['fas', 'circle-xmark'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle-exclamation'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle-check'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Symbols2', [\n\t\t{icon: ['fas', 'xmark'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'exclamation'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'check'], color: ICON_CLR_GREEN}\n\t]],\n\t['3Stars', [\n\t\t{icon: ['fal', 'star'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'star-half-stroke'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'star'], color: ICON_CLR_YELLOW}\n\t]],\n\t['3Triangles', [\n\t\t{icon: 'caret-down', color: ICON_CLR_RED}, \n\t\t{icon: 'dash', color: ICON_CLR_YELLOW}, \n\t\t{icon: 'caret-up', color: ICON_CLR_GREEN}\n\t]],\n\t['4Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN}\n\t]],\n\t['4ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY}\n\t]],\n\t['4RedToBlack', [\n\t\t{icon: ['fas', 'circle'], color: '#000000'}, \n\t\t{icon: ['fas', 'circle'], color: '#b1b1b1'}, \n\t\t{icon: ['fas', 'circle'], color: '#edb2a3'}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}\n\t]],\t\n\t['4Rating', [\n\t\t{icon: 'signal-bars-weak', color: '#4a7db1'}, \n\t\t{icon: 'signal-bars-fair', color: '#4a7db1'}, \n\t\t{icon: 'signal-bars-good', color: '#4a7db1'}, \n\t\t{icon: ['fas', 'signal-bars'], color: '#4a7db1'}\n\t]],\n\t['4TrafficLights', [\n\t\t{icon: ['fas', 'circle'], color: '#000000'}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'circle'], color: ICON_CLR_GREEN}\n\t]],\n\t['5Arrows', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_RED}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_YELLOW}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GREEN},\n\t]],\n\t['5ArrowsGray', [\n\t\t{icon: ['fas', 'down'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'down-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up-right'], color: ICON_CLR_GRAY}, \n\t\t{icon: ['fas', 'up'], color: ICON_CLR_GRAY},\n\t]], \n\t['5Rating', [\n\t\t{icon: ['fal', 'signal-bars']}, \n\t\t{icon: ['fal', 'signal-bars-weak'], color: '#4a7db1'}, \n\t\t{icon: ['fal', 'signal-bars-fair'], color: '#4a7db1'}, \n\t\t{icon: ['fal', 'signal-bars-good'], color: '#4a7db1'}, \n\t\t{icon: ['fas', 'signal-bars'], color: '#4a7db1'},\n\t]],\n\t['5Quarters', [\n\t\t{icon: ['fal', 'circle'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-quarter-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-half-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle-three-quarters-stroke'], color: '#505050'}, \n\t\t{icon: ['fas', 'circle'], color: '#505050'}\n\t]]\n]);\n\nconst getIcon = (iconset: ConditionalFormatIconType, index: number) => {\n\tconst i = iconSets.get(iconset);\n\treturn i ? i[index] : null;\n}\n\nexport class ConditionalFormats extends DependencyModel {\n\n\tpublic readonly formats: ConditionalFormat[] = [];\n\tpublic readonly cellFormatMap = new Map<CellAddress, CellConditionalFormat[]>();\n\tpublic readonly extremes = new Map<string, [number, number]>();\n\n\tconstructor(model: GridModel, sourceData?: ConditionalFormatSource) {\n\t\tsuper(model, 'conditionalFormats');\n\t\tif (sourceData) this.populate(sourceData);\n\t}\n\n\tpopulate(sourceData: ConditionalFormatSource) {\n\t\tsourceData.forEach(item => {\n\t\t\ttry {\n\t\t\t\tthis.add(item);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`conditional format error: ${JSON.stringify(item)}`, error);\n\t\t\t}\n\t\t});\n\t}\n\n\trefresh() {\n\t\tthis.dependencies.clear();\n\t\tthis.cellFormatMap.clear();\n\t\tthis.extremes.clear();\n\t\tthis.formats.forEach(item => this.initConditionalFormat(item));\n\t}\n\n\tclearCellDependecies(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tthis.dependencies.clearCellDependecies(addr);\n\t\t\n\t\t// clear cached formulas\n\t\tconst item = this.cellFormatMap.get(addr);\n\t\titem.forEach(i => ({cf: i.cf}));\n\t\t\n\t\t// TODO - update extremes\n\t\t// maybe it should return all affected cells\n\n\t\treturn this;\n\t}\n\n\tgetExtremes(cf: ConditionalFormat) {\n\t\tif (this.extremes.has(cf.key)) return this.extremes.get(cf.key);\n\n\t\tconst extremes: [number, number] = [Infinity, -Infinity];\n\n\t\tcf.ranges.forEach(r => {\n\t\t\tfor (const row of this.model.getValuesInRange(r)) {\n\t\t\t\tfor (const v of row) {\n\t\t\t\t\tif (v == null) continue;\n\t\t\t\t\tif (isNaN(v as number)) continue;\n\t\t\t\t\textremes[0] = Math.min(extremes[0], v as number);\n\t\t\t\t\textremes[1] = Math.max(extremes[1], v as number);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif (cf.cmin) {\n\t\t\tif (cf.cmin.t == 'num') extremes[0] = cf.cmin.v;\n\t\t\telse if (cf.cmin.t == 'percent') {\n\t\t\t\textremes[0] = extremes[0] + (extremes[1] - extremes[0]) * cf.cmin.v / 100;\n\t\t\t}\n\t\t}\n\n\t\tif (cf.cmax) {\n\t\t\tif (cf.cmax.t == 'num') extremes[1] = cf.cmax.v;\n\t\t\telse if (cf.cmax.t == 'percent') {\n\t\t\t\textremes[1] = extremes[0] + (extremes[1] - extremes[0]) * cf.cmax.v / 100;\n\t\t\t}\n\t\t}\n\n\t\tthis.extremes.set(cf.key, extremes);\n\t\treturn extremes;\n\t}\n\n\tinvalidateExtremes(cell: CellModel) {\n\t\tthis.cellFormatMap.get(cell.address).forEach(item => this.extremes.delete(item.cf.key));\n\t}\n\n\tevaluateScaleFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value;\n\t\tif (v == null) return null;\n\n\t\tconst [min, max] = this.getExtremes(ccf.cf);\n\t\tlet fgColor: string;\n\t\tconst amount = ((v as number) - min) / (max - min);\n\n\t\tif (ccf.cf.cmid?.color) {\n\t\t\t// 3 color scale\n\t\t\tif (amount == 0.5) {\n\t\t\t\tfgColor = '#' + ccf.cf.cmid.color;\n\t\t\t} else if (amount > 0.5) {\n\t\t\t\tfgColor = colors.mix('#' + ccf.cf.cmid.color, '#' + ccf.cf.cmax.color, (amount - 0.5) * 2);\n\t\t\t} else {\n\t\t\t\tfgColor = colors.mix('#' + ccf.cf.cmin.color, '#' + ccf.cf.cmid.color, amount * 2);\n\t\t\t}\n\t\t} else if (ccf.cf.cmin?.color && ccf.cf.cmax?.color) {\n\t\t\t// 2 color scale\n\t\t\tfgColor = colors.mix('#' + ccf.cf.cmin.color, '#' + ccf.cf.cmax.color, amount);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tcolor: colors.contrastColor(fgColor).substring(1),\n\t\t\tfgColor: fgColor.substring(1)\n\t\t};\n\t}\n\n\tevaluateBarFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value as number;\n\t\tif (v == null) return null;\n\n\t\tconst ext = this.getExtremes(ccf.cf);\n\t\tlet min = ext[0];\n\t\tconst max = ext[1];\n\t\tconst hasNegative = min < 0;\n\t\tif (!hasNegative) min = min - 0.1 * (max - min);\n\t\tconst amount = Math.round((100 * (v - min) / (max - min)));\n\n\t\tif (!ccf.initialized) {\n\t\t\tccf.initialized = true;\n\t\t\tccf.cf.ranges.forEach(r => this._dependencies.add(cell.address, r.A1, null));\n\t\t}\n\n\t\tconst gradient: string[] = [];\n\n\t\tif (hasNegative) {\n\t\t\tconst offset = Math.round(-100 * min / (max - min));\n\t\t\tif (v >= 0) {\n\t\t\t\tgradient.push(`#00000000 ${offset}%`);\n\t\t\t\tgradient.push(`#${ccf.cf.color} ${offset}%`);\n\t\t\t\tgradient.push(`#${ccf.cf.color} ${amount}%`);\n\t\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t\t} else {\n\t\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t\t\tgradient.push(`#ff0000 ${amount}%`);\n\t\t\t\tgradient.push(`#ff0000 ${offset}%`);\n\t\t\t\tgradient.push(`#00000000 ${offset}%`);\n\t\t\t}\n\t\t} else {\n\t\t\tgradient.push(`#${ccf.cf.color} ${amount}%`);\n\t\t\tgradient.push(`#00000000 ${amount}%`);\n\t\t}\n\n\t\treturn {\n\t\t\tcssStyle: {\n\t\t\t\tbackgroundClip: 'padding-box',\n\t\t\t\tbackgroundImage: `linear-gradient(90deg, ${gradient.join(',')})`\n\t\t\t}\n\t\t};\n\t}\n\n\tevaluateFormulaFormat(cell: CellModel, ccf: CellConditionalFormat) {\n\t\tif (!ccf.initialized && ccf.cf.condition) {\n\t\t\tccf.initialized = true;\n\t\t\tconst addr = cell.address;\n\t\t\tconst f = new Formula(ccf.cf.condition, this.model.calculations.tokenizer);\n\t\t\tccf.f = f.shift({\n\t\t\t\tindex: 0,\n\t\t\t\toffset: cell.c - ccf.cf.firstCell.c1, \n\t\t\t\tdirection: 'right'\n\t\t\t}).shift({\n\t\t\t\tindex: 0, \n\t\t\t\toffset: cell.r - ccf.cf.firstCell.r1,\n\t\t\t\tdirection: 'down'\n\t\t\t});\n\n\t\t\tf.cells.forEach(dep => this._dependencies.add(addr, dep[1].A1, dep[2]));\n\t\t\tf.ranges.forEach(dep => this._dependencies.add(addr, dep[1].A1, dep[2]));\n\t\t\tf.variables.forEach(([_i, v]) => {\n\t\t\t\tconst c = this.model.getCellByName(v, cell.range);\n\t\t\t\tif (c) this._dependencies.add(addr, c.address, null);\n\t\t\t});\n\t\t}\n\n\t\t// if condition is not provided, it evaluates to true\n\t\tconst res = ccf.f ? this.model.calculations.evaluateFormula(ccf.f, cell) : true;\n\t\tif (!res) return null;\n\t\tconst style = {...ccf.cf.style};\n\t\tif (!style.color) colors.plainHex(colors.contrastColor(colors.css(ccf.cf.style.fgColor)));\n\t\treturn style;\n\t}\n\n\tevaluateIconFormat(cell: CellModel, ccf: CellConditionalFormat) : Style {\n\t\tconst v = cell.value;\n\t\tif (v == null) return null;\n\n\t\tconst [min, max] = this.getExtremes(ccf.cf);\n\t\tlet percentValue: number;\n\t\t\n\t\tfor (let i = ccf.cf.thresh.length - 1; i >= 0; i--) {\n\t\t\tconst thresh = ccf.cf.thresh[i];\n\t\t\tif (thresh.t === 'percent') {\n\t\t\t\tif (percentValue == null) percentValue = 100 * (v as number - min) / (max - min);\n\t\t\t\tif (percentValue >= thresh.v) {\n\t\t\t\t\treturn {icon: getIcon(ccf.cf.v as ConditionalFormatIconType, i)};\n\t\t\t\t}\n\t\t\t} else if (thresh.t === 'num') {\n\t\t\t\tif (v as number >= thresh.v) {\n\t\t\t\t\treturn {icon: getIcon(ccf.cf.v as ConditionalFormatIconType, i)};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tevaluate(cell: CellModel) {\n\t\tconst addr = cell.address;\n\t\tconst formats = this.cellFormatMap.get(addr);\n\t\tif (!formats) return null;\n\t\tlet style: Style = null;\n\t\tlet diffStyle: Style = null;\n\t\tfor (const item of formats) {\n\t\t\ttry {\n\t\t\t\tswitch (item.cf.type) {\n\t\t\t\t\tcase 'formula':\n\t\t\t\t\t\tdiffStyle = this.evaluateFormulaFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'scale':\n\t\t\t\t\t\tdiffStyle = this.evaluateScaleFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bar':\n\t\t\t\t\t\tdiffStyle = this.evaluateBarFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'icon':\n\t\t\t\t\t\tdiffStyle = this.evaluateIconFormat(cell, item);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdiffStyle = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Conditional format error: ${JSON.stringify(item)}`, error);\n\t\t\t}\n\t\t\t\n\t\t\tif (diffStyle) {\n\t\t\t\tstyle = style ? {...style, ...diffStyle} : diffStyle;\n\t\t\t\tif (item.cf.stop) break;\n\t\t\t}\n\t\t}\n\t\treturn style;\n\t}\n\n\tinitConditionalFormat(item: ConditionalFormat) {\n\t\titem.firstCell = null;\n\t\t(item.ranges as CellRange[]).forEach(range => {\n\t\t\tfor (const r of new IterableAddressRange(range.intersect(this.model.gridRange))) {\n\t\t\t\tconst a1 = r.A1;\n\t\t\t\tswitch (item.type) {\n\t\t\t\t\tcase 'formula':\n\t\t\t\t\t\tif (!item.firstCell) {\n\t\t\t\t\t\t\titem.firstCell = r;\n\t\t\t\t\t\t\titem.formula = item.condition ? new Formula(item.condition, this.model.calculations.tokenizer) : null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst ccfs = this.cellFormatMap.get(a1) || this.cellFormatMap.set(a1, []).get(a1);\n\t\t\t\tccfs.push({cf: item});\n\t\t\t}\n\t\t});\n\t\treturn item;\n\t}\n\n\tadd(itemSource: ConditionalFormatItemSource) {\n\t\tconst item: ConditionalFormat = {\n\t\t\tkey: itemSource.ranges,\n\t\t\tranges: CellRange.fromA1s(itemSource.ranges),\n\t\t\ttype: itemSource.type || 'formula',\n\t\t\tfirstCell: null,\n\t\t\tformula: null,\n\t\t\tstyle: itemSource.style ? this.model.styles.add(itemSource.style) : null,\n\t\t\tcondition: itemSource.condition,\n\t\t\tstop: !!itemSource.stop,\n\t\t\tcmin: itemSource.cmin,\n\t\t\tcmid: itemSource.cmid,\n\t\t\tcmax: itemSource.cmax,\n\t\t\tcolor: itemSource.color,\n\t\t\tv: itemSource.v,\n\t\t\tthresh: itemSource.thresh\n\t\t};\n\n\t\tthis.formats.push(this.initConditionalFormat(item));\n\t}\n\n\tgetSourceData() {\n\t\treturn this.formats.map<ConditionalFormatItemSource>(format => ({\n\t\t\ttype: format.type,\n\t\t\tranges: CellRange.toA1s(format.ranges),\n\t\t\tstyle: format.style,\n\t\t\tcondition: format.condition,\n\t\t\tstop: format.stop,\n\t\t\tcmin: format.cmin,\n\t\t\tcmid: format.cmid,\n\t\t\tcmax: format.cmax,\n\t\t\tcolor: format.color,\n\t\t\tv: format.v,\n\t\t\tthresh: format.thresh\n\t\t}));\n\t}\n\n\n}"]}