@univerjs/sheets-formula 1.0.0-alpha.8 → 1.0.0-beta.0

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.
package/lib/cjs/facade.js CHANGED
@@ -32,12 +32,11 @@ var FFormulaSheetsMixin = class extends _univerjs_engine_formula_facade.FFormula
32
32
  config.initialFormulaComputing = calculationMode;
33
33
  }
34
34
  registerFunction(name, func, options) {
35
- var _options$description;
36
35
  const registerFunctionService = this._injector.get(_univerjs_engine_formula.IRegisterFunctionService);
37
36
  const params = {
38
37
  name,
39
38
  func,
40
- description: typeof options === "string" ? options : (_options$description = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description !== void 0 ? _options$description : "",
39
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
41
40
  locales: typeof options === "object" ? options.locales : void 0
42
41
  };
43
42
  const functionsDisposable = registerFunctionService.registerFunction(params);
@@ -45,12 +44,11 @@ var FFormulaSheetsMixin = class extends _univerjs_engine_formula_facade.FFormula
45
44
  return functionsDisposable;
46
45
  }
47
46
  registerAsyncFunction(name, func, options) {
48
- var _options$description2;
49
47
  const registerFunctionService = this._injector.get(_univerjs_engine_formula.IRegisterFunctionService);
50
48
  const params = {
51
49
  name,
52
50
  func,
53
- description: typeof options === "string" ? options : (_options$description2 = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description2 !== void 0 ? _options$description2 : "",
51
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
54
52
  locales: typeof options === "object" ? options.locales : void 0
55
53
  };
56
54
  const functionsDisposable = registerFunctionService.registerAsyncFunction(params);
package/lib/cjs/index.js CHANGED
@@ -528,9 +528,8 @@ let TriggerCalculationController = class TriggerCalculationController extends _u
528
528
  this._progress$.complete();
529
529
  }
530
530
  _getCalculationMode() {
531
- var _config$initialFormul;
532
531
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
533
- return (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
532
+ return (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
534
533
  }
535
534
  _commandExecutedListener() {
536
535
  this.disposeWithMe(this._commandService.beforeCommandExecuted((command) => {
@@ -694,8 +693,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
694
693
  if (!sheet) continue;
695
694
  const undoCellValue = new _univerjs_core.ObjectMatrix();
696
695
  new _univerjs_core.ObjectMatrix(patch.cellValue).forValue((row, column) => {
697
- var _sheet$getCellRaw;
698
- undoCellValue.setValue(row, column, (_sheet$getCellRaw = sheet.getCellRaw(row, column)) !== null && _sheet$getCellRaw !== void 0 ? _sheet$getCellRaw : null);
696
+ undoCellValue.setValue(row, column, sheet.getCellRaw(row, column) ?? null);
699
697
  });
700
698
  redos.push({
701
699
  id: _univerjs_sheets.SetRangeValuesMutation.id,
@@ -710,7 +708,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
710
708
  });
711
709
  }
712
710
  const definedNames = this._definedNamesService.getDefinedNameMap(workbook.getUnitId());
713
- for (const item of Object.values(definedNames !== null && definedNames !== void 0 ? definedNames : {})) {
711
+ for (const item of Object.values(definedNames ?? {})) {
714
712
  const formulaOrRefString = (0, _univerjs_engine_formula.refactorFormulaUnitQualifier)(item.formulaOrRefString, oldName, newName);
715
713
  if (formulaOrRefString !== item.formulaOrRefString) {
716
714
  redos.push({
@@ -879,12 +877,11 @@ function getFormulaReferenceRange(oldFormulaData, newFormulaData, formulaReferen
879
877
  * @returns
880
878
  */
881
879
  function refRangeFormula(oldFormulaData, newFormulaData, formulaReferenceMoveParam) {
882
- var _formulaReferenceMove, _formulaReferenceMove2;
883
880
  const redoFormulaData = {};
884
881
  const undoFormulaData = {};
885
882
  const { unitId: fromUnitId, sheetId: fromSheetId } = formulaReferenceMoveParam;
886
- const targetUnitId = (_formulaReferenceMove = formulaReferenceMoveParam.targetUnitId) !== null && _formulaReferenceMove !== void 0 ? _formulaReferenceMove : fromUnitId;
887
- const targetSheetId = (_formulaReferenceMove2 = formulaReferenceMoveParam.targetSheetId) !== null && _formulaReferenceMove2 !== void 0 ? _formulaReferenceMove2 : fromSheetId;
883
+ const targetUnitId = formulaReferenceMoveParam.targetUnitId ?? fromUnitId;
884
+ const targetSheetId = formulaReferenceMoveParam.targetSheetId ?? fromSheetId;
888
885
  const isCrossSheet = fromUnitId !== targetUnitId || fromSheetId !== targetSheetId;
889
886
  (/* @__PURE__ */ new Set([...Object.keys(oldFormulaData), ...Object.keys(newFormulaData)])).forEach((unitId) => {
890
887
  if (checkFormulaDataNull(oldFormulaData, unitId, fromSheetId)) return;
@@ -1109,8 +1106,7 @@ function getRedoFormulaData(rangeList, oldFormulaMatrix, newFormulaMatrix) {
1109
1106
  si: null
1110
1107
  });
1111
1108
  if (newCell) {
1112
- var _newFormulaMatrix$get;
1113
- const newValue = formulaDataItemToCellData((_newFormulaMatrix$get = newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn)) !== null && _newFormulaMatrix$get !== void 0 ? _newFormulaMatrix$get : oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1109
+ const newValue = formulaDataItemToCellData(newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn) ?? oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1114
1110
  redoFormulaData.setValue(newCell.startRow, newCell.startColumn, newValue);
1115
1111
  }
1116
1112
  }
@@ -1130,7 +1126,7 @@ function getUndoFormulaData(rangeList, oldFormulaMatrix) {
1130
1126
  undoFormulaData.setValue(oldCell.startRow, oldCell.startColumn, oldCellOldValue);
1131
1127
  if (newCell) {
1132
1128
  const newCellOldValue = formulaDataItemToCellData(oldFormulaMatrix.getValue(newCell.startRow, newCell.startColumn));
1133
- undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue !== null && newCellOldValue !== void 0 ? newCellOldValue : {
1129
+ undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue ?? {
1134
1130
  f: null,
1135
1131
  si: null
1136
1132
  });
@@ -1748,7 +1744,7 @@ function handleRefInsertRangeMoveDown(command, workbook) {
1748
1744
  };
1749
1745
  }
1750
1746
  function handleRefRemoveRow(command, workbook) {
1751
- var _workbook$getSheetByS3, _workbook$getSheetByS4;
1747
+ var _workbook$getSheetByS3;
1752
1748
  const { params } = command;
1753
1749
  if (!params) return null;
1754
1750
  const { range, unitId, subUnitId: sheetId } = params;
@@ -1757,7 +1753,7 @@ function handleRefRemoveRow(command, workbook) {
1757
1753
  range,
1758
1754
  unitId,
1759
1755
  sheetId,
1760
- rangeFilteredRows: (_workbook$getSheetByS3 = (_workbook$getSheetByS4 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS4 === void 0 ? void 0 : _workbook$getSheetByS4.getRangeFilterRows(range)) !== null && _workbook$getSheetByS3 !== void 0 ? _workbook$getSheetByS3 : []
1756
+ rangeFilteredRows: ((_workbook$getSheetByS3 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS3 === void 0 ? void 0 : _workbook$getSheetByS3.getRangeFilterRows(range)) ?? []
1761
1757
  };
1762
1758
  }
1763
1759
  function handleRefRemoveCol(command) {
@@ -2134,7 +2130,6 @@ let UpdateFormulaController = class UpdateFormulaController extends _univerjs_co
2134
2130
  this._commandService.executeCommand(_univerjs_engine_formula.SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2135
2131
  }
2136
2132
  _handleWorkbookAdded(unit) {
2137
- var _config$initialFormul;
2138
2133
  const formulaData = {};
2139
2134
  const unitId = unit.getUnitId();
2140
2135
  const newFormulaData = { [unitId]: {} };
@@ -2147,7 +2142,7 @@ let UpdateFormulaController = class UpdateFormulaController extends _univerjs_co
2147
2142
  });
2148
2143
  this._commandService.executeCommand(_univerjs_engine_formula.SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2149
2144
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
2150
- const calculationMode = (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
2145
+ const calculationMode = (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
2151
2146
  const params = this._getDirtyDataByCalculationMode(calculationMode);
2152
2147
  this._commandService.executeCommand(_univerjs_engine_formula.SetTriggerFormulaCalculationStartMutation.id, params, { onlyLocal: true });
2153
2148
  }
@@ -2290,7 +2285,7 @@ let UpdateFormulaController = class UpdateFormulaController extends _univerjs_co
2290
2285
  };
2291
2286
  shouldModify = true;
2292
2287
  refChangeIds.push(i);
2293
- if (si && (x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2288
+ if (si && (x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2294
2289
  }
2295
2290
  /**
2296
2291
  * If the reference sequence range is not affected by the move, and the move is a cross-worksheet cut operation, it may be necessary to rewrite the sheet name in the ref string after move, to make sure the ref still works after move.
@@ -2331,7 +2326,7 @@ let UpdateFormulaController = class UpdateFormulaController extends _univerjs_co
2331
2326
  0
2332
2327
  ].includes(type)) {
2333
2328
  if (from && from.startRow <= row && row <= from.endRow && from.startColumn <= column && column <= from.endColumn) {
2334
- if ((x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2329
+ if ((x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2335
2330
  } else if (!shouldModifySi.includes(si)) return true;
2336
2331
  } else return true;
2337
2332
  if (inCrossSheetCutRange) {
@@ -2353,10 +2348,9 @@ let UpdateFormulaController = class UpdateFormulaController extends _univerjs_co
2353
2348
  if (!newFormulaData[targetUnitId]) newFormulaData[targetUnitId] = {};
2354
2349
  if (!newFormulaData[targetUnitId][targetSheetId]) newFormulaData[targetUnitId][targetSheetId] = {};
2355
2350
  for (const newFormula of inCrossSheetCutRangeNewFormulas) {
2356
- var _to$startRow, _from$startRow, _to$startColumn, _from$startColumn;
2357
2351
  const { fromRow, fromColumn, formulaString } = newFormula;
2358
- const targetRow = fromRow + (((_to$startRow = to === null || to === void 0 ? void 0 : to.startRow) !== null && _to$startRow !== void 0 ? _to$startRow : 0) - ((_from$startRow = from === null || from === void 0 ? void 0 : from.startRow) !== null && _from$startRow !== void 0 ? _from$startRow : 0));
2359
- const targetColumn = fromColumn + (((_to$startColumn = to === null || to === void 0 ? void 0 : to.startColumn) !== null && _to$startColumn !== void 0 ? _to$startColumn : 0) - ((_from$startColumn = from === null || from === void 0 ? void 0 : from.startColumn) !== null && _from$startColumn !== void 0 ? _from$startColumn : 0));
2352
+ const targetRow = fromRow + (((to === null || to === void 0 ? void 0 : to.startRow) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startRow) ?? 0));
2353
+ const targetColumn = fromColumn + (((to === null || to === void 0 ? void 0 : to.startColumn) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startColumn) ?? 0));
2360
2354
  if (!newFormulaData[targetUnitId][targetSheetId][targetRow]) newFormulaData[targetUnitId][targetSheetId][targetRow] = {};
2361
2355
  newFormulaData[targetUnitId][targetSheetId][targetRow][targetColumn] = { f: formulaString };
2362
2356
  }
@@ -2422,7 +2416,7 @@ function tableReferenceContainsColumn(columnStruct, columnNames) {
2422
2416
  //#endregion
2423
2417
  //#region package.json
2424
2418
  var name = "@univerjs/sheets-formula";
2425
- var version = "1.0.0-alpha.8";
2419
+ var version = "1.0.0-beta.0";
2426
2420
 
2427
2421
  //#endregion
2428
2422
  //#region src/common/plugin-name.ts
package/lib/es/facade.js CHANGED
@@ -32,12 +32,11 @@ var FFormulaSheetsMixin = class extends FFormula {
32
32
  config.initialFormulaComputing = calculationMode;
33
33
  }
34
34
  registerFunction(name, func, options) {
35
- var _options$description;
36
35
  const registerFunctionService = this._injector.get(IRegisterFunctionService);
37
36
  const params = {
38
37
  name,
39
38
  func,
40
- description: typeof options === "string" ? options : (_options$description = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description !== void 0 ? _options$description : "",
39
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
41
40
  locales: typeof options === "object" ? options.locales : void 0
42
41
  };
43
42
  const functionsDisposable = registerFunctionService.registerFunction(params);
@@ -45,12 +44,11 @@ var FFormulaSheetsMixin = class extends FFormula {
45
44
  return functionsDisposable;
46
45
  }
47
46
  registerAsyncFunction(name, func, options) {
48
- var _options$description2;
49
47
  const registerFunctionService = this._injector.get(IRegisterFunctionService);
50
48
  const params = {
51
49
  name,
52
50
  func,
53
- description: typeof options === "string" ? options : (_options$description2 = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description2 !== void 0 ? _options$description2 : "",
51
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
54
52
  locales: typeof options === "object" ? options.locales : void 0
55
53
  };
56
54
  const functionsDisposable = registerFunctionService.registerAsyncFunction(params);
package/lib/es/index.js CHANGED
@@ -527,9 +527,8 @@ let TriggerCalculationController = class TriggerCalculationController extends Di
527
527
  this._progress$.complete();
528
528
  }
529
529
  _getCalculationMode() {
530
- var _config$initialFormul;
531
530
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
532
- return (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
531
+ return (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
533
532
  }
534
533
  _commandExecutedListener() {
535
534
  this.disposeWithMe(this._commandService.beforeCommandExecuted((command) => {
@@ -693,8 +692,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
693
692
  if (!sheet) continue;
694
693
  const undoCellValue = new ObjectMatrix();
695
694
  new ObjectMatrix(patch.cellValue).forValue((row, column) => {
696
- var _sheet$getCellRaw;
697
- undoCellValue.setValue(row, column, (_sheet$getCellRaw = sheet.getCellRaw(row, column)) !== null && _sheet$getCellRaw !== void 0 ? _sheet$getCellRaw : null);
695
+ undoCellValue.setValue(row, column, sheet.getCellRaw(row, column) ?? null);
698
696
  });
699
697
  redos.push({
700
698
  id: SetRangeValuesMutation.id,
@@ -709,7 +707,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
709
707
  });
710
708
  }
711
709
  const definedNames = this._definedNamesService.getDefinedNameMap(workbook.getUnitId());
712
- for (const item of Object.values(definedNames !== null && definedNames !== void 0 ? definedNames : {})) {
710
+ for (const item of Object.values(definedNames ?? {})) {
713
711
  const formulaOrRefString = refactorFormulaUnitQualifier(item.formulaOrRefString, oldName, newName);
714
712
  if (formulaOrRefString !== item.formulaOrRefString) {
715
713
  redos.push({
@@ -878,12 +876,11 @@ function getFormulaReferenceRange(oldFormulaData, newFormulaData, formulaReferen
878
876
  * @returns
879
877
  */
880
878
  function refRangeFormula(oldFormulaData, newFormulaData, formulaReferenceMoveParam) {
881
- var _formulaReferenceMove, _formulaReferenceMove2;
882
879
  const redoFormulaData = {};
883
880
  const undoFormulaData = {};
884
881
  const { unitId: fromUnitId, sheetId: fromSheetId } = formulaReferenceMoveParam;
885
- const targetUnitId = (_formulaReferenceMove = formulaReferenceMoveParam.targetUnitId) !== null && _formulaReferenceMove !== void 0 ? _formulaReferenceMove : fromUnitId;
886
- const targetSheetId = (_formulaReferenceMove2 = formulaReferenceMoveParam.targetSheetId) !== null && _formulaReferenceMove2 !== void 0 ? _formulaReferenceMove2 : fromSheetId;
882
+ const targetUnitId = formulaReferenceMoveParam.targetUnitId ?? fromUnitId;
883
+ const targetSheetId = formulaReferenceMoveParam.targetSheetId ?? fromSheetId;
887
884
  const isCrossSheet = fromUnitId !== targetUnitId || fromSheetId !== targetSheetId;
888
885
  (/* @__PURE__ */ new Set([...Object.keys(oldFormulaData), ...Object.keys(newFormulaData)])).forEach((unitId) => {
889
886
  if (checkFormulaDataNull(oldFormulaData, unitId, fromSheetId)) return;
@@ -1108,8 +1105,7 @@ function getRedoFormulaData(rangeList, oldFormulaMatrix, newFormulaMatrix) {
1108
1105
  si: null
1109
1106
  });
1110
1107
  if (newCell) {
1111
- var _newFormulaMatrix$get;
1112
- const newValue = formulaDataItemToCellData((_newFormulaMatrix$get = newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn)) !== null && _newFormulaMatrix$get !== void 0 ? _newFormulaMatrix$get : oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1108
+ const newValue = formulaDataItemToCellData(newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn) ?? oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1113
1109
  redoFormulaData.setValue(newCell.startRow, newCell.startColumn, newValue);
1114
1110
  }
1115
1111
  }
@@ -1129,7 +1125,7 @@ function getUndoFormulaData(rangeList, oldFormulaMatrix) {
1129
1125
  undoFormulaData.setValue(oldCell.startRow, oldCell.startColumn, oldCellOldValue);
1130
1126
  if (newCell) {
1131
1127
  const newCellOldValue = formulaDataItemToCellData(oldFormulaMatrix.getValue(newCell.startRow, newCell.startColumn));
1132
- undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue !== null && newCellOldValue !== void 0 ? newCellOldValue : {
1128
+ undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue ?? {
1133
1129
  f: null,
1134
1130
  si: null
1135
1131
  });
@@ -1747,7 +1743,7 @@ function handleRefInsertRangeMoveDown(command, workbook) {
1747
1743
  };
1748
1744
  }
1749
1745
  function handleRefRemoveRow(command, workbook) {
1750
- var _workbook$getSheetByS3, _workbook$getSheetByS4;
1746
+ var _workbook$getSheetByS3;
1751
1747
  const { params } = command;
1752
1748
  if (!params) return null;
1753
1749
  const { range, unitId, subUnitId: sheetId } = params;
@@ -1756,7 +1752,7 @@ function handleRefRemoveRow(command, workbook) {
1756
1752
  range,
1757
1753
  unitId,
1758
1754
  sheetId,
1759
- rangeFilteredRows: (_workbook$getSheetByS3 = (_workbook$getSheetByS4 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS4 === void 0 ? void 0 : _workbook$getSheetByS4.getRangeFilterRows(range)) !== null && _workbook$getSheetByS3 !== void 0 ? _workbook$getSheetByS3 : []
1755
+ rangeFilteredRows: ((_workbook$getSheetByS3 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS3 === void 0 ? void 0 : _workbook$getSheetByS3.getRangeFilterRows(range)) ?? []
1760
1756
  };
1761
1757
  }
1762
1758
  function handleRefRemoveCol(command) {
@@ -2133,7 +2129,6 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2133
2129
  this._commandService.executeCommand(SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2134
2130
  }
2135
2131
  _handleWorkbookAdded(unit) {
2136
- var _config$initialFormul;
2137
2132
  const formulaData = {};
2138
2133
  const unitId = unit.getUnitId();
2139
2134
  const newFormulaData = { [unitId]: {} };
@@ -2146,7 +2141,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2146
2141
  });
2147
2142
  this._commandService.executeCommand(SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2148
2143
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
2149
- const calculationMode = (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
2144
+ const calculationMode = (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
2150
2145
  const params = this._getDirtyDataByCalculationMode(calculationMode);
2151
2146
  this._commandService.executeCommand(SetTriggerFormulaCalculationStartMutation.id, params, { onlyLocal: true });
2152
2147
  }
@@ -2289,7 +2284,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2289
2284
  };
2290
2285
  shouldModify = true;
2291
2286
  refChangeIds.push(i);
2292
- if (si && (x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2287
+ if (si && (x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2293
2288
  }
2294
2289
  /**
2295
2290
  * If the reference sequence range is not affected by the move, and the move is a cross-worksheet cut operation, it may be necessary to rewrite the sheet name in the ref string after move, to make sure the ref still works after move.
@@ -2330,7 +2325,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2330
2325
  0
2331
2326
  ].includes(type)) {
2332
2327
  if (from && from.startRow <= row && row <= from.endRow && from.startColumn <= column && column <= from.endColumn) {
2333
- if ((x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2328
+ if ((x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2334
2329
  } else if (!shouldModifySi.includes(si)) return true;
2335
2330
  } else return true;
2336
2331
  if (inCrossSheetCutRange) {
@@ -2352,10 +2347,9 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2352
2347
  if (!newFormulaData[targetUnitId]) newFormulaData[targetUnitId] = {};
2353
2348
  if (!newFormulaData[targetUnitId][targetSheetId]) newFormulaData[targetUnitId][targetSheetId] = {};
2354
2349
  for (const newFormula of inCrossSheetCutRangeNewFormulas) {
2355
- var _to$startRow, _from$startRow, _to$startColumn, _from$startColumn;
2356
2350
  const { fromRow, fromColumn, formulaString } = newFormula;
2357
- const targetRow = fromRow + (((_to$startRow = to === null || to === void 0 ? void 0 : to.startRow) !== null && _to$startRow !== void 0 ? _to$startRow : 0) - ((_from$startRow = from === null || from === void 0 ? void 0 : from.startRow) !== null && _from$startRow !== void 0 ? _from$startRow : 0));
2358
- const targetColumn = fromColumn + (((_to$startColumn = to === null || to === void 0 ? void 0 : to.startColumn) !== null && _to$startColumn !== void 0 ? _to$startColumn : 0) - ((_from$startColumn = from === null || from === void 0 ? void 0 : from.startColumn) !== null && _from$startColumn !== void 0 ? _from$startColumn : 0));
2351
+ const targetRow = fromRow + (((to === null || to === void 0 ? void 0 : to.startRow) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startRow) ?? 0));
2352
+ const targetColumn = fromColumn + (((to === null || to === void 0 ? void 0 : to.startColumn) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startColumn) ?? 0));
2359
2353
  if (!newFormulaData[targetUnitId][targetSheetId][targetRow]) newFormulaData[targetUnitId][targetSheetId][targetRow] = {};
2360
2354
  newFormulaData[targetUnitId][targetSheetId][targetRow][targetColumn] = { f: formulaString };
2361
2355
  }
@@ -2421,7 +2415,7 @@ function tableReferenceContainsColumn(columnStruct, columnNames) {
2421
2415
  //#endregion
2422
2416
  //#region package.json
2423
2417
  var name = "@univerjs/sheets-formula";
2424
- var version = "1.0.0-alpha.8";
2418
+ var version = "1.0.0-beta.0";
2425
2419
 
2426
2420
  //#endregion
2427
2421
  //#region src/common/plugin-name.ts
package/lib/facade.js CHANGED
@@ -32,12 +32,11 @@ var FFormulaSheetsMixin = class extends FFormula {
32
32
  config.initialFormulaComputing = calculationMode;
33
33
  }
34
34
  registerFunction(name, func, options) {
35
- var _options$description;
36
35
  const registerFunctionService = this._injector.get(IRegisterFunctionService);
37
36
  const params = {
38
37
  name,
39
38
  func,
40
- description: typeof options === "string" ? options : (_options$description = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description !== void 0 ? _options$description : "",
39
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
41
40
  locales: typeof options === "object" ? options.locales : void 0
42
41
  };
43
42
  const functionsDisposable = registerFunctionService.registerFunction(params);
@@ -45,12 +44,11 @@ var FFormulaSheetsMixin = class extends FFormula {
45
44
  return functionsDisposable;
46
45
  }
47
46
  registerAsyncFunction(name, func, options) {
48
- var _options$description2;
49
47
  const registerFunctionService = this._injector.get(IRegisterFunctionService);
50
48
  const params = {
51
49
  name,
52
50
  func,
53
- description: typeof options === "string" ? options : (_options$description2 = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description2 !== void 0 ? _options$description2 : "",
51
+ description: typeof options === "string" ? options : (options === null || options === void 0 ? void 0 : options.description) ?? "",
54
52
  locales: typeof options === "object" ? options.locales : void 0
55
53
  };
56
54
  const functionsDisposable = registerFunctionService.registerAsyncFunction(params);
package/lib/index.js CHANGED
@@ -527,9 +527,8 @@ let TriggerCalculationController = class TriggerCalculationController extends Di
527
527
  this._progress$.complete();
528
528
  }
529
529
  _getCalculationMode() {
530
- var _config$initialFormul;
531
530
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
532
- return (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
531
+ return (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
533
532
  }
534
533
  _commandExecutedListener() {
535
534
  this.disposeWithMe(this._commandService.beforeCommandExecuted((command) => {
@@ -693,8 +692,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
693
692
  if (!sheet) continue;
694
693
  const undoCellValue = new ObjectMatrix();
695
694
  new ObjectMatrix(patch.cellValue).forValue((row, column) => {
696
- var _sheet$getCellRaw;
697
- undoCellValue.setValue(row, column, (_sheet$getCellRaw = sheet.getCellRaw(row, column)) !== null && _sheet$getCellRaw !== void 0 ? _sheet$getCellRaw : null);
695
+ undoCellValue.setValue(row, column, sheet.getCellRaw(row, column) ?? null);
698
696
  });
699
697
  redos.push({
700
698
  id: SetRangeValuesMutation.id,
@@ -709,7 +707,7 @@ let UnitQualifierRenameController = class UnitQualifierRenameController extends
709
707
  });
710
708
  }
711
709
  const definedNames = this._definedNamesService.getDefinedNameMap(workbook.getUnitId());
712
- for (const item of Object.values(definedNames !== null && definedNames !== void 0 ? definedNames : {})) {
710
+ for (const item of Object.values(definedNames ?? {})) {
713
711
  const formulaOrRefString = refactorFormulaUnitQualifier(item.formulaOrRefString, oldName, newName);
714
712
  if (formulaOrRefString !== item.formulaOrRefString) {
715
713
  redos.push({
@@ -878,12 +876,11 @@ function getFormulaReferenceRange(oldFormulaData, newFormulaData, formulaReferen
878
876
  * @returns
879
877
  */
880
878
  function refRangeFormula(oldFormulaData, newFormulaData, formulaReferenceMoveParam) {
881
- var _formulaReferenceMove, _formulaReferenceMove2;
882
879
  const redoFormulaData = {};
883
880
  const undoFormulaData = {};
884
881
  const { unitId: fromUnitId, sheetId: fromSheetId } = formulaReferenceMoveParam;
885
- const targetUnitId = (_formulaReferenceMove = formulaReferenceMoveParam.targetUnitId) !== null && _formulaReferenceMove !== void 0 ? _formulaReferenceMove : fromUnitId;
886
- const targetSheetId = (_formulaReferenceMove2 = formulaReferenceMoveParam.targetSheetId) !== null && _formulaReferenceMove2 !== void 0 ? _formulaReferenceMove2 : fromSheetId;
882
+ const targetUnitId = formulaReferenceMoveParam.targetUnitId ?? fromUnitId;
883
+ const targetSheetId = formulaReferenceMoveParam.targetSheetId ?? fromSheetId;
887
884
  const isCrossSheet = fromUnitId !== targetUnitId || fromSheetId !== targetSheetId;
888
885
  (/* @__PURE__ */ new Set([...Object.keys(oldFormulaData), ...Object.keys(newFormulaData)])).forEach((unitId) => {
889
886
  if (checkFormulaDataNull(oldFormulaData, unitId, fromSheetId)) return;
@@ -1108,8 +1105,7 @@ function getRedoFormulaData(rangeList, oldFormulaMatrix, newFormulaMatrix) {
1108
1105
  si: null
1109
1106
  });
1110
1107
  if (newCell) {
1111
- var _newFormulaMatrix$get;
1112
- const newValue = formulaDataItemToCellData((_newFormulaMatrix$get = newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn)) !== null && _newFormulaMatrix$get !== void 0 ? _newFormulaMatrix$get : oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1108
+ const newValue = formulaDataItemToCellData(newFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn) ?? oldFormulaMatrix.getValue(oldCell.startRow, oldCell.startColumn));
1113
1109
  redoFormulaData.setValue(newCell.startRow, newCell.startColumn, newValue);
1114
1110
  }
1115
1111
  }
@@ -1129,7 +1125,7 @@ function getUndoFormulaData(rangeList, oldFormulaMatrix) {
1129
1125
  undoFormulaData.setValue(oldCell.startRow, oldCell.startColumn, oldCellOldValue);
1130
1126
  if (newCell) {
1131
1127
  const newCellOldValue = formulaDataItemToCellData(oldFormulaMatrix.getValue(newCell.startRow, newCell.startColumn));
1132
- undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue !== null && newCellOldValue !== void 0 ? newCellOldValue : {
1128
+ undoFormulaData.setValue(newCell.startRow, newCell.startColumn, newCellOldValue ?? {
1133
1129
  f: null,
1134
1130
  si: null
1135
1131
  });
@@ -1747,7 +1743,7 @@ function handleRefInsertRangeMoveDown(command, workbook) {
1747
1743
  };
1748
1744
  }
1749
1745
  function handleRefRemoveRow(command, workbook) {
1750
- var _workbook$getSheetByS3, _workbook$getSheetByS4;
1746
+ var _workbook$getSheetByS3;
1751
1747
  const { params } = command;
1752
1748
  if (!params) return null;
1753
1749
  const { range, unitId, subUnitId: sheetId } = params;
@@ -1756,7 +1752,7 @@ function handleRefRemoveRow(command, workbook) {
1756
1752
  range,
1757
1753
  unitId,
1758
1754
  sheetId,
1759
- rangeFilteredRows: (_workbook$getSheetByS3 = (_workbook$getSheetByS4 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS4 === void 0 ? void 0 : _workbook$getSheetByS4.getRangeFilterRows(range)) !== null && _workbook$getSheetByS3 !== void 0 ? _workbook$getSheetByS3 : []
1755
+ rangeFilteredRows: ((_workbook$getSheetByS3 = workbook.getSheetBySheetId(sheetId)) === null || _workbook$getSheetByS3 === void 0 ? void 0 : _workbook$getSheetByS3.getRangeFilterRows(range)) ?? []
1760
1756
  };
1761
1757
  }
1762
1758
  function handleRefRemoveCol(command) {
@@ -2133,7 +2129,6 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2133
2129
  this._commandService.executeCommand(SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2134
2130
  }
2135
2131
  _handleWorkbookAdded(unit) {
2136
- var _config$initialFormul;
2137
2132
  const formulaData = {};
2138
2133
  const unitId = unit.getUnitId();
2139
2134
  const newFormulaData = { [unitId]: {} };
@@ -2146,7 +2141,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2146
2141
  });
2147
2142
  this._commandService.executeCommand(SetFormulaDataMutation.id, { formulaData: newFormulaData }, { onlyLocal: true });
2148
2143
  const config = this._configService.getConfig(PLUGIN_CONFIG_KEY_BASE);
2149
- const calculationMode = (_config$initialFormul = config === null || config === void 0 ? void 0 : config.initialFormulaComputing) !== null && _config$initialFormul !== void 0 ? _config$initialFormul : 1;
2144
+ const calculationMode = (config === null || config === void 0 ? void 0 : config.initialFormulaComputing) ?? 1;
2150
2145
  const params = this._getDirtyDataByCalculationMode(calculationMode);
2151
2146
  this._commandService.executeCommand(SetTriggerFormulaCalculationStartMutation.id, params, { onlyLocal: true });
2152
2147
  }
@@ -2289,7 +2284,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2289
2284
  };
2290
2285
  shouldModify = true;
2291
2286
  refChangeIds.push(i);
2292
- if (si && (x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2287
+ if (si && (x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2293
2288
  }
2294
2289
  /**
2295
2290
  * If the reference sequence range is not affected by the move, and the move is a cross-worksheet cut operation, it may be necessary to rewrite the sheet name in the ref string after move, to make sure the ref still works after move.
@@ -2330,7 +2325,7 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2330
2325
  0
2331
2326
  ].includes(type)) {
2332
2327
  if (from && from.startRow <= row && row <= from.endRow && from.startColumn <= column && column <= from.endColumn) {
2333
- if ((x !== null && x !== void 0 ? x : 0) === 0 && (y !== null && y !== void 0 ? y : 0) === 0) shouldModifySi.push(si);
2328
+ if ((x ?? 0) === 0 && (y ?? 0) === 0) shouldModifySi.push(si);
2334
2329
  } else if (!shouldModifySi.includes(si)) return true;
2335
2330
  } else return true;
2336
2331
  if (inCrossSheetCutRange) {
@@ -2352,10 +2347,9 @@ let UpdateFormulaController = class UpdateFormulaController extends Disposable {
2352
2347
  if (!newFormulaData[targetUnitId]) newFormulaData[targetUnitId] = {};
2353
2348
  if (!newFormulaData[targetUnitId][targetSheetId]) newFormulaData[targetUnitId][targetSheetId] = {};
2354
2349
  for (const newFormula of inCrossSheetCutRangeNewFormulas) {
2355
- var _to$startRow, _from$startRow, _to$startColumn, _from$startColumn;
2356
2350
  const { fromRow, fromColumn, formulaString } = newFormula;
2357
- const targetRow = fromRow + (((_to$startRow = to === null || to === void 0 ? void 0 : to.startRow) !== null && _to$startRow !== void 0 ? _to$startRow : 0) - ((_from$startRow = from === null || from === void 0 ? void 0 : from.startRow) !== null && _from$startRow !== void 0 ? _from$startRow : 0));
2358
- const targetColumn = fromColumn + (((_to$startColumn = to === null || to === void 0 ? void 0 : to.startColumn) !== null && _to$startColumn !== void 0 ? _to$startColumn : 0) - ((_from$startColumn = from === null || from === void 0 ? void 0 : from.startColumn) !== null && _from$startColumn !== void 0 ? _from$startColumn : 0));
2351
+ const targetRow = fromRow + (((to === null || to === void 0 ? void 0 : to.startRow) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startRow) ?? 0));
2352
+ const targetColumn = fromColumn + (((to === null || to === void 0 ? void 0 : to.startColumn) ?? 0) - ((from === null || from === void 0 ? void 0 : from.startColumn) ?? 0));
2359
2353
  if (!newFormulaData[targetUnitId][targetSheetId][targetRow]) newFormulaData[targetUnitId][targetSheetId][targetRow] = {};
2360
2354
  newFormulaData[targetUnitId][targetSheetId][targetRow][targetColumn] = { f: formulaString };
2361
2355
  }
@@ -2421,7 +2415,7 @@ function tableReferenceContainsColumn(columnStruct, columnNames) {
2421
2415
  //#endregion
2422
2416
  //#region package.json
2423
2417
  var name = "@univerjs/sheets-formula";
2424
- var version = "1.0.0-alpha.8";
2418
+ var version = "1.0.0-beta.0";
2425
2419
 
2426
2420
  //#endregion
2427
2421
  //#region src/common/plugin-name.ts
package/lib/umd/facade.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core"),require("@univerjs/engine-formula"),require("@univerjs/engine-formula/facade"),require("@univerjs/sheets-formula"),require("@univerjs/core/facade"),require("@univerjs/sheets/facade")):typeof define==`function`&&define.amd?define([`@univerjs/core`,`@univerjs/engine-formula`,`@univerjs/engine-formula/facade`,`@univerjs/sheets-formula`,`@univerjs/core/facade`,`@univerjs/sheets/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCore,e.UniverEngineFormula,e.UniverEngineFormulaFacade,e.UniverSheetsFormula,e.UniverCoreFacade,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a){var o=class extends n.FFormula{_initialize(){this._debouncedFormulaCalculation=(0,e.debounce)(()=>{this._commandService.executeCommand(t.SetTriggerFormulaCalculationStartMutation.id,{commands:[],forceCalculation:!0},{onlyLocal:!0})},10)}setInitialFormulaComputing(t){let n=this._injector.get(e.LifecycleService).stage,i=this._injector.get(e.ILogService),a=this._injector.get(e.IConfigService);n>e.LifecycleStages.Starting&&i.warn(`[FFormula]`,`CalculationMode is called after the Starting lifecycle and will take effect the next time the Univer Sheet is constructed. If you want it to take effect when the Univer Sheet is initialized this time, consider calling it before the Ready lifecycle or using configuration.`);let o=a.getConfig(r.PLUGIN_CONFIG_KEY_BASE);if(!o){a.setConfig(r.PLUGIN_CONFIG_KEY_BASE,{initialFormulaComputing:t});return}o.initialFormulaComputing=t}registerFunction(e,n,r){var i;let a=this._injector.get(t.IRegisterFunctionService),o={name:e,func:n,description:typeof r==`string`?r:(i=r==null?void 0:r.description)==null?``:i,locales:typeof r==`object`?r.locales:void 0},s=a.registerFunction(o);return this._debouncedFormulaCalculation(),s}registerAsyncFunction(e,n,r){var i;let a=this._injector.get(t.IRegisterFunctionService),o={name:e,func:n,description:typeof r==`string`?r:(i=r==null?void 0:r.description)==null?``:i,locales:typeof r==`object`?r.locales:void 0},s=a.registerAsyncFunction(o);return this._debouncedFormulaCalculation(),s}};n.FFormula.extend(o);var s=class extends i.FEnum{get CalculationMode(){return r.CalculationMode}};i.FEnum.extend(s);var c=class extends a.FWorkbook{getAllFormulaError(){let e=[],n=this._workbook,r=n.getUnitId(),i=n.getSheets(),a=this._injector.get(t.FormulaDataModel).getArrayFormulaCellData();return i.forEach(n=>{var i;let o=n.getName(),s=n.getSheetId(),c=n.getCellMatrix(),l=(a==null||(i=a[r])==null?void 0:i[s])||{};c.forValue((n,r,i)=>{var a;if(!i)return;let s=(0,t.extractFormulaError)(i,!!(l!=null&&(a=l[n])!=null&&a[r]));s&&e.push({sheetName:o,row:n,column:r,formula:i.f||``,errorType:s})})}),e}};a.FWorkbook.extend(c);var l=class extends a.FRange{getFormulaError(){var e;let n=[],r=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=this._worksheet.getName(),o=this._workbook.getSheetBySheetId(i);if(!o)return n;let s=this._injector.get(t.FormulaDataModel).getArrayFormulaCellData(),c=(s==null||(e=s[r])==null?void 0:e[i])||{},l=o.getCellMatrix(),{startRow:u,endRow:d,startColumn:f,endColumn:p}=this._range;for(let e=u;e<=d;e++)for(let r=f;r<=p;r++){var m;let i=l.getValue(e,r);if(!i)continue;let o=(0,t.extractFormulaError)(i,!!(c!=null&&(m=c[e])!=null&&m[r]));o&&n.push({sheetName:a,row:e,column:r,formula:i.f||``,errorType:o})}return n}};a.FRange.extend(l)});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(require("@univerjs/core"),require("@univerjs/engine-formula"),require("@univerjs/engine-formula/facade"),require("@univerjs/sheets-formula"),require("@univerjs/core/facade"),require("@univerjs/sheets/facade")):typeof define==`function`&&define.amd?define([`@univerjs/core`,`@univerjs/engine-formula`,`@univerjs/engine-formula/facade`,`@univerjs/sheets-formula`,`@univerjs/core/facade`,`@univerjs/sheets/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCore,e.UniverEngineFormula,e.UniverEngineFormulaFacade,e.UniverSheetsFormula,e.UniverCoreFacade,e.UniverSheetsFacade))})(this,function(e,t,n,r,i,a){var o=class extends n.FFormula{_initialize(){this._debouncedFormulaCalculation=(0,e.debounce)(()=>{this._commandService.executeCommand(t.SetTriggerFormulaCalculationStartMutation.id,{commands:[],forceCalculation:!0},{onlyLocal:!0})},10)}setInitialFormulaComputing(t){let n=this._injector.get(e.LifecycleService).stage,i=this._injector.get(e.ILogService),a=this._injector.get(e.IConfigService);n>e.LifecycleStages.Starting&&i.warn(`[FFormula]`,`CalculationMode is called after the Starting lifecycle and will take effect the next time the Univer Sheet is constructed. If you want it to take effect when the Univer Sheet is initialized this time, consider calling it before the Ready lifecycle or using configuration.`);let o=a.getConfig(r.PLUGIN_CONFIG_KEY_BASE);if(!o){a.setConfig(r.PLUGIN_CONFIG_KEY_BASE,{initialFormulaComputing:t});return}o.initialFormulaComputing=t}registerFunction(e,n,r){let i=this._injector.get(t.IRegisterFunctionService),a={name:e,func:n,description:typeof r==`string`?r:(r==null?void 0:r.description)??``,locales:typeof r==`object`?r.locales:void 0},o=i.registerFunction(a);return this._debouncedFormulaCalculation(),o}registerAsyncFunction(e,n,r){let i=this._injector.get(t.IRegisterFunctionService),a={name:e,func:n,description:typeof r==`string`?r:(r==null?void 0:r.description)??``,locales:typeof r==`object`?r.locales:void 0},o=i.registerAsyncFunction(a);return this._debouncedFormulaCalculation(),o}};n.FFormula.extend(o);var s=class extends i.FEnum{get CalculationMode(){return r.CalculationMode}};i.FEnum.extend(s);var c=class extends a.FWorkbook{getAllFormulaError(){let e=[],n=this._workbook,r=n.getUnitId(),i=n.getSheets(),a=this._injector.get(t.FormulaDataModel).getArrayFormulaCellData();return i.forEach(n=>{var i;let o=n.getName(),s=n.getSheetId(),c=n.getCellMatrix(),l=(a==null||(i=a[r])==null?void 0:i[s])||{};c.forValue((n,r,i)=>{var a;if(!i)return;let s=(0,t.extractFormulaError)(i,!!(l!=null&&(a=l[n])!=null&&a[r]));s&&e.push({sheetName:o,row:n,column:r,formula:i.f||``,errorType:s})})}),e}};a.FWorkbook.extend(c);var l=class extends a.FRange{getFormulaError(){var e;let n=[],r=this._workbook.getUnitId(),i=this._worksheet.getSheetId(),a=this._worksheet.getName(),o=this._workbook.getSheetBySheetId(i);if(!o)return n;let s=this._injector.get(t.FormulaDataModel).getArrayFormulaCellData(),c=(s==null||(e=s[r])==null?void 0:e[i])||{},l=o.getCellMatrix(),{startRow:u,endRow:d,startColumn:f,endColumn:p}=this._range;for(let e=u;e<=d;e++)for(let r=f;r<=p;r++){var m;let i=l.getValue(e,r);if(!i)continue;let o=(0,t.extractFormulaError)(i,!!(c!=null&&(m=c[e])!=null&&m[r]));o&&n.push({sheetName:a,row:e,column:r,formula:i.f||``,errorType:o})}return n}};a.FRange.extend(l)});
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("@univerjs/engine-formula"),require("@univerjs/docs"),require("rxjs"),require("@univerjs/rpc")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`@univerjs/engine-formula`,`@univerjs/docs`,`rxjs`,`@univerjs/rpc`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsFormula={},e.UniverCore,e.UniverSheets,e.UniverEngineFormula,e.UniverDocs,e.rxjs,e.UniverRpc))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let s={id:`formula.command.insert-function`,type:t.CommandType.COMMAND,handler:async(e,r)=>{let{list:i,listOfRangeHasNumber:a}=r,o=e.get(t.ICommandService),s=new t.ObjectMatrix;i.forEach(e=>{let{range:n,primary:r,formula:i}=e,{row:a,column:o}=r,c=(0,t.generateRandomId)(6);s.setValue(a,o,{f:i,si:c});let{startRow:l,startColumn:u,endRow:d,endColumn:f}=n;for(let e=l;e<=d;e++)for(let t=u;t<=f;t++)(e!==a||t!==o)&&s.setValue(e,t,{si:c})}),a&&a.length>0&&a.forEach(e=>{let{primary:t,formula:n}=e;s.setValue(t.row,t.column,{f:n})});let c={value:s.clone()};return o.executeCommand(n.SetRangeValuesCommand.id,c)}},c={id:`sheets-formula.command.quick-sum`,type:t.CommandType.COMMAND,handler:async e=>{let i=e.get(n.SheetsSelectionsService).getCurrentLastSelection();if(!i)return!1;let a=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService));if(!a)return!1;let o=i.range,{worksheet:s}=a,c=(0,n.findFirstNonEmptyCell)(o,s);if(!c)return!1;c=(0,n.alignToMergedCellsBorders)(c,s);let l=(0,n.expandToContinuousRange)({startRow:c.startRow,startColumn:c.startColumn,endRow:o.endRow,endColumn:o.endColumn},{left:!0,right:!0,up:!0,down:!0},s),u=new t.ObjectMatrix,d=(0,n.alignToMergedCellsBorders)({startRow:l.endRow,endRow:l.endRow,startColumn:l.startColumn,endColumn:l.endColumn},s);if(!t.Rectangle.equals(d,l))for(let e of s.iterateByColumn(d))(!e.value||!s.cellHasValue(e.value))&&u.setValue(e.row,e.col,{f:`=SUM(${(0,r.serializeRange)({startColumn:e.col,endColumn:e.col,startRow:l.startRow,endRow:e.row-1})})`});let f=(0,n.alignToMergedCellsBorders)({startRow:l.startRow,startColumn:l.endColumn,endRow:l.endRow,endColumn:l.endColumn},s);if(!t.Rectangle.equals(f,l))for(let e of s.iterateByRow(f))(!e.value||!s.cellHasValue(e.value))&&u.setValue(e.row,e.col,{f:`=SUM(${(0,r.serializeRange)({startColumn:l.startColumn,endColumn:e.col-1,startRow:e.row,endRow:e.row})})`});let p=e.get(t.ICommandService);return(await(0,t.sequenceExecuteAsync)([{id:n.SetRangeValuesCommand.id,params:{range:l,value:u.getMatrix()}},{id:n.SetSelectionsOperation.id,params:{unitId:a.unitId,subUnitId:a.subUnitId,selections:[{range:l,primary:t.Rectangle.contains(l,i.primary)?i.primary:{...c,actualRow:c.startRow,actualColumn:c.startColumn},style:null}]}}],p)).result}},l=`sheets-formula.base.config`,u=function(e){return e[e.FORCED=0]=`FORCED`,e[e.WHEN_EMPTY=1]=`WHEN_EMPTY`,e[e.NO_CALCULATION=2]=`NO_CALCULATION`,e}({}),d={},f={};function p(e,t){return function(n,r){t(n,r,e)}}function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let h=class extends t.Disposable{constructor(e,t){super(),this._autoFillService=e,this._lexerTreeBuilder=t,this._registerAutoFill()}_registerAutoFill(){let e={type:n.AUTO_FILL_DATA_TYPE.FORMULA,priority:1001,match:e=>(0,t.isFormulaString)(e==null?void 0:e.f)||(0,t.isFormulaId)(e==null?void 0:e.si),isContinue:(e,t)=>e.type===n.AUTO_FILL_DATA_TYPE.FORMULA,applyFunctions:{[n.AUTO_FILL_APPLY_TYPE.COPY]:(e,t,n,r,i)=>{let{data:a,index:o}=e;return this._fillCopyFormula(a,t,n,o,r,i)}}};this._autoFillService.registerRule(e)}_fillCopyFormula(e,n,r,i,a,o){let s=_(a),c=[],l=new Map;for(let a=1;a<=n;a++){let f=(a-1)%e.length,p=i[f],m=t.Tools.deepClone(e[f]);if(m){var u,d;let i=((u=e[f])==null?void 0:u.f)||``,a=((d=e[f])==null?void 0:d.si)||``,h=(0,t.isFormulaString)(i);if((0,t.isFormulaId)(a))m.si=a,m.f=null,m.v=null,m.p=null,m.t=null,c.push(m);else if(h){let e=l.get(f);if(e)m.si=e,m.f=null,m.v=null,m.p=null,m.t=null;else{e=(0,t.generateRandomId)(6),l.set(f,e);let{offsetX:a,offsetY:c}=g(s,n,r,o,p),u=this._lexerTreeBuilder.moveFormulaRefOffset(i,a,c);m.si=e,m.f=u,m.v=null,m.p=null,m.t=null}c.push(m)}}}return c}};h=m([p(0,n.IAutoFillService),p(1,(0,t.Inject)(r.LexerTreeBuilder))],h);function g(e,n,r,i,a){let{source:o,target:s}=i,{rows:c}=s,{rows:l}=o,u=0,d=0;switch(r){case t.Direction.UP:d=c[a]-l[a];break;case t.Direction.RIGHT:u=e;break;case t.Direction.DOWN:d=c[a]-l[a];break;case t.Direction.LEFT:u=-e*n;break}return{offsetX:u,offsetY:d}}function _(e){let t=0;for(let n in e)e[n].forEach(e=>{t+=e.data.length});return t}function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let S=class extends t.Disposable{constructor(e,n,i){super(),this._commandService=e,this._sheetInterceptorService=n,this._formulaDataModel=i,x(this,`_errorValueCell`,{v:r.ErrorType.VALUE,t:t.CellValueType.STRING}),x(this,`_refreshRender`,void 0),this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(async e=>{if(e.id===r.SetImageFormulaDataMutation.id){let n=e.params;if(!n)return;let{imageFormulaData:r}=n;if(!r||r.length===0)return;let i=await Promise.all(r.map(e=>this._getImageNatureSize(e))),a={};i.forEach(e=>{let{unitId:n,sheetId:r,row:i,column:o,...s}=e;a[n]||(a[n]={}),a[n][r]||(a[n][r]=new t.ObjectMatrix),a[n][r].setValue(i,o,s)}),this._formulaDataModel.mergeUnitImageFormulaData(a),this._refreshRender()}}))}_initInterceptorCellContent(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.CELL_CONTENT,{priority:n.InterceptCellContentPriority.CELL_IMAGE,effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(e,n,r)=>{var a;let{unitId:o,subUnitId:s,row:c,col:l}=n,u=this._formulaDataModel.getUnitImageFormulaData(),d=u==null||(a=u[o])==null||(a=a[s])==null?void 0:a.getValue(c,l);if(!d)return r(e);let{source:f,height:p,width:m,isErrorImage:h,imageNaturalWidth:g,imageNaturalHeight:_}=d;if(h)return r(this._errorValueCell);let v=m||g,y=p||_;if(!v||!y)return r(this._errorValueCell);let b=(0,t.createDocumentModelWithStyle)(``,{}),x={unitId:o,subUnitId:s,drawingId:(0,t.generateRandomId)(),drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:t.ImageSourceType.URL,source:f,transform:{left:0,top:0,width:v,height:y},docTransform:(0,i.buildDocTransform)(v,y),behindDoc:t.BooleanNumber.FALSE,title:``,description:``,layoutType:t.PositionedObjectLayoutType.INLINE,wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0},S=t.BuildTextUtils.drawing.add({documentDataModel:b,drawings:[x],selection:{collapsed:!0,startOffset:0,endOffset:0}});return S?(b.apply(S),r({...e,p:b.getSnapshot()})):r(this._errorValueCell)}}))}async _getImageNatureSize(e){let t=await this._getImageSize(e.source);return t.image?{...e,isErrorImage:!1,imageNaturalHeight:t.height,imageNaturalWidth:t.width}:{...e,isErrorImage:!0}}async _getImageSize(e){return new Promise(t=>{let n=new Image;n.src=e,n.onload=()=>{t({width:n.width,height:n.height,image:n})},n.onerror=()=>{t({width:0,height:0,image:null})}})}registerRefreshRenderFunction(e){this._refreshRender=e}};S=m([p(0,t.ICommandService),p(1,(0,t.Inject)(n.SheetInterceptorService)),p(2,(0,t.Inject)(r.FormulaDataModel))],S);let C={done:0,count:0},w={onlyLocal:!0},T=class extends t.Disposable{_emitProgress(e){this._progress$.next({done:this._doneCalculationTaskCount,count:this._totalCalculationTaskCount,label:e})}_startProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=1;let e=this._localeService.t(`sheets-formula.progress.analyzing`);this._emitProgress(e)}_calculateProgress(e){if(this._executionInProgressParams){let{totalFormulasToCalculate:t,completedFormulasCount:n,totalArrayFormulasToCalculate:r,completedArrayFormulasCount:i}=this._executionInProgressParams;if(this._doneCalculationTaskCount=n+i,this._totalCalculationTaskCount=t+r,this._totalCalculationTaskCount===0)return;this._emitProgress(e)}}_completeProgress(){this._doneCalculationTaskCount=this._totalCalculationTaskCount=1;let e=this._localeService.t(`sheets-formula.progress.done`);this._emitProgress(e)}clearProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0,this._emitProgress()}constructor(e,n,r,i,o,s){super(),this._commandService=e,this._univerInstanceService=n,this._logService=r,this._configService=i,this._formulaDataModel=o,this._localeService=s,x(this,`_startExecutionTime`,0),x(this,`_totalCalculationTaskCount`,0),x(this,`_doneCalculationTaskCount`,0),x(this,`_executionInProgressParams`,null),x(this,`_progress$`,new a.BehaviorSubject(C)),x(this,`progress$`,this._progress$.asObservable()),this._commandExecutedListener(),this._initialExecuteFormulaProcessListener(),this._initialExecuteFormula(),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).subscribe(()=>{this._initialExecuteFormula()}))}dispose(){super.dispose(),this._progress$.next(C),this._progress$.complete()}_getCalculationMode(){var e;let t=this._configService.getConfig(l);return(e=t==null?void 0:t.initialFormulaComputing)==null?1:e}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===r.SetFormulaCalculationStartMutation.id||e.id===r.SetFormulaStringBatchCalculationMutation.id){let t=e.params;e.id===r.SetFormulaCalculationStartMutation.id&&(t.isCalculateTreeModel=this._configService.getConfig(r.ENGINE_FORMULA_RETURN_DEPENDENCY_TREE)||!1),t.maxIteration=this._configService.getConfig(r.ENGINE_FORMULA_CYCLE_REFERENCE_COUNT),t.rowData=this._formulaDataModel.getHiddenRowsFiltered()}}))}_initialExecuteFormulaProcessListener(){let e=null,t=0;this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===r.SetFormulaCalculationStopMutation.id&&this.clearProgress(),n.id!==r.SetFormulaCalculationNotificationMutation.id)return;let i=n.params;if(i.stageInfo!=null){let{stage:n}=i.stageInfo;if(n===r.FormulaExecuteStageType.START)t===0&&(this._startExecutionTime=performance.now()),t++,e!==null&&(clearTimeout(e),e=null),e=setTimeout(()=>{e=null,this._startProgress()},1e3);else if(n===r.FormulaExecuteStageType.CURRENTLY_CALCULATING){if(this._executionInProgressParams=i.stageInfo,e===null){let e=this._localeService.t(`sheets-formula.progress.calculating`);this._calculateProgress(e)}}else if(n===r.FormulaExecuteStageType.START_DEPENDENCY_ARRAY_FORMULA){if(this._executionInProgressParams=i.stageInfo,e===null){let e=this._localeService.t(`sheets-formula.progress.array-analysis`);this._calculateProgress(e)}}else if(n===r.FormulaExecuteStageType.CURRENTLY_CALCULATING_ARRAY_FORMULA&&(this._executionInProgressParams=i.stageInfo,e===null)){let e=this._localeService.t(`sheets-formula.progress.array-calculation`);this._calculateProgress(e)}}else{let n=i.functionsExecutedState,a=``;switch(t--,n){case r.FormulaExecutedStateType.NOT_EXECUTED:a=`No tasks are being executed anymore`;break;case r.FormulaExecutedStateType.STOP_EXECUTION:a=`The execution of the formula has been stopped`,t=0;break;case r.FormulaExecutedStateType.SUCCESS:a=`Formula calculation succeeded`,(t===0||t===-1)&&(a+=`. Total time consumed: ${performance.now()-this._startExecutionTime} ms`);break;case r.FormulaExecutedStateType.INITIAL:a=`Waiting for calculation`;break}(t===0||t===-1)&&(e?(clearTimeout(e),e=null,this.clearProgress()):this._completeProgress(),t=0,this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0),this._executionInProgressParams=null,this._logService.debug(`[TriggerCalculationController]`,a)}}))}_initialExecuteFormula(){let e=this._getCalculationMode();if(e!==2){let t=this._getDirtyDataByCalculationMode(e);this._commandService.executeCommand(r.SetTriggerFormulaCalculationStartMutation.id,t,w)}}_getDirtyDataByCalculationMode(e){return{forceCalculation:e===0,dirtyRanges:e===1?this._formulaDataModel.getFormulaDirtyRanges():[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtySuperTableMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}};T=m([p(0,t.ICommandService),p(1,t.IUniverInstanceService),p(2,t.ILogService),p(3,t.IConfigService),p(4,(0,t.Inject)(r.FormulaDataModel)),p(5,(0,t.Inject)(t.LocaleService))],T);function E(e,n,i){let a=e.getUnitId();return e.getSheets().flatMap(e=>{let o=new t.ObjectMatrix;e.getCellMatrix().forValue((e,t,a)=>{if(!(a!=null&&a.f))return;let s=(0,r.refactorFormulaUnitQualifier)(a.f,n,i);s!==a.f&&o.setValue(e,t,{f:s})});let s=o.clone();return Object.keys(s).length>0?[{unitId:a,subUnitId:e.getSheetId(),cellValue:s}]:[]})}let D=class extends t.Disposable{constructor(e,n,r,i){super(),this._commandService=e,this._undoRedoService=n,this._univerInstanceService=r,this._definedNamesService=i,x(this,`_names`,new Map),this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_BASE).forEach(e=>this._watch(e)),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_BASE).subscribe(({unit:e})=>this._watch(e))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_BASE).subscribe(e=>this._names.delete(e.getUnitId())))}_watch(e){let t=e.getUnitId();this.disposeWithMe(e.name$.subscribe(e=>{let n=this._names.get(t);this._names.set(t,e),!(!n||n===e)&&this._refactor(t,n,e)}))}_refactor(e,i,a){let o=[],s=[];for(let e of this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_SHEET)){for(let r of E(e,i,a)){let i=e.getSheetBySheetId(r.subUnitId);if(!i)continue;let a=new t.ObjectMatrix;new t.ObjectMatrix(r.cellValue).forValue((e,t)=>{var n;a.setValue(e,t,(n=i.getCellRaw(e,t))==null?null:n)}),o.push({id:n.SetRangeValuesMutation.id,params:r}),s.unshift({id:n.SetRangeValuesMutation.id,params:{...r,cellValue:a.clone()}})}let c=this._definedNamesService.getDefinedNameMap(e.getUnitId());for(let t of Object.values(c==null?{}:c)){let n=(0,r.refactorFormulaUnitQualifier)(t.formulaOrRefString,i,a);n!==t.formulaOrRefString&&(o.push({id:r.SetDefinedNameMutation.id,params:{unitId:e.getUnitId(),...t,formulaOrRefString:n}}),s.unshift({id:r.SetDefinedNameMutation.id,params:{unitId:e.getUnitId(),...t}}))}}!o.length||!(0,t.sequenceExecute)(o,this._commandService).result||this._undoRedoService.pushUndoRedo({unitID:e,undoMutations:s,redoMutations:o})}};D=m([p(0,t.ICommandService),p(1,t.IUndoRedoService),p(2,t.IUniverInstanceService),p(3,r.IDefinedNamesService)],D);function O(e,t,n){var r;return e==null||e[t]==null||((r=e[t])==null?void 0:r[n])==null}function k(e,t,n){if(n){var r;if(e&&e[t]&&(r=e[t])!=null&&r[n])return delete e[t][n],{[t]:{[n]:null}}}else if(e&&e[t])return delete e[t],{[t]:null}}let A=[11,12,13,14,15,16,17];function j(e,t,n){let{type:r}=n;return A.includes(r)||r===18&&n.range==null?M(e,t):ee(e,t,n)}function M(e,r){let i=[],a=[];return Object.keys(r).forEach(o=>{let s=r[o],c=e[o];if(s==null||c==null)return!0;Object.keys(s).forEach(e=>{let r=new t.ObjectMatrix(s[e]||{}),l=new t.ObjectMatrix(c[e]||{}),u=new t.ObjectMatrix,d=new t.ObjectMatrix;if(r.forValue((e,t,n)=>{if(n==null)return!0;let r=N(n);r!==null&&(u.setValue(e,t,r),d.setValue(e,t,l.getValue(e,t)))}),u.getSizeOf()===0)return;let f={subUnitId:e,unitId:o,cellValue:u.getMatrix()},p={id:n.SetRangeValuesMutation.id,params:f};a.push(p);let m={subUnitId:e,unitId:o,cellValue:d.getMatrix()},h={id:n.SetRangeValuesMutation.id,params:m};i.push(h)})}),{undos:i,redos:a}}function ee(e,t,r){let{redoFormulaData:i,undoFormulaData:a}=te(e,t,r),o=[],s=[];return Object.keys(i).forEach(e=>{Object.keys(i[e]).forEach(t=>{if(Object.keys(i[e][t]).length!==0){let r={subUnitId:t,unitId:e,cellValue:i[e][t]},a={id:n.SetRangeValuesMutation.id,params:r};o.push(a)}})}),Object.keys(a).forEach(e=>{Object.keys(a[e]).forEach(t=>{if(Object.keys(a[e][t]).length!==0){let r={subUnitId:t,unitId:e,cellValue:a[e][t]},i={id:n.SetRangeValuesMutation.id,params:r};s.push(i)}})}),{undos:s,redos:o}}function te(e,n,r){var i,a;let o={},s={},{unitId:c,sheetId:l}=r,u=(i=r.targetUnitId)==null?c:i,d=(a=r.targetSheetId)==null?l:a,f=c!==u||l!==d;return new Set([...Object.keys(e),...Object.keys(n)]).forEach(i=>{O(e,i,l)||new Set([...Object.keys(e[i]||{}),...Object.keys(n[i]||{})]).forEach(a=>{var u,d;let p=(u=e[i])==null?void 0:u[a],m=(d=n[i])==null?void 0:d[a],h=new t.ObjectMatrix(p||{}),g=new t.ObjectMatrix(m||{}),_=[];_=f||i!==c||a!==l?re(g):ne(h,g,r);let v=_e(_,h,g),y=ve(_,h);o[i]||(o[i]={}),s[i]||(s[i]={}),o[i][a]={...o[i][a],...v},s[i][a]={...s[i][a],...y}})}),{redoFormulaData:o,undoFormulaData:s}}function ne(e,n,r){let{type:i,from:a,to:o,range:s}=r,c=[];return e.forValue((e,l,u)=>{if(u==null||!be(u))return!0;let d=(0,t.cellToRange)(e,l),f=null,p=!1;if([0,1,2].includes(i))f=ie(i,a,o,d);else if(s!=null){let e=ae(d,r);f=e.newCell,p=e.isReverse}if(t.Tools.diffValue(d,f)&&!n.getValue(e,l))return!0;p?c.unshift({oldCell:d,newCell:f}):c.push({oldCell:d,newCell:f})}),c}function re(e){let n=[];return e.forValue((e,r,i)=>{if(i==null||!be(i))return!0;let a=(0,t.cellToRange)(e,r);n.push({oldCell:a,newCell:a})}),n}function ie(e,t,n,r){if(t==null||n==null)return null;switch(e){case 0:return oe(t,n,r);case 1:return se(t,n,r);case 2:return ce(t,n,r);default:return null}}function ae(e,t){let{type:n,rangeFilteredRows:r}=t,i=t.range,a=null,o=!1;switch(n){case 3:a=le(i,e),o=!0;break;case 4:a=ue(i,e),o=!0;break;case 5:a=de(i,e,r);break;case 6:case 18:a=fe(i,e);break;case 7:a=pe(i,e);break;case 8:a=me(i,e);break;case 9:a=he(i,e),o=!0;break;case 10:a=ge(i,e),o=!0;break;default:break}return{newCell:a,isReverse:o}}function oe(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveRange)({id:n.EffectRefRangId.MoveRangeCommandId,params:{toRange:t,fromRange:e}},r),r)}function se(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveRows)({id:n.EffectRefRangId.MoveRowsCommandId,params:{toRange:t,fromRange:e}},r),r)}function ce(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveCols)({id:n.EffectRefRangId.MoveColsCommandId,params:{toRange:t,fromRange:e}},r),r)}function le(e,r){return(0,n.runRefRangeMutations)((0,n.handleInsertRow)({id:n.EffectRefRangId.InsertRowCommandId,params:{range:e,unitId:``,subUnitId:``,direction:t.Direction.DOWN}},r),r)}function ue(e,r){return(0,n.runRefRangeMutations)((0,n.handleInsertCol)({id:n.EffectRefRangId.InsertColCommandId,params:{range:e,unitId:``,subUnitId:``,direction:t.Direction.RIGHT}},r),r)}function de(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleIRemoveRow)({id:n.EffectRefRangId.RemoveRowCommandId,params:{range:e}},t,r),t)}function fe(e,t){return(0,n.runRefRangeMutations)((0,n.handleIRemoveCol)({id:n.EffectRefRangId.RemoveColCommandId,params:{range:e}},t),t)}function pe(e,t){return(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveLeft)({id:n.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:e}},t),t)}function me(e,t){return(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveUp)({id:n.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:e}},t),t)}function he(e,t){return(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveDown)({id:n.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:e}},t),t)}function ge(e,t){return(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveRight)({id:n.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:e}},t),t)}function _e(e,n,r){let i=new t.ObjectMatrix({});for(let t=0;t<e.length;t++){var a,o;let{oldCell:c,newCell:l}=e[t];if((a=i.getValue(c.startRow,c.startColumn))!=null&&a.f||(o=i.getValue(c.startRow,c.startColumn))!=null&&o.si||i.setValue(c.startRow,c.startColumn,{f:null,si:null}),l){var s;let e=N((s=r.getValue(c.startRow,c.startColumn))==null?n.getValue(c.startRow,c.startColumn):s);i.setValue(l.startRow,l.startColumn,e)}}return i.getMatrix()}function ve(e,n){let r=new t.ObjectMatrix({});for(let t=e.length-1;t>=0;t--){let{oldCell:i,newCell:a}=e[t],o=N(n.getValue(i.startRow,i.startColumn));if(r.setValue(i.startRow,i.startColumn,o),a){let e=N(n.getValue(a.startRow,a.startColumn));r.setValue(a.startRow,a.startColumn,e==null?{f:null,si:null}:e)}}return r.getMatrix()}function N(e){if(e===void 0)return;if(e===null)return{f:null,si:null};let{f:n,si:r,x:i=0,y:a=0}=e,o=(0,t.isFormulaString)(n),s=(0,t.isFormulaId)(r);if(!o&&!s)return{f:null,si:null};let c={};return s&&(c.si=r),o&&i===0&&a===0&&(c.f=n),c.f===void 0&&(c.f=null),c.si===void 0&&(c.si=null),c}function ye(e,n){let r=new t.ObjectMatrix({});return new t.ObjectMatrix(e).forValue((e,t,i)=>{var a;let o=N(i);o!==void 0&&(n&&(a=n[e])!=null&&a[t]&&(o!=null&&o.f||o!=null&&o.si)&&(o.v=null,o.t=null),r.setValue(e,t,o))}),r.getMatrix()}function be(e){let n=(e==null?void 0:e.f)||``,r=(e==null?void 0:e.si)||``,i=(0,t.isFormulaString)(n),a=(0,t.isFormulaId)(r);return!!(i||a)}function xe(e,t,n,r,i,a){if((i==null||i.length===0)&&(a==null||a.length===0)){if(e===n&&t===r)return!0}else if((e===i||i==null||i.length===0)&&t===a)return!0;return!1}function P(e,n,i=0,a=0){let o=[];for(let s=0,c=e.length;s<c;s++){let c=e[s];if(typeof c==`string`||c.nodeType!==r.sequenceNodeType.REFERENCE||n.includes(s)){o.push(c);continue}let{token:l}=c,{range:u,sheetName:d,unitId:f}=(0,r.deserializeRangeWithSheetWithCache)(l),p=t.Rectangle.moveOffset(u,i,a);o.push({...c,token:(0,r.serializeRangeToRefString)({range:p,unitId:f,sheetName:d})})}return o}function Se(e,i,a,o,s={}){let{type:c,unitId:l,sheetId:u,targetUnitId:d,targetSheetId:f,targetSheetName:p,range:m,from:h,to:g,rangeFilteredRows:_}=i,{range:v,sheetId:y,unitId:b,sheetName:x,refOffsetX:S,refOffsetY:C}=e,{preserveSheetQualifier:w=!1,inCrossSheetCutRange:T=!1}=s;if(!xe(l,u,a,o,b,y))return;let E=t.Rectangle.moveOffset(v,S,C),D=null;if(c===0){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null||e!==4)return;let a=(0,n.runRefRangeMutations)((0,n.handleMoveRange)({id:n.EffectRefRangId.MoveRangeCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}else if(c===1){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null&&(h.endRow<E.startRow&&g.endRow<=E.startRow||h.startRow>E.endRow&&g.startRow>E.endRow))return;i==null&&(i={startRow:E.startRow,endRow:E.endRow,startColumn:E.startColumn,endColumn:E.endColumn,rangeType:t.RANGE_TYPE.NORMAL});let a=(0,n.runRefRangeMutations)((0,n.handleMoveRows)({id:n.EffectRefRangId.MoveRowsCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}else if(c===2){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null&&(h.endColumn<E.startColumn&&g.endColumn<=E.startColumn||h.startColumn>E.endColumn&&g.startColumn>E.endColumn))return;i==null&&(i={startRow:E.startRow,endRow:E.endRow,startColumn:E.startColumn,endColumn:E.endColumn,rangeType:t.RANGE_TYPE.NORMAL});let a=(0,n.runRefRangeMutations)((0,n.handleMoveCols)({id:n.EffectRefRangId.MoveColsCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}if(m!=null){if(c===3){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRow)({id:n.EffectRefRangId.InsertRowCommandId,params:{range:m,unitId:``,subUnitId:``,direction:t.Direction.DOWN}},E),E);if(e==null)return;D={...E,...e}}else if(c===4){let e=(0,n.runRefRangeMutations)((0,n.handleInsertCol)({id:n.EffectRefRangId.InsertColCommandId,params:{range:m,unitId:``,subUnitId:``,direction:t.Direction.RIGHT}},E),E);if(e==null)return;D={...E,...e}}else if(c===5){let e=(0,n.runRefRangeMutations)((0,n.handleIRemoveRow)({id:n.EffectRefRangId.RemoveRowCommandId,params:{range:m}},E,_),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===6){let e=(0,n.runRefRangeMutations)((0,n.handleIRemoveCol)({id:n.EffectRefRangId.RemoveColCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===7){let e=(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveLeft)({id:n.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===8){let e=(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveUp)({id:n.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===9){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveDown)({id:n.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:m}},E),E);if(e==null)return;D={...E,...e}}else if(c===10){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveRight)({id:n.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:m}},E),E);if(e==null)return;D={...E,...e}}}if(D==null)return;let O=c===0&&!!f&&f!==u&&!T,k=O?f:y,A=O&&p||x,j=O&&d||b,M=j==null||j.length===0||j===a;return(0,r.serializeRangeToRefString)({range:D,sheetName:w||!(M&&k===o)?A:``,unitId:M?``:j})}function F(e,n,r,i,a,o){let{startRow:s,endRow:c,startColumn:l,endColumn:u,rangeType:d}=z(n),{startRow:f,startColumn:p,endRow:m,endColumn:h,rangeType:g=t.RANGE_TYPE.NORMAL}=z(r),{startRow:_,startColumn:v,endRow:y,endColumn:b}=z(i),{startRow:x,endRow:S,startColumn:C,endColumn:w}=z(o),{startRow:T,endRow:E,startColumn:D,endColumn:O,rangeType:k=t.RANGE_TYPE.NORMAL}=z(a),A={...a};function j(){return d===t.RANGE_TYPE.COLUMN&&k===t.RANGE_TYPE.COLUMN||l>=D&&u<=O}function M(){return d===t.RANGE_TYPE.ROW&&k===t.RANGE_TYPE.ROW||s>=T&&c<=E}if(e===0)if(j())if(s<T)A.startRow=s;else if(s>=E)A.endRow-=m+1-T;else return;else return;else if(e===1)if(j())if(c>E)A.endRow=c;else if(c<=T)A.startRow+=E-f+1;else return;else return;else if(e===2)if(M())if(l<D)A.startColumn=l;else if(l>=O)A.endColumn-=h+1-D;else return;else return;else if(e===3)if(M())if(u>O)A.endColumn=u;else if(u<=D)A.startColumn+=O-p+1;else return;else return;else e===4?(A.startRow=s,A.startColumn=l,A.endRow=c,A.endColumn=u):p<=D&&h>=O||g===t.RANGE_TYPE.ROW&&k===t.RANGE_TYPE.ROW?r.endRow<T?(_>=T&&(A.startRow-=m-f+1),_>=E&&(A.endRow-=m-f+1)):r.startRow>E?(y<=E&&(A.endRow+=m-f+1),y<=T&&(A.startRow+=m-f+1)):r.startRow>=T&&r.endRow<=E&&(_<=T?A.startRow+=m-f+1:_>=E&&(A.endRow-=m-f+1)):f<=T&&m>=E||g===t.RANGE_TYPE.COLUMN&&k===t.RANGE_TYPE.COLUMN?r.endColumn<D?(v>=D&&(A.startColumn-=h-p+1),v>=O&&(A.endColumn-=h-p+1)):r.startColumn>O?(b<=O&&(A.endColumn+=h-p+1),b<=D&&(A.startColumn+=h-p+1)):r.startColumn>=D&&r.endColumn<=O&&(v<=D?A.startColumn+=h-p+1:v>=O&&(A.endColumn-=h-p+1)):((v<=w+1&&b>=O||v<=D&&b>=C-1)&&_<=T&&y>=E||_<=S+1&&y>=E||_<=T&&x-1,A.startRow=s,A.startColumn=l,A.endRow=c,A.endColumn=u);return A}function I(e,n){let r=L(e.startRow),i=R(e.endRow),a=L(e.startColumn),o=R(e.endColumn),s=L(n.startRow),c=R(n.endRow),l=L(n.startColumn),u=R(n.endColumn);function d(){return e.rangeType===t.RANGE_TYPE.COLUMN&&n.rangeType===t.RANGE_TYPE.COLUMN||r>=s&&i<=c}function f(){return e.rangeType===t.RANGE_TYPE.ROW&&n.rangeType===t.RANGE_TYPE.ROW||a>=l&&o<=u}function p(){return e.rangeType===t.RANGE_TYPE.ALL&&n.rangeType===t.RANGE_TYPE.ALL}return d()&&f()||p()?4:f()&&r>=s&&r<=c&&i>c?0:f()&&i>=s&&i<=c&&r<s?1:d()&&a>=l&&a<=u&&o>u?2:d()&&o>=l&&o<=u&&a<l?3:null}function L(e){return isNaN(e)?-1/0:e}function R(e){return isNaN(e)?1/0:e}function z(e){let{startRow:t,endRow:n,startColumn:r,endColumn:i}=e;return{...e,startRow:L(t),endRow:R(n),startColumn:L(r),endColumn:R(i)}}function Ce(e,t){let{id:r}=t,i=null;switch(r){case n.MoveRangeCommand.id:i=we(t,e);break;case n.MoveRowsCommand.id:i=Te(t,e);break;case n.MoveColsCommand.id:i=Ee(t,e);break;case n.InsertRowCommand.id:i=De(t);break;case n.InsertColCommand.id:i=Oe(t);break;case n.InsertRangeMoveRightCommand.id:i=ke(t,e);break;case n.InsertRangeMoveDownCommand.id:i=Ae(t,e);break;case n.RemoveRowCommand.id:i=je(t,e);break;case n.RemoveColCommand.id:i=Me(t);break;case n.DeleteRangeMoveUpCommand.id:i=Ne(t,e);break;case n.DeleteRangeMoveLeftCommand.id:i=Pe(t,e);break;case n.SetWorksheetNameCommand.id:i=Fe(t,e);break;case n.SetWorkbookNameCommand.id:i=Ie(t);break;case n.RemoveSheetCommand.id:i=Le(t,e);break;case n.SetDefinedNameCommand.id:i=Re(t,e);break;case n.RemoveDefinedNameCommand.id:i=ze(t,e);break;case`sheet.command.set-table-config`:i=Be(t,e);break;case`sheet.command.delete-table`:i=Ve(t,e);break;case`sheet.command.table-remove-column-at`:case`sheet.command.table-remove-col`:i=He(t,e);break}return i}function B(e){var t;return{unitId:e.getUnitId(),sheetId:((t=e.getActiveSheet())==null?void 0:t.getSheetId())||``}}function we(e,t){var n,r;let{params:i}=e;if(!i)return null;let{fromRange:a,toRange:o,fromUnitId:s,fromSubUnitId:c,toUnitId:l,toSubUnitId:u}=i;if(!a||!o)return null;let{unitId:d,sheetId:f}=B(t),p=s||l||d,m=c||f,h=(n=t.getSheetBySheetId(m))==null?void 0:n.getName(),g=u||c||f;return{type:0,from:a,to:o,unitId:p,sheetId:m,sheetName:h,targetUnitId:l||s||d,targetSheetId:g,targetSheetName:(r=t.getSheetBySheetId(g))==null?void 0:r.getName()}}function Te(e,n){let{params:r}=e;if(!r)return null;let{fromRange:{startRow:i,endRow:a},toRange:{startRow:o,endRow:s}}=r,c=n.getUnitId(),l=n.getActiveSheet();if(!l)return null;let u=l.getSheetId();return{type:1,from:{startRow:i,startColumn:0,endRow:a,endColumn:l.getColumnCount()-1,rangeType:t.RANGE_TYPE.ROW},to:{startRow:o,startColumn:0,endRow:s,endColumn:l.getColumnCount()-1,rangeType:t.RANGE_TYPE.ROW},unitId:c,sheetId:u}}function Ee(e,n){let{params:r}=e;if(!r)return null;let{fromRange:{startColumn:i,endColumn:a},toRange:{startColumn:o,endColumn:s}}=r,c=n.getUnitId(),l=n.getActiveSheet();if(!l)return null;let u=l.getSheetId();return{type:2,from:{startRow:0,startColumn:i,endRow:l.getRowCount()-1,endColumn:a,rangeType:t.RANGE_TYPE.COLUMN},to:{startRow:0,startColumn:o,endRow:l.getRowCount()-1,endColumn:s,rangeType:t.RANGE_TYPE.COLUMN},unitId:c,sheetId:u}}function De(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:3,range:n,unitId:r,sheetId:i}}function Oe(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:4,range:n,unitId:r,sheetId:i}}function ke(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:10,range:r,unitId:i,sheetId:a}}function Ae(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:9,range:r,unitId:i,sheetId:a}}function je(e,t){var n,r;let{params:i}=e;if(!i)return null;let{range:a,unitId:o,subUnitId:s}=i;return{type:5,range:a,unitId:o,sheetId:s,rangeFilteredRows:(n=(r=t.getSheetBySheetId(s))==null?void 0:r.getRangeFilterRows(a))==null?[]:n}}function Me(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:6,range:n,unitId:r,sheetId:i}}function Ne(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:8,range:r,unitId:i,sheetId:a}}function Pe(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:7,range:r,unitId:i,sheetId:a}}function Fe(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,subUnitId:i,name:a}=n,{unitId:o,sheetId:s}=B(t);return{type:11,unitId:r||o,sheetId:i||s,sheetName:a}}function Ie(e){let{params:t}=e;return t?{type:12,unitId:t.unitId,sheetId:``,unitName:t.name}:null}function Le(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,subUnitId:i}=n,{unitId:a,sheetId:o}=B(t);return{type:13,unitId:r||a,sheetId:i||o}}function Re(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,name:i,id:a}=n,{sheetId:o}=B(t);return{type:14,unitId:r,sheetId:o,definedName:i,definedNameId:a}}function ze(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,name:i,id:a}=n,{sheetId:o}=B(t);return{type:15,unitId:r,sheetId:o,definedName:i,definedNameId:a}}function Be(e,t){let{params:n}=e;if(!n||!n.name||!n.oldTableName||n.oldTableName===n.name)return null;let{unitId:r,name:i,oldTableName:a}=n,{sheetId:o}=B(t);return{type:16,unitId:r,sheetId:o,tableName:i,oldTableName:a}}function Ve(e,t){let{params:n}=e;if(!n||!n.tableName)return null;let{unitId:r,tableName:i}=n,{sheetId:a}=B(t);return{type:17,unitId:r,sheetId:a,oldTableName:i}}function He(e,t){var n;let{params:r}=e;if(!r||!r.tableName||!((n=r.removedColumnNames)!=null&&n.length))return null;let{unitId:i,subUnitId:a,range:o,tableName:s,removedColumnNames:c}=r,{sheetId:l}=B(t);return{type:18,unitId:i,sheetId:a||l,range:o,oldTableName:s,tableColumnNames:c}}let V=class extends t.Disposable{constructor(e,t,n,r){super(),this._definedNamesService=e,this._univerInstanceService=t,this._sheetInterceptorService=n,this._lexerTreeBuilder=r,this._initialize()}_initialize(){this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===n.SetDefinedNameCommand.id||e.id===n.RemoveDefinedNameCommand.id)return{redos:[],undos:[]};let r=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(r==null)return{redos:[],undos:[]};let i=Ce(r,e);if(!i)return{redos:[],undos:[]};if(i.type===12){var a;i.oldUnitName=(a=this._univerInstanceService.getUnit(i.unitId,t.UniverInstanceType.UNIVER_SHEET))==null?void 0:a.name}return this._getUpdateDefinedNameMutations(r,i)}}))}_getUpdateDefinedNameMutations(e,t){let{type:n,unitId:i,sheetId:a}=t,o=this._definedNamesService.getDefinedNameMap(i);if(!o)return{redos:[],undos:[]};let s=[],c=[];return Object.values(o).forEach(o=>{let{formulaOrRefString:l}=o;if(n===12){let{oldUnitName:e,unitName:n}=t;if(!e||!n)return!0;let a=(0,r.refactorFormulaUnitQualifier)(l,e,n);return a===l?!0:(s.push({id:r.SetDefinedNameMutation.id,params:{unitId:i,...o,formulaOrRefString:a}}),c.push({id:r.SetDefinedNameMutation.id,params:{unitId:i,...o}}),!0)}let u=this._lexerTreeBuilder.sequenceNodesBuilder(l);if(u==null)return!0;let d=!1,f=[];for(let s=0,c=u.length;s<c;s++){var p;let c=u[s];if(typeof c==`string`||c.nodeType!==r.sequenceNodeType.REFERENCE)continue;let{token:l}=c,{range:m,sheetName:h,unitId:g}=(0,r.deserializeRangeWithSheetWithCache)(l),_=((p=e.getSheetBySheetName(h))==null?void 0:p.getSheetId())||``,v={range:m,sheetId:_,unitId:g,sheetName:h,refOffsetX:0,refOffsetY:0},y=null;if(n===13)y=this._removeSheet(o,i,a);else if(n===11){let{sheetId:e,sheetName:n}=t;if(n==null||_==null||_.length===0||e!==_)continue;y=(0,r.serializeRangeToRefString)({range:m,sheetName:n,unitId:g})}else y=Se(v,t,i,a,{preserveSheetQualifier:!0});y!=null&&(u[s]={...c,token:y},d=!0,f.push(s))}if(!d)return!0;let m=(0,r.generateStringWithSequence)(P(u,f)),h={id:r.SetDefinedNameMutation.id,params:{unitId:i,...o,formulaOrRefString:m}};s.push(h);let g={id:r.SetDefinedNameMutation.id,params:{unitId:i,...o}};c.push(g)}),{redos:s,undos:c}}_removeSheet(e,t,n){var i;let{formulaOrRefString:a}=e;return((i=this._definedNamesService.getWorksheetByRef(t,a))==null?void 0:i.getSheetId())===n?r.ErrorType.REF:null}};V=m([p(0,r.IDefinedNamesService),p(1,t.IUniverInstanceService),p(2,(0,t.Inject)(n.SheetInterceptorService)),p(3,(0,t.Inject)(r.LexerTreeBuilder))],V);let H=class extends t.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._univerInstanceService=e,this._commandService=t,this._lexerTreeBuilder=n,this._formulaDataModel=r,this._sheetInterceptorService=i,this._definedNamesService=a,this._configService=o,this._injector=s,this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>this._getUpdateFormula(e)})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.params)if(e.id===n.RemoveSheetMutation.id){let{subUnitId:t,unitId:n}=e.params;this._handleWorkbookDisposed(n,t)}else e.id===n.InsertSheetMutation.id&&this._handleInsertSheetMutation(e.params)})),this.disposeWithMe(this._commandService.beforeCommandExecuted((e,t)=>{if(e.id===n.SetRangeValuesMutation.id){let n=e.params;if(Ue(n,t))return;this._handleSetRangeValuesMutation(n)}})),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>this._handleWorkbookAdded(e.unit))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,a.map)(e=>e.getUnitId())).subscribe(e=>this._handleWorkbookDisposed(e)))}_handleSetRangeValuesMutation(e){let{subUnitId:t,unitId:i,cellValue:a}=e;if(a==null)return;let o=this._formulaDataModel.updateFormulaData(i,t,a),s=this._formulaDataModel.updateArrayFormulaCellData(i,t,a),c=this._formulaDataModel.updateArrayFormulaRange(i,t,a);if(Object.keys(o).length===0){(s||c)&&this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:this._formulaDataModel.getArrayFormulaRange(),arrayFormulaCellData:this._formulaDataModel.getArrayFormulaCellData()},{onlyLocal:!0,remove:!0});return}let l={[i]:{[t]:o}};this._commandService.executeCommand(n.SetRangeValuesMutation.id,{unitId:i,subUnitId:t,cellValue:ye(o,a)},{onlyLocal:!0,fromFormula:!0}),this._formulaDataModel.updateImageFormulaData(i,t,a),this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:l},{onlyLocal:!0}),this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:this._formulaDataModel.getArrayFormulaRange(),arrayFormulaCellData:this._formulaDataModel.getArrayFormulaCellData()},{onlyLocal:!0,remove:!0})}_handleWorkbookDisposed(e,t){let n=k(this._formulaDataModel.getFormulaData(),e,t),i=this._formulaDataModel.getArrayFormulaRange(),a=k(i,e,t),o=this._formulaDataModel.getArrayFormulaCellData(),s=k(o,e,t);n&&this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:n},{onlyLocal:!0}),a&&s&&this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:i,arrayFormulaCellData:o},{onlyLocal:!0})}_handleInsertSheetMutation(e){let{sheet:n,unitId:i}=e,a=this._formulaDataModel.getFormulaData(),{id:o,cellData:s}=n,c=(0,r.initSheetFormulaData)(a,i,o,new t.ObjectMatrix(s));this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:c},{onlyLocal:!0})}_handleWorkbookAdded(e){var t;let n={},i=e.getUnitId(),a={[i]:{}};e.getSheets().forEach(e=>{var t;let o=e.getCellMatrix(),s=e.getSheetId(),c=(0,r.initSheetFormulaData)(n,i,s,o);a[i][s]=(t=c[i])==null?void 0:t[s]}),this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:a},{onlyLocal:!0});let o=this._configService.getConfig(l),s=(t=o==null?void 0:o.initialFormulaComputing)==null?1:t,c=this._getDirtyDataByCalculationMode(s);this._commandService.executeCommand(r.SetTriggerFormulaCalculationStartMutation.id,c,{onlyLocal:!0})}_getDirtyDataByCalculationMode(e){return{forceCalculation:e===0,dirtyRanges:e===1?this._formulaDataModel.getFormulaDirtyRanges():[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}_getUpdateFormula(e){let n=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(!n)return{undos:[],redos:[]};let r=Ce(n,e);if(r){let{unitNameMap:e,unitSheetNameMap:t}=this._formulaDataModel.getCalculateData();if(r.type===12){var i;r.oldUnitName=e==null||(i=e[r.unitId])==null?void 0:i.name}let n=this._formulaDataModel.getFormulaData(),{newFormulaData:a}=this._getFormulaReferenceMoveInfo(n,t,r),{undos:o,redos:s}=j(n,a,r);return{undos:o,redos:s}}return{undos:[],redos:[]}}_getFormulaReferenceMoveInfo(e,n,i){if(!t.Tools.isDefine(e))return{newFormulaData:{}};let a=Object.keys(e);if(a.length===0)return{newFormulaData:{}};let o={},{unitId:s,sheetId:c,sheetName:l,targetUnitId:u,targetSheetId:d,type:f,from:p,to:m}=i,h=[];for(let m of a){let a=e[m];if(a==null)continue;let g=Object.keys(a);t.Tools.isDefine(o[m])||(o[m]={});for(let e of g){let g=new t.ObjectMatrix(a[e]||{}),_=new t.ObjectMatrix,v=[];g.forValue((a,o,g)=>{if(!g)return!0;let{f:y,x:b,y:x,si:S}=g;if(f===12){let{oldUnitName:e,unitName:t}=i;if(!e||!t)return!0;let n=(0,r.refactorFormulaUnitQualifier)(y,e,t);return n!==y&&_.setValue(a,o,{f:n}),!0}let C=this._lexerTreeBuilder.sequenceNodesBuilder(y);if(C==null)return!0;let w=!1,T=[],E=f===0&&(u!==s||d!==c)&&m===s&&e===c&&p&&p.startRow<=a&&a<=p.endRow&&p.startColumn<=o&&o<=p.endColumn,D=[...C];for(let a=0,o=C.length;a<o;a++){var O;let o=C[a];if(typeof o==`string`)continue;let{token:d,nodeType:p}=o;if((f===14||f===15)&&(p===r.sequenceNodeType.DEFINED_NAME||p===r.sequenceNodeType.FUNCTION)){let{definedNameId:e,definedName:t}=i;if(e===void 0||t===void 0)continue;let n=this._definedNamesService.getValueById(m,e);if(n==null||n.name!==d)continue;C[a]={...o,token:f===14?t:r.ErrorType.REF},w=!0,T.push(a);continue}else if((f===16||f===17||f===18)&&(p===r.sequenceNodeType.TABLE||p===r.sequenceNodeType.FUNCTION)){let{oldTableName:e,tableName:t,tableColumnNames:n}=i;if(e===void 0||f===16&&t===void 0)continue;let{tableName:s,columnStruct:c=``}=(0,r.splitTableStructuredRef)(d);if(s!==e||f===18&&!Ge(c,n))continue;C[a]={...o,token:f===16?`${t}${c}`:r.ErrorType.REF};let l=C[a+1];(f===17||f===18)&&typeof l==`string`&&l.startsWith(`]`)&&(C[a+1]=l.slice(1)),w=!0,T.push(a);continue}else if(p!==r.sequenceNodeType.REFERENCE)continue;let{range:h,sheetName:g,unitId:_}=(0,r.deserializeRangeWithSheetWithCache)(d),y=_==null||_.length===0?m:_,k=(n==null||(O=n[y])==null?void 0:O[g])||``;if(!xe(i.unitId,i.sheetId,m,e,_,k))continue;let A={range:h,sheetId:k,unitId:_,sheetName:g,refOffsetX:b||0,refOffsetY:x||0},j=null;if(f===11){let{unitId:e,sheetId:t,sheetName:n}=i;if(n==null||k==null||k.length===0||t!==k)continue;j=(0,r.serializeRangeToRefString)({range:h,sheetName:n,unitId:_})}else if(f===13){let{unitId:e,sheetId:t,sheetName:n}=i;if(k==null||k.length===0||t!==k)continue;j=r.ErrorType.REF}else f!==14&&(j=Se(A,i,m,e,{inCrossSheetCutRange:E}));if(j!=null&&(C[a]={...o,token:j},w=!0,T.push(a),S&&(b==null?0:b)===0&&(x==null?0:x)===0&&v.push(S)),E){if(j!=null)D[a]={...o,token:j};else if((!_||_===s)&&(!k||k===c)){let e=t.Rectangle.moveOffset(h,b||0,x||0);D[a]={...o,token:(0,r.serializeRangeToRefString)({range:e,sheetName:l||g,unitId:u===s?``:s})},w=!0}}}if(!w)if(S&&[1,2,0].includes(f)){if(p&&p.startRow<=a&&a<=p.endRow&&p.startColumn<=o&&o<=p.endColumn)(b==null?0:b)===0&&(x==null?0:x)===0&&v.push(S);else if(!v.includes(S))return!0}else return!0;if(E){let e=P(D,T,b,x);return h.push({fromRow:a,fromColumn:o,formulaString:`=${(0,r.generateStringWithSequence)(e)}`}),!0}let k=P(C,T,b,x);_.setValue(a,o,{f:`=${(0,r.generateStringWithSequence)(k)}`})}),o[m]&&(o[m][e]=_.clone())}}if(h.length>0&&u&&d){o[u]||(o[u]={}),o[u][d]||(o[u][d]={});for(let e of h){var g,_,v,y;let{fromRow:t,fromColumn:n,formulaString:r}=e,i=t+(((g=m==null?void 0:m.startRow)==null?0:g)-((_=p==null?void 0:p.startRow)==null?0:_)),a=n+(((v=m==null?void 0:m.startColumn)==null?0:v)-((y=p==null?void 0:p.startColumn)==null?0:y));o[u][d][i]||(o[u][d][i]={}),o[u][d][i][a]={f:r}}}return{newFormulaData:o}}};H=m([p(0,t.IUniverInstanceService),p(1,t.ICommandService),p(2,(0,t.Inject)(r.LexerTreeBuilder)),p(3,(0,t.Inject)(r.FormulaDataModel)),p(4,(0,t.Inject)(n.SheetInterceptorService)),p(5,r.IDefinedNamesService),p(6,t.IConfigService),p(7,(0,t.Inject)(t.Injector))],H);function Ue(e,t){if(t&&(t.onlyLocal===!0||t.syncOnly===!0||t.fromChangeset===!0))return!0;let{cellValue:r,trigger:i}=e;return i&&[n.SetStyleCommand.id,n.SetBorderCommand.id,n.ClearSelectionFormatCommand.id,n.SetRangeCustomMetadataCommand.id].includes(i)||!r?!0:We(r)}function We(e){let n=new t.ObjectMatrix(e),r=!1,i=!0;return n.forValue((e,t,n)=>{if(r=!0,!n)return i=!1,!1;let a=Object.keys(n);if(a.length!==1||a[0]!==`s`)return i=!1,!1}),r&&i}function Ge(e,t){if(!(t!=null&&t.length)||e.length===0)return!1;let n=new Set(t),r=(e.endsWith(`]`)?e:`${e}]`).matchAll(/\[([^\]]+)\]/g);for(let e of r){let t=e[1].replace(/^\[/,``).trim();if(!t.startsWith(`#`)&&n.has(t))return!0}return!1}var Ke=`@univerjs/sheets-formula`,qe=`1.0.0-alpha.8`;let U=class extends t.Disposable{constructor(e,t,n){super(),this._activeDirtyManagerService=e,this._univerInstanceService=t,this._formulaDataModel=n,this._initialize()}_initialize(){this._initialConversion()}_initialConversion(){this._activeDirtyManagerService.register(n.SetRangeValuesMutation.id,{commandId:n.SetRangeValuesMutation.id,shouldTrigger:(e,t)=>{let r=e.params;return!(t!=null&&t.onlyLocal)&&r.trigger!==n.SetStyleCommand.id&&r.trigger!==n.SetBorderCommand.id&&r.trigger!==n.ClearSelectionFormatCommand.id},getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getSetRangeValuesMutationDirtyRange(t)}}}),this._initialMove(),this._initialRowAndColumn(),this._initialHideRow(),this._initialSheet(),this._initialDefinedName()}_initialMove(){this._activeDirtyManagerService.register(n.MoveRangeMutation.id,{commandId:n.MoveRangeMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.to.subUnitId]:`1`,[t.from.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.MoveRowsMutation.id,{commandId:n.MoveRowsMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.MoveColsMutation.id,{commandId:n.MoveColsMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.ReorderRangeMutation.id,{commandId:n.ReorderRangeMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getReorderRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialRowAndColumn(){this._activeDirtyManagerService.register(n.RemoveRowMutation.id,{commandId:n.RemoveRowMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!0),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.RemoveColMutation.id,{commandId:n.RemoveColMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!1),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertColMutation.id,{commandId:n.InsertColMutation.id,getDirtyData:e=>{let t=e.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertRowMutation.id,{commandId:n.InsertRowMutation.id,getDirtyData:e=>{let t=e.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialHideRow(){this._activeDirtyManagerService.register(n.SetRowHiddenMutation.id,{commandId:n.SetRowHiddenMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.SetRowVisibleMutation.id,{commandId:n.SetRowVisibleMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialSheet(){this._activeDirtyManagerService.register(n.RemoveSheetMutation.id,{commandId:n.RemoveSheetMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyNameMap:this._getRemoveSheetMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertSheetMutation.id,{commandId:n.InsertSheetMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyNameMap:this._getInsertSheetMutation(t)}}})}_initialDefinedName(){this._activeDirtyManagerService.register(r.SetDefinedNameMutation.id,{commandId:r.SetDefinedNameMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}}),this._activeDirtyManagerService.register(r.RemoveDefinedNameMutation.id,{commandId:r.RemoveDefinedNameMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}})}_getDefinedNameMutation(e){if(e==null)return{};let{unitId:t,name:n,formulaOrRefString:r}=e;return{[t]:{[n]:r}}}_getSetRangeValuesMutationDirtyRange(e){let{subUnitId:t,unitId:n,cellValue:r}=e,i=[];return r==null?i:(i.push(...this._getDirtyRangesByCellValue(n,t,r)),i.push(...this._getDirtyRangesForArrayFormula(n,t,r)),i)}_getMoveRangeMutationDirtyRange(e){let{unitId:t,from:n,to:r}=e,i=[];return i.push(...this._getDirtyRangesByCellValue(t,n.subUnitId,n.value)),i.push(...this._getDirtyRangesByCellValue(t,r.subUnitId,r.value)),i.push(...this._getDirtyRangesForArrayFormula(t,r.subUnitId,r.value)),i}_getMoveRowsMutationDirtyRange(e){let{subUnitId:t,unitId:n,sourceRange:r,targetRange:i}=e,a=[],o=this._rangeToMatrix(r).clone(),s=this._rangeToMatrix(i).clone();return a.push(...this._getDirtyRangesByCellValue(n,t,o)),a.push(...this._getDirtyRangesByCellValue(n,t,s)),a.push(...this._getDirtyRangesForArrayFormula(n,t,s)),a}_getReorderRangeMutationDirtyRange(e){let{unitId:t,subUnitId:n,range:r}=e,i=this._rangeToMatrix(r).clone(),a=[];return a.push(...this._getDirtyRangesByCellValue(t,n,i)),a.push(...this._getDirtyRangesForArrayFormula(t,n,i)),a}_getRemoveRowOrColumnMutation(e,n=!0){let{subUnitId:r,unitId:i,range:a}=e,o=[],s=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_SHEET),c=s==null?void 0:s.getSheetBySheetId(r),l=(c==null?void 0:c.getRowCount())||0,u=(c==null?void 0:c.getColumnCount())||0,d=null,{startRow:f,endRow:p,startColumn:m,endColumn:h}=a;d=n===!0?this._rangeToMatrix({startRow:f,startColumn:0,endRow:p,endColumn:u-1}):this._rangeToMatrix({startRow:0,startColumn:m,endRow:l,endColumn:h});let g=d.clone();return o.push(...this._getDirtyRangesByCellValue(i,r,g)),o.push(...this._getDirtyRangesForArrayFormula(i,r,g)),o}_getHideRowMutation(e){let{subUnitId:t,unitId:n,ranges:r}=e,i=[];return r.forEach(e=>{let r=this._rangeToMatrix(e).getMatrix();i.push(...this._getDirtyRangesByCellValue(n,t,r))}),i}_getRemoveSheetMutation(e){let t={},{subUnitId:n,unitId:r,subUnitName:i}=e;return t[r]==null&&(t[r]={}),t[r][n]=i,t}_getInsertSheetMutation(e){let t={},{sheet:n,unitId:r}=e;return t[r]==null&&(t[r]={}),t[r][n.id]=n.name,t}_rangeToMatrix(e){let n=new t.ObjectMatrix,{startRow:r,startColumn:i,endRow:a,endColumn:o}=e;for(let e=r;e<=a;e++)for(let t=i;t<=o;t++)n.setValue(e,t,{});return n}_getDirtyRangesByCellValue(e,n,r){let i=[];return r==null||new t.ObjectMatrix(r).getDiscreteRanges().forEach(t=>{i.push({unitId:e,sheetId:n,range:t})}),i}_getDirtyRangesForArrayFormula(e,n,r){var i;let a=[];if(r==null)return a;let o=new t.ObjectMatrix(r),s=this._formulaDataModel.getArrayFormulaRange();if(s!=null&&(i=s[e])!=null&&i[n]){var c;let r=new t.ObjectMatrix(s==null||(c=s[e])==null?void 0:c[n]);o.forValue((t,i)=>{r.forValue((r,o,s)=>{if(s==null)return!0;let{startRow:c,startColumn:l,endRow:u,endColumn:d}=s;t>=c&&t<=u&&i>=l&&i<=d&&a.push({unitId:e,sheetId:n,range:{startRow:c,startColumn:l,endRow:c,endColumn:l}})})})}return a}};U=m([p(0,r.IActiveDirtyManagerService),p(1,t.IUniverInstanceService),p(2,(0,t.Inject)(r.FormulaDataModel))],U);let W=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._sheetInterceptorService=t,this._formulaDataModel=n,this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.SetArrayFormulaDataMutation.id){let t=e.params;if(t==null)return;let{arrayFormulaRange:n,arrayFormulaCellData:r}=t;this._formulaDataModel.setArrayFormulaRange(n),this._formulaDataModel.setArrayFormulaCellData(r)}}))}_initInterceptorCellContent(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.CELL_CONTENT,{priority:100,effect:t.InterceptorEffectEnum.Value,handler:(e,n,i)=>{var a;let o=e,{unitId:s,subUnitId:c,row:l,col:u}=n,d=this._formulaDataModel.getArrayFormulaCellData(),f=d==null||(a=d[s])==null||(a=a[c])==null||(a=a[l])==null?void 0:a[u];return f==null?i(o):((!o||o===n.rawData)&&(o={...n.rawData}),f.v==null&&f.t==null?(o.v=0,o.t=t.CellValueType.NUMBER,i(o)):(o==null?void 0:o.t)===t.CellValueType.NUMBER&&o.v!==void 0&&o.v!==null&&(0,t.isRealNum)(o.v)?(o.v=(0,r.stripErrorMargin)(Number(o.v)),i(o)):(o.v=f.v,o.t=f.t,i(o)))}}))}};W=m([p(0,t.ICommandService),p(1,(0,t.Inject)(n.SheetInterceptorService)),p(2,(0,t.Inject)(r.FormulaDataModel))],W);let G=class extends t.Disposable{constructor(e,t,n,r){super(),this._descriptionService=e,this._definedNamesService=t,this._univerInstanceService=n,this._commandService=r,x(this,`_preUnitId`,null),this._initialize()}_initialize(){this._descriptionListener(),this._changeUnitListener(),this._changeSheetListener()}_descriptionListener(){this.disposeWithMe((0,t.toDisposable)(this._definedNamesService.update$.subscribe(e=>{this._updateDescriptions(e)})))}_changeUnitListener(){this.disposeWithMe((0,t.toDisposable)(this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{this._unRegisterDescriptions(),e&&this._initRegisterDescriptions(e.getUnitId())})))}_changeSheetListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(!(t!=null&&t.fromCollab)){if(e.id===n.SetWorksheetActiveOperation.id){let t=e.params;this._unregisterDescriptionsForNotInSheetId(t.unitId,t.subUnitId),this._initRegisterDescriptions(t.unitId,t.subUnitId)}else if(e.id===r.SetDefinedNameMutation.id){let t=e.params;this._registerDescription(t)}else if(e.id===r.RemoveDefinedNameMutation.id){let t=e.params;this._unregisterDescription(t)}}}))}_updateDescriptions(e){let t=(0,n.getSheetCommandTarget)(this._univerInstanceService);if(!t)return;let{unitId:i,subUnitId:a}=t,{type:o,unitId:s,definedNames:c}=e;if(s===i){if(o===`update`){let e=[];c.forEach(t=>{let{name:i,comment:o,formulaOrRefString:s,localSheetId:c}=t;(c==null||c===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||c===a)&&e.push({functionName:i,description:s+(o||``),abstract:s,functionType:r.FunctionType.DefinedName,functionParameter:[]})}),this._descriptionService.registerDescriptions(e)}else if(o===`remove`){let e=[];c.forEach(t=>{e.push(t.name)}),this._descriptionService.unregisterDescriptions(e)}}}_registerDescription(e){let t=(0,n.getSheetCommandTarget)(this._univerInstanceService,e);if(!t)return;let{subUnitId:i}=t,{name:a,comment:o,formulaOrRefString:s,localSheetId:c}=e;this._descriptionService.hasDescription(a)||(c==null||c===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||c===i)&&this._descriptionService.registerDescriptions([{functionName:a,description:s+(o||``),abstract:s,functionType:r.FunctionType.DefinedName,functionParameter:[]}])}_unregisterDescription(e){let{name:t}=e;this._descriptionService.unregisterDescriptions([t])}_unRegisterDescriptions(){if(this._preUnitId===null)return;let e=this._definedNamesService.getDefinedNameMap(this._preUnitId);if(!e)return;let t=[];Object.values(e).forEach(e=>{let{name:n}=e;t.push(n)}),this._descriptionService.unregisterDescriptions(t),this._preUnitId=null}_initRegisterDescriptions(e,t){let i=(0,n.getSheetCommandTarget)(this._univerInstanceService,{unitId:e,subUnitId:t});if(!i)return;let{unitId:a,subUnitId:o}=i,s=this._definedNamesService.getDefinedNameMap(a);if(!s)return;let c=[];this._preUnitId=a,Object.values(s).forEach(e=>{let{name:t,comment:i,formulaOrRefString:a,localSheetId:s}=e;this._descriptionService.hasDescription(t)||(s==null||s===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||s===o)&&c.push({functionName:t,description:a+(i||``),abstract:a,functionType:r.FunctionType.DefinedName,functionParameter:[]})}),this._descriptionService.registerDescriptions(c)}_unregisterDescriptionsForNotInSheetId(e,t){let r=this._definedNamesService.getDefinedNameMap(e);if(!r)return;let i=[];Object.values(r).forEach(e=>{let{name:r,localSheetId:a}=e;a!==n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME&&a!==t&&i.push(r)}),this._descriptionService.unregisterDescriptions(i)}};G=m([p(0,r.IDescriptionService),p(1,r.IDefinedNamesService),p(2,t.IUniverInstanceService),p(3,t.ICommandService)],G);let K=class extends t.Disposable{constructor(e){super(),this._commandService=e,[s,c].forEach(e=>this._commandService.registerCommand(e))}};K=m([p(0,t.ICommandService)],K);let q=class extends t.Disposable{constructor(e,t){super(),this._commandService=e,this._sessionService=t,this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{e.id===n.SetRangeValuesMutation.id&&t!=null&&t.applyFormulaCalculationResult&&this._sessionService.markResultApplied(r.FormulaResultApplicationType.SHEET)}))}};q=m([p(0,t.ICommandService),p(1,(0,t.Inject)(r.FormulaCalculationSessionService))],q);let J=class extends t.Disposable{constructor(e,t,n,r){super(),this._descriptionService=e,this._univerInstanceService=t,this._commandService=n,this._superTableService=r,x(this,`_preUnitId`,null),this._initialize()}_initialize(){this._descriptionListener(),this._changeUnitListener(),this._changeSheetListener()}_descriptionListener(){(0,t.toDisposable)(this._superTableService.update$.subscribe(()=>{this._registerDescriptions()}))}_changeUnitListener(){(0,t.toDisposable)(this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{this._unRegisterDescriptions(),e&&this._registerDescriptions()}))}_changeSheetListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(!(t!=null&&t.fromCollab)){if(e.id===n.SetWorksheetActiveOperation.id)this._unregisterDescriptionsForNotInSheetId(),this._registerDescriptions();else if(e.id===r.SetSuperTableMutation.id){let t=e.params;this._registerDescription(t)}else if(e.id===r.RemoveSuperTableMutation.id){let t=e.params;this._unregisterDescription(t)}}}))}_registerDescription(e){let t=this._getUnitIdAndSheetId(e);if(!t)return;let{unitId:n}=t,{tableName:i,reference:a}=e;if(!this._descriptionService.hasDescription(i)){var o;let e=(0,r.serializeRangeWithSheet)(((o=this._univerInstanceService.getUnit(n))==null||(o=o.getSheetBySheetId(a.sheetId))==null?void 0:o.getName())||``,a.range);this._descriptionService.registerDescriptions([{functionName:i,description:e,abstract:e,functionType:r.FunctionType.Table,functionParameter:[]}])}}_unregisterDescription(e){let{tableName:t}=e;this._descriptionService.unregisterDescriptions([t])}_unRegisterDescriptions(){if(this._preUnitId==null)return;let e=this._superTableService.getTableMap(this._preUnitId);if(e==null)return;let t=[];e.forEach((e,n)=>{t.push(n)}),this._descriptionService.unregisterDescriptions(t),this._preUnitId=null}_getUnitIdAndSheetId(e={}){let{unitId:n,subUnitId:r}=e,i=n?this._univerInstanceService.getUnit(n,t.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(!i)return null;let a=r?i.getSheetBySheetId(r):i.getActiveSheet(!0);return a?{unitId:i.getUnitId(),sheetId:a.getSheetId()}:null}_registerDescriptions(){let e=this._getUnitIdAndSheetId();if(!e)return;let{unitId:t}=e,n=this._superTableService.getTableMap(t);if(!n)return;let i=[];this._preUnitId=t,n.forEach((e,n)=>{var a;let o=(0,r.serializeRangeWithSheet)(((a=this._univerInstanceService.getUnit(t))==null||(a=a.getSheetBySheetId(e.sheetId))==null?void 0:a.getName())||``,e.range);this._descriptionService.hasDescription(n)||i.push({functionName:n,description:o,abstract:o,functionType:r.FunctionType.Table,functionParameter:[]})}),this._descriptionService.registerDescriptions(i)}_unregisterDescriptionsForNotInSheetId(){let e=this._getUnitIdAndSheetId();if(!e)return;let{unitId:t}=e,n=this._superTableService.getTableMap(t);if(!n)return;let r=[];n.forEach((e,t)=>{r.push(t)}),this._descriptionService.unregisterDescriptions(r)}};J=m([p(0,r.IDescriptionService),p(1,t.IUniverInstanceService),p(2,t.ICommandService),p(3,r.ISuperTableService)],J);function Je(e,n,i,a){let o=e.sequenceNodesBuilder(n);if(o==null)return n;let s=[];for(let e=0,n=o.length;e<n;e++){let n=o[e];if(typeof n==`string`||n.nodeType!==r.sequenceNodeType.REFERENCE)continue;let{token:c}=n,l=(0,r.deserializeRangeWithSheetWithCache)(c),{sheetName:u,unitId:d}=l,f=l.range;(f.startAbsoluteRefType!==t.AbsoluteRefType.ALL||f.endAbsoluteRefType!==t.AbsoluteRefType.ALL)&&(f=(0,t.moveRangeByOffset)(f,i,a),s.push({unitId:d,sheetName:u,range:f}))}return s.map(e=>`${e.unitId}!${e.sheetName}!${e.range.startRow}!${e.range.endRow}!${e.range.startColumn}!${e.range.endColumn}`).join(`|`)}let Y=class extends t.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._lexerTreeBuilder=t,this._univerInstanceService=n,this._injector=r}transformFormulaByEffectCommand(e,i,a,o){let s=this._lexerTreeBuilder.sequenceNodesBuilder(a),c=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),l=c.getActiveSheet(),u=c.getUnitId(),d=l.getSheetId(),f=s==null?void 0:s.map(a=>{if(typeof a==`object`&&a.nodeType===r.sequenceNodeType.REFERENCE){let{range:s,unitId:c,sheetName:l}=(0,r.deserializeRangeWithSheetWithCache)(a.token),f=this._univerInstanceService.getUnit(c||e),p=l?f==null?void 0:f.getSheetBySheetName(l):f==null?void 0:f.getSheetBySheetId(i);if(!p)throw Error(`Sheet not found`);let m=f.getUnitId(),h=p.getSheetId();if(m!==u||h!==d)return a;let g=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(s,o),_=``;if(g){let e=(0,t.moveRangeByOffset)(s,g.startColumn-s.startColumn,g.startRow-s.startRow);_=c&&l?(0,r.serializeRangeWithSpreadsheet)(c,l,e):l?(0,r.serializeRangeWithSheet)(l,e):(0,r.serializeRange)(e)}else _=r.ErrorType.REF;return{...a,token:_}}else return a});return f?`=${(0,r.generateStringWithSequence)(f)}`:``}registerFormula(e,i,a,o){let s=new Map,c=this._lexerTreeBuilder.sequenceNodesBuilder(a),l=new t.DisposableCollection,u=e=>{let i=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),a=i.getActiveSheet(),l=i.getUnitId(),u=a.getSheetId(),d=c==null?void 0:c.map(i=>{if(typeof i==`object`&&i.nodeType===r.sequenceNodeType.REFERENCE){let a=s.get(i.token);if(a.unitId!==l||a.subUnitId!==u)return i;let o=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(a.range,e),c=``;if(o){let e=o.startColumn-a.range.startColumn,n=o.startRow-a.range.startRow,i=(0,t.moveRangeByOffset)(a.range,e,n);c=a.unitId&&a.sheetName?(0,r.serializeRangeWithSpreadsheet)(a.unitId,a.sheetName,i):a.sheetName?(0,r.serializeRangeWithSheet)(a.sheetName,i):(0,r.serializeRange)(i)}else c=r.ErrorType.REF;return{...i,token:c}}else return i});return o(`=${d&&(0,r.generateStringWithSequence)(d)}`)};return c==null||c.forEach(t=>{if(typeof t==`object`&&t.nodeType===r.sequenceNodeType.REFERENCE){let{range:n,unitId:a,sheetName:o}=(0,r.deserializeRangeWithSheetWithCache)(t.token),c=this._univerInstanceService.getUnit(a||e),d=o?c==null?void 0:c.getSheetBySheetName(o):c==null?void 0:c.getSheetBySheetId(i);if(!d)return;let f=c.getUnitId(),p=d.getSheetId(),m={unitId:f,subUnitId:p,range:n,sheetName:o};s.set(t.token,m),l.add(this._refRangeService.registerRefRange(n,u,f,p))}}),l}_getFormulaDependcy(e,n,i,a){let o=(0,t.isFormulaString)(i)?this._lexerTreeBuilder.sequenceNodesBuilder(i):null,s=[];return o==null||o.forEach(i=>{if(typeof i==`object`&&i.nodeType===r.sequenceNodeType.REFERENCE){let{range:o,unitId:c,sheetName:l}=(0,r.deserializeRangeWithSheetWithCache)(i.token);if(o.startAbsoluteRefType===t.AbsoluteRefType.ALL&&o.endAbsoluteRefType===t.AbsoluteRefType.ALL)return;let u=this._univerInstanceService.getUnit(c||e),d=l?u==null?void 0:u.getSheetBySheetName(l):u==null?void 0:u.getSheetBySheetId(n);if(!d)return;let f=u.getUnitId(),p=d.getSheetId(),m=a[0].startRow,h=a[0].startColumn,g=o.startRow,_=o.startColumn,v=a.map(e=>({startRow:e.startRow-m+g,endRow:e.endRow-m+g,startColumn:e.startColumn-h+_,endColumn:e.endColumn-h+_}));s.push({unitId:f,subUnitId:p,ranges:v})}}),s}registerRangeFormula(e,r,i,a,o){let s=new t.DisposableCollection,c=a.map(t=>this._getFormulaDependcy(e,r,t,i)),l=s=>{let l=(0,n.getSeparateEffectedRangesOnCommand)(this._injector,s);if(!l)return{undos:[],redos:[]};let u=i[0].startRow,d=i[0].startColumn,f=[{unitId:e,subUnitId:r,ranges:i},...c.flat()],p=[];for(let{unitId:e,subUnitId:n,ranges:r}of f)if(e===l.unitId&&n===l.subUnitId){let e=[],n=r[0].startRow,i=r[0].startColumn,a=n-u,o=i-d;for(let n of l.ranges){let i=[];for(let e of r){let r=(0,t.getIntersectRange)(n,e);r&&i.push(r)}i.length>0&&e.push(...i)}e.length>0&&p.push(e.map(e=>({startRow:e.startRow-a,endRow:e.endRow-a,startColumn:e.startColumn-o,endColumn:e.endColumn-o})))}if(p.length>0){let c=t.Rectangle.splitIntoGrid([...p.flat()]),l=t.Rectangle.subtractMulti(i,c);l.sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn);let f=new Map;for(let i=0;i<c.length;i++){let o=c[i],l=o.startRow,p=o.startColumn,m=l-u,h=p-d,g=(0,n.handleCommonDefaultRangeChangeWithEffectRefCommands)(o,s).sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn);if(!g.length)continue;let _=g[0].startRow,v=g[0].startColumn,y=_-u,b=v-d,x=[];for(let n=0;n<a.length;n++){let i=a[n],o=(0,t.isFormulaString)(i),c=o?this._lexerTreeBuilder.moveFormulaRefOffset(i,h,m):i,l=o?this.transformFormulaByEffectCommand(e,r,c,s):c,u=Je(this._lexerTreeBuilder,l,-b,-y);x.push({newFormula:l,orginFormula:u})}let S={formulas:x,ranges:g,key:x.map(e=>e.orginFormula).join(`_`)};f.has(S.key)?f.get(S.key).push(S):f.set(S.key,[S])}let m=a.map(e=>Je(this._lexerTreeBuilder,e,0,0)).join(`_`);if(l.length>0){let e=l[0].startRow,n=l[0].startColumn,r=[];for(let i=0;i<a.length;i++){let o=a[i];r.push({newFormula:(0,t.isFormulaString)(o)?this._lexerTreeBuilder.moveFormulaRefOffset(o,n-d,e-u):o,orginFormula:o})}let i={formulas:r,ranges:l,key:m};f.has(i.key)?f.get(i.key).push(i):f.set(i.key,[i])}let h=[],g=Array.from(f.keys());for(let e=g.length-1;e>=0;e--){let n=g[e],r=f.get(n).sort((e,t)=>e.ranges[0].startRow-t.ranges[0].startRow||e.ranges[0].startColumn-t.ranges[0].startColumn),i=[];for(let e=0;e<r[0].formulas.length;e++)i.push(r[0].formulas[e].newFormula);let a=t.Rectangle.mergeRanges(r.map(e=>e.ranges).flat());a.sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn),h.push({formulas:i,ranges:a})}return o(h)}return{undos:[],redos:[]}};return i.forEach(t=>{let n=this._refRangeService.registerRefRange(t,l,e,r);s.add(n)}),[...c.flat()].forEach(({unitId:e,subUnitId:t,ranges:n})=>{n.forEach(n=>{let r=this._refRangeService.registerRefRange(n,l,e,t);s.add(r)})}),s}};Y=m([p(0,(0,t.Inject)(n.RefRangeService)),p(1,(0,t.Inject)(r.LexerTreeBuilder)),p(2,t.IUniverInstanceService),p(3,(0,t.Inject)(t.Injector))],Y);let X=`sheets-formula.remote-register-function.service`,Ye=(0,t.createIdentifier)(X),Z=class{constructor(e){this._functionService=e}async registerFunctions(e){Xe(e)}async registerAsyncFunctions(e){Xe(e)}async unregisterFunctions(e){this._functionService.unregisterExecutors(...e),this._functionService.unregisterDescriptions(...e),this._functionService.deleteFormulaAstCacheKey(...e)}};Z=m([p(0,r.IFunctionService)],Z);function Xe(e){if(e.length!==0)throw Error(`Remote custom function registration is disabled because function deserialization over RPC is unsafe.`)}let Q=class extends t.Plugin{constructor(e=f,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},f,this._config);this._configService.setConfig(`sheets-formula.remote.config`,i)}onStarting(){this._injector.add([Z]),this._injector.get(o.IRPCChannelService).registerChannel(X,(0,o.fromModule)(this._injector.get(Z)))}};x(Q,`pluginName`,`SHEET_FORMULA_REMOTE_PLUGIN`),x(Q,`packageName`,Ke),x(Q,`version`,qe),x(Q,`type`,t.UniverInstanceType.UNIVER_SHEET),Q=m([(0,t.DependentOn)(r.UniverFormulaEnginePlugin),p(1,(0,t.Inject)(t.Injector)),p(2,t.IConfigService)],Q);let $=class extends t.Plugin{constructor(e=d,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},d,this._config);this._configService.setConfig(l,i,{merge:!0})}onStarting(){var e;let t=this._injector,n=[[q],[K],[Y],[W],[S],[T],[H],[U],[G],[V],[J],[h],[D]];if(this._config.notExecuteFormula){let e=t.get(o.IRPCChannelService);n.push([Ye,{useFactory:()=>(0,o.toModule)(e.requestChannel(X))}])}n.forEach(e=>t.add(e)),(e=this._config.description)!=null&&e.length&&this.disposeWithMe(t.get(r.IDescriptionService).registerDescriptions(this._config.description))}onReady(){(0,t.touchDependencies)(this._injector,[[K],[U],[W],[S],[H],[V],[h],[D],[q]]),(0,t.isNodeEnv)()&&(0,t.touchDependencies)(this._injector,[[T]])}onRendered(){(0,t.touchDependencies)(this._injector,[[G],[J]]),(0,t.isNodeEnv)()||(0,t.touchDependencies)(this._injector,[[T]])}};x($,`pluginName`,`SHEETS_FORMULA_PLUGIN`),x($,`packageName`,Ke),x($,`version`,qe),x($,`type`,t.UniverInstanceType.UNIVER_SHEET),$=m([(0,t.DependentOn)(r.UniverFormulaEnginePlugin,n.UniverSheetsPlugin),p(1,(0,t.Inject)(t.Injector)),p(2,t.IConfigService)],$);function Ze(e,t,n,i){let a=e.get(r.IFormulaCurrentConfigService),o=e.get(r.Lexer),s=e.get(r.AstTreeBuilder),c=e.get(r.Interpreter);a.load({formulaData:{},arrayFormulaCellData:{},arrayFormulaRange:{},forceCalculate:!1,dirtyRanges:[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},excludedCell:{},allUnitData:{[n]:i},dirtyUnitOtherFormulaMap:{}});let l=o.treeBuilder(t),u=s.parse(l);return(0,r.getObjectValue)(c.execute((0,r.generateExecuteAstNodeData)(u)))}e.CalculationMode=u,Object.defineProperty(e,"FormulaAutoFillController",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"FormulaRefRangeService",{enumerable:!0,get:function(){return Y}}),e.IRemoteRegisterFunctionService=Ye,Object.defineProperty(e,"ImageFormulaCellInterceptorController",{enumerable:!0,get:function(){return S}}),e.InsertFunctionCommand=s,e.PLUGIN_CONFIG_KEY_BASE=l,e.QuickSumCommand=c,Object.defineProperty(e,"RemoteRegisterFunctionService",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"TriggerCalculationController",{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,"UnitQualifierRenameController",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"UniverRemoteSheetsFormulaPlugin",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"UniverSheetsFormulaPlugin",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"UpdateDefinedNameController",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"UpdateFormulaController",{enumerable:!0,get:function(){return H}}),e.calculateFormula=Ze,e.collectUnitQualifierFormulaPatches=E});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/sheets"),require("@univerjs/engine-formula"),require("@univerjs/docs"),require("rxjs"),require("@univerjs/rpc")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`@univerjs/engine-formula`,`@univerjs/docs`,`rxjs`,`@univerjs/rpc`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsFormula={},e.UniverCore,e.UniverSheets,e.UniverEngineFormula,e.UniverDocs,e.rxjs,e.UniverRpc))})(this,function(e,t,n,r,i,a,o){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let s={id:`formula.command.insert-function`,type:t.CommandType.COMMAND,handler:async(e,r)=>{let{list:i,listOfRangeHasNumber:a}=r,o=e.get(t.ICommandService),s=new t.ObjectMatrix;i.forEach(e=>{let{range:n,primary:r,formula:i}=e,{row:a,column:o}=r,c=(0,t.generateRandomId)(6);s.setValue(a,o,{f:i,si:c});let{startRow:l,startColumn:u,endRow:d,endColumn:f}=n;for(let e=l;e<=d;e++)for(let t=u;t<=f;t++)(e!==a||t!==o)&&s.setValue(e,t,{si:c})}),a&&a.length>0&&a.forEach(e=>{let{primary:t,formula:n}=e;s.setValue(t.row,t.column,{f:n})});let c={value:s.clone()};return o.executeCommand(n.SetRangeValuesCommand.id,c)}},c={id:`sheets-formula.command.quick-sum`,type:t.CommandType.COMMAND,handler:async e=>{let i=e.get(n.SheetsSelectionsService).getCurrentLastSelection();if(!i)return!1;let a=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService));if(!a)return!1;let o=i.range,{worksheet:s}=a,c=(0,n.findFirstNonEmptyCell)(o,s);if(!c)return!1;c=(0,n.alignToMergedCellsBorders)(c,s);let l=(0,n.expandToContinuousRange)({startRow:c.startRow,startColumn:c.startColumn,endRow:o.endRow,endColumn:o.endColumn},{left:!0,right:!0,up:!0,down:!0},s),u=new t.ObjectMatrix,d=(0,n.alignToMergedCellsBorders)({startRow:l.endRow,endRow:l.endRow,startColumn:l.startColumn,endColumn:l.endColumn},s);if(!t.Rectangle.equals(d,l))for(let e of s.iterateByColumn(d))(!e.value||!s.cellHasValue(e.value))&&u.setValue(e.row,e.col,{f:`=SUM(${(0,r.serializeRange)({startColumn:e.col,endColumn:e.col,startRow:l.startRow,endRow:e.row-1})})`});let f=(0,n.alignToMergedCellsBorders)({startRow:l.startRow,startColumn:l.endColumn,endRow:l.endRow,endColumn:l.endColumn},s);if(!t.Rectangle.equals(f,l))for(let e of s.iterateByRow(f))(!e.value||!s.cellHasValue(e.value))&&u.setValue(e.row,e.col,{f:`=SUM(${(0,r.serializeRange)({startColumn:l.startColumn,endColumn:e.col-1,startRow:e.row,endRow:e.row})})`});let p=e.get(t.ICommandService);return(await(0,t.sequenceExecuteAsync)([{id:n.SetRangeValuesCommand.id,params:{range:l,value:u.getMatrix()}},{id:n.SetSelectionsOperation.id,params:{unitId:a.unitId,subUnitId:a.subUnitId,selections:[{range:l,primary:t.Rectangle.contains(l,i.primary)?i.primary:{...c,actualRow:c.startRow,actualColumn:c.startColumn},style:null}]}}],p)).result}},l=`sheets-formula.base.config`,u=function(e){return e[e.FORCED=0]=`FORCED`,e[e.WHEN_EMPTY=1]=`WHEN_EMPTY`,e[e.NO_CALCULATION=2]=`NO_CALCULATION`,e}({}),d={},f={};function p(e,t){return function(n,r){t(n,r,e)}}function m(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let h=class extends t.Disposable{constructor(e,t){super(),this._autoFillService=e,this._lexerTreeBuilder=t,this._registerAutoFill()}_registerAutoFill(){let e={type:n.AUTO_FILL_DATA_TYPE.FORMULA,priority:1001,match:e=>(0,t.isFormulaString)(e==null?void 0:e.f)||(0,t.isFormulaId)(e==null?void 0:e.si),isContinue:(e,t)=>e.type===n.AUTO_FILL_DATA_TYPE.FORMULA,applyFunctions:{[n.AUTO_FILL_APPLY_TYPE.COPY]:(e,t,n,r,i)=>{let{data:a,index:o}=e;return this._fillCopyFormula(a,t,n,o,r,i)}}};this._autoFillService.registerRule(e)}_fillCopyFormula(e,n,r,i,a,o){let s=_(a),c=[],l=new Map;for(let a=1;a<=n;a++){let f=(a-1)%e.length,p=i[f],m=t.Tools.deepClone(e[f]);if(m){var u,d;let i=((u=e[f])==null?void 0:u.f)||``,a=((d=e[f])==null?void 0:d.si)||``,h=(0,t.isFormulaString)(i);if((0,t.isFormulaId)(a))m.si=a,m.f=null,m.v=null,m.p=null,m.t=null,c.push(m);else if(h){let e=l.get(f);if(e)m.si=e,m.f=null,m.v=null,m.p=null,m.t=null;else{e=(0,t.generateRandomId)(6),l.set(f,e);let{offsetX:a,offsetY:c}=g(s,n,r,o,p),u=this._lexerTreeBuilder.moveFormulaRefOffset(i,a,c);m.si=e,m.f=u,m.v=null,m.p=null,m.t=null}c.push(m)}}}return c}};h=m([p(0,n.IAutoFillService),p(1,(0,t.Inject)(r.LexerTreeBuilder))],h);function g(e,n,r,i,a){let{source:o,target:s}=i,{rows:c}=s,{rows:l}=o,u=0,d=0;switch(r){case t.Direction.UP:d=c[a]-l[a];break;case t.Direction.RIGHT:u=e;break;case t.Direction.DOWN:d=c[a]-l[a];break;case t.Direction.LEFT:u=-e*n;break}return{offsetX:u,offsetY:d}}function _(e){let t=0;for(let n in e)e[n].forEach(e=>{t+=e.data.length});return t}function v(e){"@babel/helpers - typeof";return v=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},v(e)}function y(e,t){if(v(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(v(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function b(e){var t=y(e,`string`);return v(t)==`symbol`?t:t+``}function x(e,t,n){return(t=b(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let S=class extends t.Disposable{constructor(e,n,i){super(),this._commandService=e,this._sheetInterceptorService=n,this._formulaDataModel=i,x(this,`_errorValueCell`,{v:r.ErrorType.VALUE,t:t.CellValueType.STRING}),x(this,`_refreshRender`,void 0),this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(async e=>{if(e.id===r.SetImageFormulaDataMutation.id){let n=e.params;if(!n)return;let{imageFormulaData:r}=n;if(!r||r.length===0)return;let i=await Promise.all(r.map(e=>this._getImageNatureSize(e))),a={};i.forEach(e=>{let{unitId:n,sheetId:r,row:i,column:o,...s}=e;a[n]||(a[n]={}),a[n][r]||(a[n][r]=new t.ObjectMatrix),a[n][r].setValue(i,o,s)}),this._formulaDataModel.mergeUnitImageFormulaData(a),this._refreshRender()}}))}_initInterceptorCellContent(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.CELL_CONTENT,{priority:n.InterceptCellContentPriority.CELL_IMAGE,effect:t.InterceptorEffectEnum.Value|t.InterceptorEffectEnum.Style,handler:(e,n,r)=>{var a;let{unitId:o,subUnitId:s,row:c,col:l}=n,u=this._formulaDataModel.getUnitImageFormulaData(),d=u==null||(a=u[o])==null||(a=a[s])==null?void 0:a.getValue(c,l);if(!d)return r(e);let{source:f,height:p,width:m,isErrorImage:h,imageNaturalWidth:g,imageNaturalHeight:_}=d;if(h)return r(this._errorValueCell);let v=m||g,y=p||_;if(!v||!y)return r(this._errorValueCell);let b=(0,t.createDocumentModelWithStyle)(``,{}),x={unitId:o,subUnitId:s,drawingId:(0,t.generateRandomId)(),drawingType:t.DrawingTypeEnum.DRAWING_IMAGE,imageSourceType:t.ImageSourceType.URL,source:f,transform:{left:0,top:0,width:v,height:y},docTransform:(0,i.buildDocTransform)(v,y),behindDoc:t.BooleanNumber.FALSE,title:``,description:``,layoutType:t.PositionedObjectLayoutType.INLINE,wrapText:t.WrapTextType.BOTH_SIDES,distB:0,distL:0,distR:0,distT:0},S=t.BuildTextUtils.drawing.add({documentDataModel:b,drawings:[x],selection:{collapsed:!0,startOffset:0,endOffset:0}});return S?(b.apply(S),r({...e,p:b.getSnapshot()})):r(this._errorValueCell)}}))}async _getImageNatureSize(e){let t=await this._getImageSize(e.source);return t.image?{...e,isErrorImage:!1,imageNaturalHeight:t.height,imageNaturalWidth:t.width}:{...e,isErrorImage:!0}}async _getImageSize(e){return new Promise(t=>{let n=new Image;n.src=e,n.onload=()=>{t({width:n.width,height:n.height,image:n})},n.onerror=()=>{t({width:0,height:0,image:null})}})}registerRefreshRenderFunction(e){this._refreshRender=e}};S=m([p(0,t.ICommandService),p(1,(0,t.Inject)(n.SheetInterceptorService)),p(2,(0,t.Inject)(r.FormulaDataModel))],S);let C={done:0,count:0},w={onlyLocal:!0},T=class extends t.Disposable{_emitProgress(e){this._progress$.next({done:this._doneCalculationTaskCount,count:this._totalCalculationTaskCount,label:e})}_startProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=1;let e=this._localeService.t(`sheets-formula.progress.analyzing`);this._emitProgress(e)}_calculateProgress(e){if(this._executionInProgressParams){let{totalFormulasToCalculate:t,completedFormulasCount:n,totalArrayFormulasToCalculate:r,completedArrayFormulasCount:i}=this._executionInProgressParams;if(this._doneCalculationTaskCount=n+i,this._totalCalculationTaskCount=t+r,this._totalCalculationTaskCount===0)return;this._emitProgress(e)}}_completeProgress(){this._doneCalculationTaskCount=this._totalCalculationTaskCount=1;let e=this._localeService.t(`sheets-formula.progress.done`);this._emitProgress(e)}clearProgress(){this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0,this._emitProgress()}constructor(e,n,r,i,o,s){super(),this._commandService=e,this._univerInstanceService=n,this._logService=r,this._configService=i,this._formulaDataModel=o,this._localeService=s,x(this,`_startExecutionTime`,0),x(this,`_totalCalculationTaskCount`,0),x(this,`_doneCalculationTaskCount`,0),x(this,`_executionInProgressParams`,null),x(this,`_progress$`,new a.BehaviorSubject(C)),x(this,`progress$`,this._progress$.asObservable()),this._commandExecutedListener(),this._initialExecuteFormulaProcessListener(),this._initialExecuteFormula(),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).subscribe(()=>{this._initialExecuteFormula()}))}dispose(){super.dispose(),this._progress$.next(C),this._progress$.complete()}_getCalculationMode(){let e=this._configService.getConfig(l);return(e==null?void 0:e.initialFormulaComputing)??1}_commandExecutedListener(){this.disposeWithMe(this._commandService.beforeCommandExecuted(e=>{if(e.id===r.SetFormulaCalculationStartMutation.id||e.id===r.SetFormulaStringBatchCalculationMutation.id){let t=e.params;e.id===r.SetFormulaCalculationStartMutation.id&&(t.isCalculateTreeModel=this._configService.getConfig(r.ENGINE_FORMULA_RETURN_DEPENDENCY_TREE)||!1),t.maxIteration=this._configService.getConfig(r.ENGINE_FORMULA_CYCLE_REFERENCE_COUNT),t.rowData=this._formulaDataModel.getHiddenRowsFiltered()}}))}_initialExecuteFormulaProcessListener(){let e=null,t=0;this.disposeWithMe(this._commandService.onCommandExecuted(n=>{if(n.id===r.SetFormulaCalculationStopMutation.id&&this.clearProgress(),n.id!==r.SetFormulaCalculationNotificationMutation.id)return;let i=n.params;if(i.stageInfo!=null){let{stage:n}=i.stageInfo;if(n===r.FormulaExecuteStageType.START)t===0&&(this._startExecutionTime=performance.now()),t++,e!==null&&(clearTimeout(e),e=null),e=setTimeout(()=>{e=null,this._startProgress()},1e3);else if(n===r.FormulaExecuteStageType.CURRENTLY_CALCULATING){if(this._executionInProgressParams=i.stageInfo,e===null){let e=this._localeService.t(`sheets-formula.progress.calculating`);this._calculateProgress(e)}}else if(n===r.FormulaExecuteStageType.START_DEPENDENCY_ARRAY_FORMULA){if(this._executionInProgressParams=i.stageInfo,e===null){let e=this._localeService.t(`sheets-formula.progress.array-analysis`);this._calculateProgress(e)}}else if(n===r.FormulaExecuteStageType.CURRENTLY_CALCULATING_ARRAY_FORMULA&&(this._executionInProgressParams=i.stageInfo,e===null)){let e=this._localeService.t(`sheets-formula.progress.array-calculation`);this._calculateProgress(e)}}else{let n=i.functionsExecutedState,a=``;switch(t--,n){case r.FormulaExecutedStateType.NOT_EXECUTED:a=`No tasks are being executed anymore`;break;case r.FormulaExecutedStateType.STOP_EXECUTION:a=`The execution of the formula has been stopped`,t=0;break;case r.FormulaExecutedStateType.SUCCESS:a=`Formula calculation succeeded`,(t===0||t===-1)&&(a+=`. Total time consumed: ${performance.now()-this._startExecutionTime} ms`);break;case r.FormulaExecutedStateType.INITIAL:a=`Waiting for calculation`;break}(t===0||t===-1)&&(e?(clearTimeout(e),e=null,this.clearProgress()):this._completeProgress(),t=0,this._doneCalculationTaskCount=0,this._totalCalculationTaskCount=0),this._executionInProgressParams=null,this._logService.debug(`[TriggerCalculationController]`,a)}}))}_initialExecuteFormula(){let e=this._getCalculationMode();if(e!==2){let t=this._getDirtyDataByCalculationMode(e);this._commandService.executeCommand(r.SetTriggerFormulaCalculationStartMutation.id,t,w)}}_getDirtyDataByCalculationMode(e){return{forceCalculation:e===0,dirtyRanges:e===1?this._formulaDataModel.getFormulaDirtyRanges():[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtySuperTableMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}};T=m([p(0,t.ICommandService),p(1,t.IUniverInstanceService),p(2,t.ILogService),p(3,t.IConfigService),p(4,(0,t.Inject)(r.FormulaDataModel)),p(5,(0,t.Inject)(t.LocaleService))],T);function E(e,n,i){let a=e.getUnitId();return e.getSheets().flatMap(e=>{let o=new t.ObjectMatrix;e.getCellMatrix().forValue((e,t,a)=>{if(!(a!=null&&a.f))return;let s=(0,r.refactorFormulaUnitQualifier)(a.f,n,i);s!==a.f&&o.setValue(e,t,{f:s})});let s=o.clone();return Object.keys(s).length>0?[{unitId:a,subUnitId:e.getSheetId(),cellValue:s}]:[]})}let D=class extends t.Disposable{constructor(e,n,r,i){super(),this._commandService=e,this._undoRedoService=n,this._univerInstanceService=r,this._definedNamesService=i,x(this,`_names`,new Map),this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_BASE).forEach(e=>this._watch(e)),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_BASE).subscribe(({unit:e})=>this._watch(e))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_BASE).subscribe(e=>this._names.delete(e.getUnitId())))}_watch(e){let t=e.getUnitId();this.disposeWithMe(e.name$.subscribe(e=>{let n=this._names.get(t);this._names.set(t,e),!(!n||n===e)&&this._refactor(t,n,e)}))}_refactor(e,i,a){let o=[],s=[];for(let e of this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_SHEET)){for(let r of E(e,i,a)){let i=e.getSheetBySheetId(r.subUnitId);if(!i)continue;let a=new t.ObjectMatrix;new t.ObjectMatrix(r.cellValue).forValue((e,t)=>{a.setValue(e,t,i.getCellRaw(e,t)??null)}),o.push({id:n.SetRangeValuesMutation.id,params:r}),s.unshift({id:n.SetRangeValuesMutation.id,params:{...r,cellValue:a.clone()}})}let c=this._definedNamesService.getDefinedNameMap(e.getUnitId());for(let t of Object.values(c??{})){let n=(0,r.refactorFormulaUnitQualifier)(t.formulaOrRefString,i,a);n!==t.formulaOrRefString&&(o.push({id:r.SetDefinedNameMutation.id,params:{unitId:e.getUnitId(),...t,formulaOrRefString:n}}),s.unshift({id:r.SetDefinedNameMutation.id,params:{unitId:e.getUnitId(),...t}}))}}!o.length||!(0,t.sequenceExecute)(o,this._commandService).result||this._undoRedoService.pushUndoRedo({unitID:e,undoMutations:s,redoMutations:o})}};D=m([p(0,t.ICommandService),p(1,t.IUndoRedoService),p(2,t.IUniverInstanceService),p(3,r.IDefinedNamesService)],D);function O(e,t,n){var r;return e==null||e[t]==null||((r=e[t])==null?void 0:r[n])==null}function k(e,t,n){if(n){var r;if(e&&e[t]&&(r=e[t])!=null&&r[n])return delete e[t][n],{[t]:{[n]:null}}}else if(e&&e[t])return delete e[t],{[t]:null}}let A=[11,12,13,14,15,16,17];function j(e,t,n){let{type:r}=n;return A.includes(r)||r===18&&n.range==null?M(e,t):ee(e,t,n)}function M(e,r){let i=[],a=[];return Object.keys(r).forEach(o=>{let s=r[o],c=e[o];if(s==null||c==null)return!0;Object.keys(s).forEach(e=>{let r=new t.ObjectMatrix(s[e]||{}),l=new t.ObjectMatrix(c[e]||{}),u=new t.ObjectMatrix,d=new t.ObjectMatrix;if(r.forValue((e,t,n)=>{if(n==null)return!0;let r=N(n);r!==null&&(u.setValue(e,t,r),d.setValue(e,t,l.getValue(e,t)))}),u.getSizeOf()===0)return;let f={subUnitId:e,unitId:o,cellValue:u.getMatrix()},p={id:n.SetRangeValuesMutation.id,params:f};a.push(p);let m={subUnitId:e,unitId:o,cellValue:d.getMatrix()},h={id:n.SetRangeValuesMutation.id,params:m};i.push(h)})}),{undos:i,redos:a}}function ee(e,t,r){let{redoFormulaData:i,undoFormulaData:a}=te(e,t,r),o=[],s=[];return Object.keys(i).forEach(e=>{Object.keys(i[e]).forEach(t=>{if(Object.keys(i[e][t]).length!==0){let r={subUnitId:t,unitId:e,cellValue:i[e][t]},a={id:n.SetRangeValuesMutation.id,params:r};o.push(a)}})}),Object.keys(a).forEach(e=>{Object.keys(a[e]).forEach(t=>{if(Object.keys(a[e][t]).length!==0){let r={subUnitId:t,unitId:e,cellValue:a[e][t]},i={id:n.SetRangeValuesMutation.id,params:r};s.push(i)}})}),{undos:s,redos:o}}function te(e,n,r){let i={},a={},{unitId:o,sheetId:s}=r,c=r.targetUnitId??o,l=r.targetSheetId??s,u=o!==c||s!==l;return new Set([...Object.keys(e),...Object.keys(n)]).forEach(c=>{O(e,c,s)||new Set([...Object.keys(e[c]||{}),...Object.keys(n[c]||{})]).forEach(l=>{var d,f;let p=(d=e[c])==null?void 0:d[l],m=(f=n[c])==null?void 0:f[l],h=new t.ObjectMatrix(p||{}),g=new t.ObjectMatrix(m||{}),_=[];_=u||c!==o||l!==s?re(g):ne(h,g,r);let v=_e(_,h,g),y=ve(_,h);i[c]||(i[c]={}),a[c]||(a[c]={}),i[c][l]={...i[c][l],...v},a[c][l]={...a[c][l],...y}})}),{redoFormulaData:i,undoFormulaData:a}}function ne(e,n,r){let{type:i,from:a,to:o,range:s}=r,c=[];return e.forValue((e,l,u)=>{if(u==null||!be(u))return!0;let d=(0,t.cellToRange)(e,l),f=null,p=!1;if([0,1,2].includes(i))f=ie(i,a,o,d);else if(s!=null){let e=ae(d,r);f=e.newCell,p=e.isReverse}if(t.Tools.diffValue(d,f)&&!n.getValue(e,l))return!0;p?c.unshift({oldCell:d,newCell:f}):c.push({oldCell:d,newCell:f})}),c}function re(e){let n=[];return e.forValue((e,r,i)=>{if(i==null||!be(i))return!0;let a=(0,t.cellToRange)(e,r);n.push({oldCell:a,newCell:a})}),n}function ie(e,t,n,r){if(t==null||n==null)return null;switch(e){case 0:return oe(t,n,r);case 1:return se(t,n,r);case 2:return ce(t,n,r);default:return null}}function ae(e,t){let{type:n,rangeFilteredRows:r}=t,i=t.range,a=null,o=!1;switch(n){case 3:a=le(i,e),o=!0;break;case 4:a=ue(i,e),o=!0;break;case 5:a=de(i,e,r);break;case 6:case 18:a=fe(i,e);break;case 7:a=pe(i,e);break;case 8:a=me(i,e);break;case 9:a=he(i,e),o=!0;break;case 10:a=ge(i,e),o=!0;break;default:break}return{newCell:a,isReverse:o}}function oe(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveRange)({id:n.EffectRefRangId.MoveRangeCommandId,params:{toRange:t,fromRange:e}},r),r)}function se(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveRows)({id:n.EffectRefRangId.MoveRowsCommandId,params:{toRange:t,fromRange:e}},r),r)}function ce(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleMoveCols)({id:n.EffectRefRangId.MoveColsCommandId,params:{toRange:t,fromRange:e}},r),r)}function le(e,r){return(0,n.runRefRangeMutations)((0,n.handleInsertRow)({id:n.EffectRefRangId.InsertRowCommandId,params:{range:e,unitId:``,subUnitId:``,direction:t.Direction.DOWN}},r),r)}function ue(e,r){return(0,n.runRefRangeMutations)((0,n.handleInsertCol)({id:n.EffectRefRangId.InsertColCommandId,params:{range:e,unitId:``,subUnitId:``,direction:t.Direction.RIGHT}},r),r)}function de(e,t,r){return(0,n.runRefRangeMutations)((0,n.handleIRemoveRow)({id:n.EffectRefRangId.RemoveRowCommandId,params:{range:e}},t,r),t)}function fe(e,t){return(0,n.runRefRangeMutations)((0,n.handleIRemoveCol)({id:n.EffectRefRangId.RemoveColCommandId,params:{range:e}},t),t)}function pe(e,t){return(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveLeft)({id:n.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:e}},t),t)}function me(e,t){return(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveUp)({id:n.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:e}},t),t)}function he(e,t){return(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveDown)({id:n.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:e}},t),t)}function ge(e,t){return(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveRight)({id:n.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:e}},t),t)}function _e(e,n,r){let i=new t.ObjectMatrix({});for(let t=0;t<e.length;t++){var a,o;let{oldCell:s,newCell:c}=e[t];if((a=i.getValue(s.startRow,s.startColumn))!=null&&a.f||(o=i.getValue(s.startRow,s.startColumn))!=null&&o.si||i.setValue(s.startRow,s.startColumn,{f:null,si:null}),c){let e=N(r.getValue(s.startRow,s.startColumn)??n.getValue(s.startRow,s.startColumn));i.setValue(c.startRow,c.startColumn,e)}}return i.getMatrix()}function ve(e,n){let r=new t.ObjectMatrix({});for(let t=e.length-1;t>=0;t--){let{oldCell:i,newCell:a}=e[t],o=N(n.getValue(i.startRow,i.startColumn));if(r.setValue(i.startRow,i.startColumn,o),a){let e=N(n.getValue(a.startRow,a.startColumn));r.setValue(a.startRow,a.startColumn,e??{f:null,si:null})}}return r.getMatrix()}function N(e){if(e===void 0)return;if(e===null)return{f:null,si:null};let{f:n,si:r,x:i=0,y:a=0}=e,o=(0,t.isFormulaString)(n),s=(0,t.isFormulaId)(r);if(!o&&!s)return{f:null,si:null};let c={};return s&&(c.si=r),o&&i===0&&a===0&&(c.f=n),c.f===void 0&&(c.f=null),c.si===void 0&&(c.si=null),c}function ye(e,n){let r=new t.ObjectMatrix({});return new t.ObjectMatrix(e).forValue((e,t,i)=>{var a;let o=N(i);o!==void 0&&(n&&(a=n[e])!=null&&a[t]&&(o!=null&&o.f||o!=null&&o.si)&&(o.v=null,o.t=null),r.setValue(e,t,o))}),r.getMatrix()}function be(e){let n=(e==null?void 0:e.f)||``,r=(e==null?void 0:e.si)||``,i=(0,t.isFormulaString)(n),a=(0,t.isFormulaId)(r);return!!(i||a)}function xe(e,t,n,r,i,a){if((i==null||i.length===0)&&(a==null||a.length===0)){if(e===n&&t===r)return!0}else if((e===i||i==null||i.length===0)&&t===a)return!0;return!1}function P(e,n,i=0,a=0){let o=[];for(let s=0,c=e.length;s<c;s++){let c=e[s];if(typeof c==`string`||c.nodeType!==r.sequenceNodeType.REFERENCE||n.includes(s)){o.push(c);continue}let{token:l}=c,{range:u,sheetName:d,unitId:f}=(0,r.deserializeRangeWithSheetWithCache)(l),p=t.Rectangle.moveOffset(u,i,a);o.push({...c,token:(0,r.serializeRangeToRefString)({range:p,unitId:f,sheetName:d})})}return o}function Se(e,i,a,o,s={}){let{type:c,unitId:l,sheetId:u,targetUnitId:d,targetSheetId:f,targetSheetName:p,range:m,from:h,to:g,rangeFilteredRows:_}=i,{range:v,sheetId:y,unitId:b,sheetName:x,refOffsetX:S,refOffsetY:C}=e,{preserveSheetQualifier:w=!1,inCrossSheetCutRange:T=!1}=s;if(!xe(l,u,a,o,b,y))return;let E=t.Rectangle.moveOffset(v,S,C),D=null;if(c===0){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null||e!==4)return;let a=(0,n.runRefRangeMutations)((0,n.handleMoveRange)({id:n.EffectRefRangId.MoveRangeCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}else if(c===1){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null&&(h.endRow<E.startRow&&g.endRow<=E.startRow||h.startRow>E.endRow&&g.startRow>E.endRow))return;i??={startRow:E.startRow,endRow:E.endRow,startColumn:E.startColumn,endColumn:E.endColumn,rangeType:t.RANGE_TYPE.NORMAL};let a=(0,n.runRefRangeMutations)((0,n.handleMoveRows)({id:n.EffectRefRangId.MoveRowsCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}else if(c===2){if(h==null||g==null)return;let e=I(E,h),i=(0,t.getIntersectRange)(E,h);if(i==null&&(h.endColumn<E.startColumn&&g.endColumn<=E.startColumn||h.startColumn>E.endColumn&&g.startColumn>E.endColumn))return;i??={startRow:E.startRow,endRow:E.endRow,startColumn:E.startColumn,endColumn:E.endColumn,rangeType:t.RANGE_TYPE.NORMAL};let a=(0,n.runRefRangeMutations)((0,n.handleMoveCols)({id:n.EffectRefRangId.MoveColsCommandId,params:{toRange:g,fromRange:h}},i),i);if(a==null)return r.ErrorType.REF;D=F(e,a,h,g,E,i)}if(m!=null){if(c===3){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRow)({id:n.EffectRefRangId.InsertRowCommandId,params:{range:m,unitId:``,subUnitId:``,direction:t.Direction.DOWN}},E),E);if(e==null)return;D={...E,...e}}else if(c===4){let e=(0,n.runRefRangeMutations)((0,n.handleInsertCol)({id:n.EffectRefRangId.InsertColCommandId,params:{range:m,unitId:``,subUnitId:``,direction:t.Direction.RIGHT}},E),E);if(e==null)return;D={...E,...e}}else if(c===5){let e=(0,n.runRefRangeMutations)((0,n.handleIRemoveRow)({id:n.EffectRefRangId.RemoveRowCommandId,params:{range:m}},E,_),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===6){let e=(0,n.runRefRangeMutations)((0,n.handleIRemoveCol)({id:n.EffectRefRangId.RemoveColCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===7){let e=(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveLeft)({id:n.EffectRefRangId.DeleteRangeMoveLeftCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===8){let e=(0,n.runRefRangeMutations)((0,n.handleDeleteRangeMoveUp)({id:n.EffectRefRangId.DeleteRangeMoveUpCommandId,params:{range:m}},E),E);if(e==null)return r.ErrorType.REF;D={...E,...e}}else if(c===9){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveDown)({id:n.EffectRefRangId.InsertRangeMoveDownCommandId,params:{range:m}},E),E);if(e==null)return;D={...E,...e}}else if(c===10){let e=(0,n.runRefRangeMutations)((0,n.handleInsertRangeMoveRight)({id:n.EffectRefRangId.InsertRangeMoveRightCommandId,params:{range:m}},E),E);if(e==null)return;D={...E,...e}}}if(D==null)return;let O=c===0&&!!f&&f!==u&&!T,k=O?f:y,A=O&&p||x,j=O&&d||b,M=j==null||j.length===0||j===a;return(0,r.serializeRangeToRefString)({range:D,sheetName:w||!(M&&k===o)?A:``,unitId:M?``:j})}function F(e,n,r,i,a,o){let{startRow:s,endRow:c,startColumn:l,endColumn:u,rangeType:d}=z(n),{startRow:f,startColumn:p,endRow:m,endColumn:h,rangeType:g=t.RANGE_TYPE.NORMAL}=z(r),{startRow:_,startColumn:v,endRow:y,endColumn:b}=z(i),{startRow:x,endRow:S,startColumn:C,endColumn:w}=z(o),{startRow:T,endRow:E,startColumn:D,endColumn:O,rangeType:k=t.RANGE_TYPE.NORMAL}=z(a),A={...a};function j(){return d===t.RANGE_TYPE.COLUMN&&k===t.RANGE_TYPE.COLUMN||l>=D&&u<=O}function M(){return d===t.RANGE_TYPE.ROW&&k===t.RANGE_TYPE.ROW||s>=T&&c<=E}if(e===0)if(j())if(s<T)A.startRow=s;else if(s>=E)A.endRow-=m+1-T;else return;else return;else if(e===1)if(j())if(c>E)A.endRow=c;else if(c<=T)A.startRow+=E-f+1;else return;else return;else if(e===2)if(M())if(l<D)A.startColumn=l;else if(l>=O)A.endColumn-=h+1-D;else return;else return;else if(e===3)if(M())if(u>O)A.endColumn=u;else if(u<=D)A.startColumn+=O-p+1;else return;else return;else e===4?(A.startRow=s,A.startColumn=l,A.endRow=c,A.endColumn=u):p<=D&&h>=O||g===t.RANGE_TYPE.ROW&&k===t.RANGE_TYPE.ROW?r.endRow<T?(_>=T&&(A.startRow-=m-f+1),_>=E&&(A.endRow-=m-f+1)):r.startRow>E?(y<=E&&(A.endRow+=m-f+1),y<=T&&(A.startRow+=m-f+1)):r.startRow>=T&&r.endRow<=E&&(_<=T?A.startRow+=m-f+1:_>=E&&(A.endRow-=m-f+1)):f<=T&&m>=E||g===t.RANGE_TYPE.COLUMN&&k===t.RANGE_TYPE.COLUMN?r.endColumn<D?(v>=D&&(A.startColumn-=h-p+1),v>=O&&(A.endColumn-=h-p+1)):r.startColumn>O?(b<=O&&(A.endColumn+=h-p+1),b<=D&&(A.startColumn+=h-p+1)):r.startColumn>=D&&r.endColumn<=O&&(v<=D?A.startColumn+=h-p+1:v>=O&&(A.endColumn-=h-p+1)):((v<=w+1&&b>=O||v<=D&&b>=C-1)&&_<=T&&y>=E||_<=S+1&&y>=E||_<=T&&x-1,A.startRow=s,A.startColumn=l,A.endRow=c,A.endColumn=u);return A}function I(e,n){let r=L(e.startRow),i=R(e.endRow),a=L(e.startColumn),o=R(e.endColumn),s=L(n.startRow),c=R(n.endRow),l=L(n.startColumn),u=R(n.endColumn);function d(){return e.rangeType===t.RANGE_TYPE.COLUMN&&n.rangeType===t.RANGE_TYPE.COLUMN||r>=s&&i<=c}function f(){return e.rangeType===t.RANGE_TYPE.ROW&&n.rangeType===t.RANGE_TYPE.ROW||a>=l&&o<=u}function p(){return e.rangeType===t.RANGE_TYPE.ALL&&n.rangeType===t.RANGE_TYPE.ALL}return d()&&f()||p()?4:f()&&r>=s&&r<=c&&i>c?0:f()&&i>=s&&i<=c&&r<s?1:d()&&a>=l&&a<=u&&o>u?2:d()&&o>=l&&o<=u&&a<l?3:null}function L(e){return isNaN(e)?-1/0:e}function R(e){return isNaN(e)?1/0:e}function z(e){let{startRow:t,endRow:n,startColumn:r,endColumn:i}=e;return{...e,startRow:L(t),endRow:R(n),startColumn:L(r),endColumn:R(i)}}function Ce(e,t){let{id:r}=t,i=null;switch(r){case n.MoveRangeCommand.id:i=we(t,e);break;case n.MoveRowsCommand.id:i=Te(t,e);break;case n.MoveColsCommand.id:i=Ee(t,e);break;case n.InsertRowCommand.id:i=De(t);break;case n.InsertColCommand.id:i=Oe(t);break;case n.InsertRangeMoveRightCommand.id:i=ke(t,e);break;case n.InsertRangeMoveDownCommand.id:i=Ae(t,e);break;case n.RemoveRowCommand.id:i=je(t,e);break;case n.RemoveColCommand.id:i=Me(t);break;case n.DeleteRangeMoveUpCommand.id:i=Ne(t,e);break;case n.DeleteRangeMoveLeftCommand.id:i=Pe(t,e);break;case n.SetWorksheetNameCommand.id:i=Fe(t,e);break;case n.SetWorkbookNameCommand.id:i=Ie(t);break;case n.RemoveSheetCommand.id:i=Le(t,e);break;case n.SetDefinedNameCommand.id:i=Re(t,e);break;case n.RemoveDefinedNameCommand.id:i=ze(t,e);break;case`sheet.command.set-table-config`:i=Be(t,e);break;case`sheet.command.delete-table`:i=Ve(t,e);break;case`sheet.command.table-remove-column-at`:case`sheet.command.table-remove-col`:i=He(t,e);break}return i}function B(e){var t;return{unitId:e.getUnitId(),sheetId:((t=e.getActiveSheet())==null?void 0:t.getSheetId())||``}}function we(e,t){var n,r;let{params:i}=e;if(!i)return null;let{fromRange:a,toRange:o,fromUnitId:s,fromSubUnitId:c,toUnitId:l,toSubUnitId:u}=i;if(!a||!o)return null;let{unitId:d,sheetId:f}=B(t),p=s||l||d,m=c||f,h=(n=t.getSheetBySheetId(m))==null?void 0:n.getName(),g=u||c||f;return{type:0,from:a,to:o,unitId:p,sheetId:m,sheetName:h,targetUnitId:l||s||d,targetSheetId:g,targetSheetName:(r=t.getSheetBySheetId(g))==null?void 0:r.getName()}}function Te(e,n){let{params:r}=e;if(!r)return null;let{fromRange:{startRow:i,endRow:a},toRange:{startRow:o,endRow:s}}=r,c=n.getUnitId(),l=n.getActiveSheet();if(!l)return null;let u=l.getSheetId();return{type:1,from:{startRow:i,startColumn:0,endRow:a,endColumn:l.getColumnCount()-1,rangeType:t.RANGE_TYPE.ROW},to:{startRow:o,startColumn:0,endRow:s,endColumn:l.getColumnCount()-1,rangeType:t.RANGE_TYPE.ROW},unitId:c,sheetId:u}}function Ee(e,n){let{params:r}=e;if(!r)return null;let{fromRange:{startColumn:i,endColumn:a},toRange:{startColumn:o,endColumn:s}}=r,c=n.getUnitId(),l=n.getActiveSheet();if(!l)return null;let u=l.getSheetId();return{type:2,from:{startRow:0,startColumn:i,endRow:l.getRowCount()-1,endColumn:a,rangeType:t.RANGE_TYPE.COLUMN},to:{startRow:0,startColumn:o,endRow:l.getRowCount()-1,endColumn:s,rangeType:t.RANGE_TYPE.COLUMN},unitId:c,sheetId:u}}function De(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:3,range:n,unitId:r,sheetId:i}}function Oe(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:4,range:n,unitId:r,sheetId:i}}function ke(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:10,range:r,unitId:i,sheetId:a}}function Ae(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:9,range:r,unitId:i,sheetId:a}}function je(e,t){var n;let{params:r}=e;if(!r)return null;let{range:i,unitId:a,subUnitId:o}=r;return{type:5,range:i,unitId:a,sheetId:o,rangeFilteredRows:((n=t.getSheetBySheetId(o))==null?void 0:n.getRangeFilterRows(i))??[]}}function Me(e){let{params:t}=e;if(!t)return null;let{range:n,unitId:r,subUnitId:i}=t;return{type:6,range:n,unitId:r,sheetId:i}}function Ne(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:8,range:r,unitId:i,sheetId:a}}function Pe(e,t){let{params:n}=e;if(!n)return null;let{range:r}=n,{unitId:i,sheetId:a}=B(t);return{type:7,range:r,unitId:i,sheetId:a}}function Fe(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,subUnitId:i,name:a}=n,{unitId:o,sheetId:s}=B(t);return{type:11,unitId:r||o,sheetId:i||s,sheetName:a}}function Ie(e){let{params:t}=e;return t?{type:12,unitId:t.unitId,sheetId:``,unitName:t.name}:null}function Le(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,subUnitId:i}=n,{unitId:a,sheetId:o}=B(t);return{type:13,unitId:r||a,sheetId:i||o}}function Re(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,name:i,id:a}=n,{sheetId:o}=B(t);return{type:14,unitId:r,sheetId:o,definedName:i,definedNameId:a}}function ze(e,t){let{params:n}=e;if(!n)return null;let{unitId:r,name:i,id:a}=n,{sheetId:o}=B(t);return{type:15,unitId:r,sheetId:o,definedName:i,definedNameId:a}}function Be(e,t){let{params:n}=e;if(!n||!n.name||!n.oldTableName||n.oldTableName===n.name)return null;let{unitId:r,name:i,oldTableName:a}=n,{sheetId:o}=B(t);return{type:16,unitId:r,sheetId:o,tableName:i,oldTableName:a}}function Ve(e,t){let{params:n}=e;if(!n||!n.tableName)return null;let{unitId:r,tableName:i}=n,{sheetId:a}=B(t);return{type:17,unitId:r,sheetId:a,oldTableName:i}}function He(e,t){var n;let{params:r}=e;if(!r||!r.tableName||!((n=r.removedColumnNames)!=null&&n.length))return null;let{unitId:i,subUnitId:a,range:o,tableName:s,removedColumnNames:c}=r,{sheetId:l}=B(t);return{type:18,unitId:i,sheetId:a||l,range:o,oldTableName:s,tableColumnNames:c}}let V=class extends t.Disposable{constructor(e,t,n,r){super(),this._definedNamesService=e,this._univerInstanceService=t,this._sheetInterceptorService=n,this._lexerTreeBuilder=r,this._initialize()}_initialize(){this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===n.SetDefinedNameCommand.id||e.id===n.RemoveDefinedNameCommand.id)return{redos:[],undos:[]};let r=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(r==null)return{redos:[],undos:[]};let i=Ce(r,e);if(!i)return{redos:[],undos:[]};if(i.type===12){var a;i.oldUnitName=(a=this._univerInstanceService.getUnit(i.unitId,t.UniverInstanceType.UNIVER_SHEET))==null?void 0:a.name}return this._getUpdateDefinedNameMutations(r,i)}}))}_getUpdateDefinedNameMutations(e,t){let{type:n,unitId:i,sheetId:a}=t,o=this._definedNamesService.getDefinedNameMap(i);if(!o)return{redos:[],undos:[]};let s=[],c=[];return Object.values(o).forEach(o=>{let{formulaOrRefString:l}=o;if(n===12){let{oldUnitName:e,unitName:n}=t;if(!e||!n)return!0;let a=(0,r.refactorFormulaUnitQualifier)(l,e,n);return a===l?!0:(s.push({id:r.SetDefinedNameMutation.id,params:{unitId:i,...o,formulaOrRefString:a}}),c.push({id:r.SetDefinedNameMutation.id,params:{unitId:i,...o}}),!0)}let u=this._lexerTreeBuilder.sequenceNodesBuilder(l);if(u==null)return!0;let d=!1,f=[];for(let s=0,c=u.length;s<c;s++){var p;let c=u[s];if(typeof c==`string`||c.nodeType!==r.sequenceNodeType.REFERENCE)continue;let{token:l}=c,{range:m,sheetName:h,unitId:g}=(0,r.deserializeRangeWithSheetWithCache)(l),_=((p=e.getSheetBySheetName(h))==null?void 0:p.getSheetId())||``,v={range:m,sheetId:_,unitId:g,sheetName:h,refOffsetX:0,refOffsetY:0},y=null;if(n===13)y=this._removeSheet(o,i,a);else if(n===11){let{sheetId:e,sheetName:n}=t;if(n==null||_==null||_.length===0||e!==_)continue;y=(0,r.serializeRangeToRefString)({range:m,sheetName:n,unitId:g})}else y=Se(v,t,i,a,{preserveSheetQualifier:!0});y!=null&&(u[s]={...c,token:y},d=!0,f.push(s))}if(!d)return!0;let m=(0,r.generateStringWithSequence)(P(u,f)),h={id:r.SetDefinedNameMutation.id,params:{unitId:i,...o,formulaOrRefString:m}};s.push(h);let g={id:r.SetDefinedNameMutation.id,params:{unitId:i,...o}};c.push(g)}),{redos:s,undos:c}}_removeSheet(e,t,n){var i;let{formulaOrRefString:a}=e;return((i=this._definedNamesService.getWorksheetByRef(t,a))==null?void 0:i.getSheetId())===n?r.ErrorType.REF:null}};V=m([p(0,r.IDefinedNamesService),p(1,t.IUniverInstanceService),p(2,(0,t.Inject)(n.SheetInterceptorService)),p(3,(0,t.Inject)(r.LexerTreeBuilder))],V);let H=class extends t.Disposable{constructor(e,t,n,r,i,a,o,s){super(),this._univerInstanceService=e,this._commandService=t,this._lexerTreeBuilder=n,this._formulaDataModel=r,this._sheetInterceptorService=i,this._definedNamesService=a,this._configService=o,this._injector=s,this._commandExecutedListener()}_commandExecutedListener(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>this._getUpdateFormula(e)})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.params)if(e.id===n.RemoveSheetMutation.id){let{subUnitId:t,unitId:n}=e.params;this._handleWorkbookDisposed(n,t)}else e.id===n.InsertSheetMutation.id&&this._handleInsertSheetMutation(e.params)})),this.disposeWithMe(this._commandService.beforeCommandExecuted((e,t)=>{if(e.id===n.SetRangeValuesMutation.id){let n=e.params;if(Ue(n,t))return;this._handleSetRangeValuesMutation(n)}})),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitAdded$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>this._handleWorkbookAdded(e.unit))),this.disposeWithMe(this._univerInstanceService.getTypeOfUnitDisposed$(t.UniverInstanceType.UNIVER_SHEET).pipe((0,a.map)(e=>e.getUnitId())).subscribe(e=>this._handleWorkbookDisposed(e)))}_handleSetRangeValuesMutation(e){let{subUnitId:t,unitId:i,cellValue:a}=e;if(a==null)return;let o=this._formulaDataModel.updateFormulaData(i,t,a),s=this._formulaDataModel.updateArrayFormulaCellData(i,t,a),c=this._formulaDataModel.updateArrayFormulaRange(i,t,a);if(Object.keys(o).length===0){(s||c)&&this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:this._formulaDataModel.getArrayFormulaRange(),arrayFormulaCellData:this._formulaDataModel.getArrayFormulaCellData()},{onlyLocal:!0,remove:!0});return}let l={[i]:{[t]:o}};this._commandService.executeCommand(n.SetRangeValuesMutation.id,{unitId:i,subUnitId:t,cellValue:ye(o,a)},{onlyLocal:!0,fromFormula:!0}),this._formulaDataModel.updateImageFormulaData(i,t,a),this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:l},{onlyLocal:!0}),this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:this._formulaDataModel.getArrayFormulaRange(),arrayFormulaCellData:this._formulaDataModel.getArrayFormulaCellData()},{onlyLocal:!0,remove:!0})}_handleWorkbookDisposed(e,t){let n=k(this._formulaDataModel.getFormulaData(),e,t),i=this._formulaDataModel.getArrayFormulaRange(),a=k(i,e,t),o=this._formulaDataModel.getArrayFormulaCellData(),s=k(o,e,t);n&&this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:n},{onlyLocal:!0}),a&&s&&this._commandService.executeCommand(r.SetArrayFormulaDataMutation.id,{arrayFormulaRange:i,arrayFormulaCellData:o},{onlyLocal:!0})}_handleInsertSheetMutation(e){let{sheet:n,unitId:i}=e,a=this._formulaDataModel.getFormulaData(),{id:o,cellData:s}=n,c=(0,r.initSheetFormulaData)(a,i,o,new t.ObjectMatrix(s));this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:c},{onlyLocal:!0})}_handleWorkbookAdded(e){let t={},n=e.getUnitId(),i={[n]:{}};e.getSheets().forEach(e=>{var a;let o=e.getCellMatrix(),s=e.getSheetId(),c=(0,r.initSheetFormulaData)(t,n,s,o);i[n][s]=(a=c[n])==null?void 0:a[s]}),this._commandService.executeCommand(r.SetFormulaDataMutation.id,{formulaData:i},{onlyLocal:!0});let a=this._configService.getConfig(l),o=(a==null?void 0:a.initialFormulaComputing)??1,s=this._getDirtyDataByCalculationMode(o);this._commandService.executeCommand(r.SetTriggerFormulaCalculationStartMutation.id,s,{onlyLocal:!0})}_getDirtyDataByCalculationMode(e){return{forceCalculation:e===0,dirtyRanges:e===1?this._formulaDataModel.getFormulaDirtyRanges():[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},dirtyUnitOtherFormulaMap:{},clearDependencyTreeCache:{}}}_getUpdateFormula(e){let n=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(!n)return{undos:[],redos:[]};let r=Ce(n,e);if(r){let{unitNameMap:e,unitSheetNameMap:t}=this._formulaDataModel.getCalculateData();if(r.type===12){var i;r.oldUnitName=e==null||(i=e[r.unitId])==null?void 0:i.name}let n=this._formulaDataModel.getFormulaData(),{newFormulaData:a}=this._getFormulaReferenceMoveInfo(n,t,r),{undos:o,redos:s}=j(n,a,r);return{undos:o,redos:s}}return{undos:[],redos:[]}}_getFormulaReferenceMoveInfo(e,n,i){if(!t.Tools.isDefine(e))return{newFormulaData:{}};let a=Object.keys(e);if(a.length===0)return{newFormulaData:{}};let o={},{unitId:s,sheetId:c,sheetName:l,targetUnitId:u,targetSheetId:d,type:f,from:p,to:m}=i,h=[];for(let m of a){let a=e[m];if(a==null)continue;let g=Object.keys(a);t.Tools.isDefine(o[m])||(o[m]={});for(let e of g){let g=new t.ObjectMatrix(a[e]||{}),_=new t.ObjectMatrix,v=[];g.forValue((a,o,g)=>{if(!g)return!0;let{f:y,x:b,y:x,si:S}=g;if(f===12){let{oldUnitName:e,unitName:t}=i;if(!e||!t)return!0;let n=(0,r.refactorFormulaUnitQualifier)(y,e,t);return n!==y&&_.setValue(a,o,{f:n}),!0}let C=this._lexerTreeBuilder.sequenceNodesBuilder(y);if(C==null)return!0;let w=!1,T=[],E=f===0&&(u!==s||d!==c)&&m===s&&e===c&&p&&p.startRow<=a&&a<=p.endRow&&p.startColumn<=o&&o<=p.endColumn,D=[...C];for(let a=0,o=C.length;a<o;a++){var O;let o=C[a];if(typeof o==`string`)continue;let{token:d,nodeType:p}=o;if((f===14||f===15)&&(p===r.sequenceNodeType.DEFINED_NAME||p===r.sequenceNodeType.FUNCTION)){let{definedNameId:e,definedName:t}=i;if(e===void 0||t===void 0)continue;let n=this._definedNamesService.getValueById(m,e);if(n==null||n.name!==d)continue;C[a]={...o,token:f===14?t:r.ErrorType.REF},w=!0,T.push(a);continue}else if((f===16||f===17||f===18)&&(p===r.sequenceNodeType.TABLE||p===r.sequenceNodeType.FUNCTION)){let{oldTableName:e,tableName:t,tableColumnNames:n}=i;if(e===void 0||f===16&&t===void 0)continue;let{tableName:s,columnStruct:c=``}=(0,r.splitTableStructuredRef)(d);if(s!==e||f===18&&!Ge(c,n))continue;C[a]={...o,token:f===16?`${t}${c}`:r.ErrorType.REF};let l=C[a+1];(f===17||f===18)&&typeof l==`string`&&l.startsWith(`]`)&&(C[a+1]=l.slice(1)),w=!0,T.push(a);continue}else if(p!==r.sequenceNodeType.REFERENCE)continue;let{range:h,sheetName:g,unitId:_}=(0,r.deserializeRangeWithSheetWithCache)(d),y=_==null||_.length===0?m:_,k=(n==null||(O=n[y])==null?void 0:O[g])||``;if(!xe(i.unitId,i.sheetId,m,e,_,k))continue;let A={range:h,sheetId:k,unitId:_,sheetName:g,refOffsetX:b||0,refOffsetY:x||0},j=null;if(f===11){let{unitId:e,sheetId:t,sheetName:n}=i;if(n==null||k==null||k.length===0||t!==k)continue;j=(0,r.serializeRangeToRefString)({range:h,sheetName:n,unitId:_})}else if(f===13){let{unitId:e,sheetId:t,sheetName:n}=i;if(k==null||k.length===0||t!==k)continue;j=r.ErrorType.REF}else f!==14&&(j=Se(A,i,m,e,{inCrossSheetCutRange:E}));if(j!=null&&(C[a]={...o,token:j},w=!0,T.push(a),S&&(b??0)===0&&(x??0)===0&&v.push(S)),E){if(j!=null)D[a]={...o,token:j};else if((!_||_===s)&&(!k||k===c)){let e=t.Rectangle.moveOffset(h,b||0,x||0);D[a]={...o,token:(0,r.serializeRangeToRefString)({range:e,sheetName:l||g,unitId:u===s?``:s})},w=!0}}}if(!w)if(S&&[1,2,0].includes(f)){if(p&&p.startRow<=a&&a<=p.endRow&&p.startColumn<=o&&o<=p.endColumn)(b??0)===0&&(x??0)===0&&v.push(S);else if(!v.includes(S))return!0}else return!0;if(E){let e=P(D,T,b,x);return h.push({fromRow:a,fromColumn:o,formulaString:`=${(0,r.generateStringWithSequence)(e)}`}),!0}let k=P(C,T,b,x);_.setValue(a,o,{f:`=${(0,r.generateStringWithSequence)(k)}`})}),o[m]&&(o[m][e]=_.clone())}}if(h.length>0&&u&&d){o[u]||(o[u]={}),o[u][d]||(o[u][d]={});for(let e of h){let{fromRow:t,fromColumn:n,formulaString:r}=e,i=t+(((m==null?void 0:m.startRow)??0)-((p==null?void 0:p.startRow)??0)),a=n+(((m==null?void 0:m.startColumn)??0)-((p==null?void 0:p.startColumn)??0));o[u][d][i]||(o[u][d][i]={}),o[u][d][i][a]={f:r}}}return{newFormulaData:o}}};H=m([p(0,t.IUniverInstanceService),p(1,t.ICommandService),p(2,(0,t.Inject)(r.LexerTreeBuilder)),p(3,(0,t.Inject)(r.FormulaDataModel)),p(4,(0,t.Inject)(n.SheetInterceptorService)),p(5,r.IDefinedNamesService),p(6,t.IConfigService),p(7,(0,t.Inject)(t.Injector))],H);function Ue(e,t){if(t&&(t.onlyLocal===!0||t.syncOnly===!0||t.fromChangeset===!0))return!0;let{cellValue:r,trigger:i}=e;return i&&[n.SetStyleCommand.id,n.SetBorderCommand.id,n.ClearSelectionFormatCommand.id,n.SetRangeCustomMetadataCommand.id].includes(i)||!r?!0:We(r)}function We(e){let n=new t.ObjectMatrix(e),r=!1,i=!0;return n.forValue((e,t,n)=>{if(r=!0,!n)return i=!1,!1;let a=Object.keys(n);if(a.length!==1||a[0]!==`s`)return i=!1,!1}),r&&i}function Ge(e,t){if(!(t!=null&&t.length)||e.length===0)return!1;let n=new Set(t),r=(e.endsWith(`]`)?e:`${e}]`).matchAll(/\[([^\]]+)\]/g);for(let e of r){let t=e[1].replace(/^\[/,``).trim();if(!t.startsWith(`#`)&&n.has(t))return!0}return!1}var Ke=`@univerjs/sheets-formula`,qe=`1.0.0-beta.0`;let U=class extends t.Disposable{constructor(e,t,n){super(),this._activeDirtyManagerService=e,this._univerInstanceService=t,this._formulaDataModel=n,this._initialize()}_initialize(){this._initialConversion()}_initialConversion(){this._activeDirtyManagerService.register(n.SetRangeValuesMutation.id,{commandId:n.SetRangeValuesMutation.id,shouldTrigger:(e,t)=>{let r=e.params;return!(t!=null&&t.onlyLocal)&&r.trigger!==n.SetStyleCommand.id&&r.trigger!==n.SetBorderCommand.id&&r.trigger!==n.ClearSelectionFormatCommand.id},getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getSetRangeValuesMutationDirtyRange(t)}}}),this._initialMove(),this._initialRowAndColumn(),this._initialHideRow(),this._initialSheet(),this._initialDefinedName()}_initialMove(){this._activeDirtyManagerService.register(n.MoveRangeMutation.id,{commandId:n.MoveRangeMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.to.subUnitId]:`1`,[t.from.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.MoveRowsMutation.id,{commandId:n.MoveRowsMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.MoveColsMutation.id,{commandId:n.MoveColsMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getMoveRowsMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.ReorderRangeMutation.id,{commandId:n.ReorderRangeMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getReorderRangeMutationDirtyRange(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialRowAndColumn(){this._activeDirtyManagerService.register(n.RemoveRowMutation.id,{commandId:n.RemoveRowMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!0),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.RemoveColMutation.id,{commandId:n.RemoveColMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getRemoveRowOrColumnMutation(t,!1),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertColMutation.id,{commandId:n.InsertColMutation.id,getDirtyData:e=>{let t=e.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertRowMutation.id,{commandId:n.InsertRowMutation.id,getDirtyData:e=>{let t=e.params;return{clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialHideRow(){this._activeDirtyManagerService.register(n.SetRowHiddenMutation.id,{commandId:n.SetRowHiddenMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.SetRowVisibleMutation.id,{commandId:n.SetRowVisibleMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyRanges:this._getHideRowMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}})}_initialSheet(){this._activeDirtyManagerService.register(n.RemoveSheetMutation.id,{commandId:n.RemoveSheetMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyNameMap:this._getRemoveSheetMutation(t),clearDependencyTreeCache:{[t.unitId]:{[t.subUnitId]:`1`}}}}}),this._activeDirtyManagerService.register(n.InsertSheetMutation.id,{commandId:n.InsertSheetMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyNameMap:this._getInsertSheetMutation(t)}}})}_initialDefinedName(){this._activeDirtyManagerService.register(r.SetDefinedNameMutation.id,{commandId:r.SetDefinedNameMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}}),this._activeDirtyManagerService.register(r.RemoveDefinedNameMutation.id,{commandId:r.RemoveDefinedNameMutation.id,getDirtyData:e=>{let t=e.params;return{dirtyDefinedNameMap:this._getDefinedNameMutation(t)}}})}_getDefinedNameMutation(e){if(e==null)return{};let{unitId:t,name:n,formulaOrRefString:r}=e;return{[t]:{[n]:r}}}_getSetRangeValuesMutationDirtyRange(e){let{subUnitId:t,unitId:n,cellValue:r}=e,i=[];return r==null?i:(i.push(...this._getDirtyRangesByCellValue(n,t,r)),i.push(...this._getDirtyRangesForArrayFormula(n,t,r)),i)}_getMoveRangeMutationDirtyRange(e){let{unitId:t,from:n,to:r}=e,i=[];return i.push(...this._getDirtyRangesByCellValue(t,n.subUnitId,n.value)),i.push(...this._getDirtyRangesByCellValue(t,r.subUnitId,r.value)),i.push(...this._getDirtyRangesForArrayFormula(t,r.subUnitId,r.value)),i}_getMoveRowsMutationDirtyRange(e){let{subUnitId:t,unitId:n,sourceRange:r,targetRange:i}=e,a=[],o=this._rangeToMatrix(r).clone(),s=this._rangeToMatrix(i).clone();return a.push(...this._getDirtyRangesByCellValue(n,t,o)),a.push(...this._getDirtyRangesByCellValue(n,t,s)),a.push(...this._getDirtyRangesForArrayFormula(n,t,s)),a}_getReorderRangeMutationDirtyRange(e){let{unitId:t,subUnitId:n,range:r}=e,i=this._rangeToMatrix(r).clone(),a=[];return a.push(...this._getDirtyRangesByCellValue(t,n,i)),a.push(...this._getDirtyRangesForArrayFormula(t,n,i)),a}_getRemoveRowOrColumnMutation(e,n=!0){let{subUnitId:r,unitId:i,range:a}=e,o=[],s=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_SHEET),c=s==null?void 0:s.getSheetBySheetId(r),l=(c==null?void 0:c.getRowCount())||0,u=(c==null?void 0:c.getColumnCount())||0,d=null,{startRow:f,endRow:p,startColumn:m,endColumn:h}=a;d=n===!0?this._rangeToMatrix({startRow:f,startColumn:0,endRow:p,endColumn:u-1}):this._rangeToMatrix({startRow:0,startColumn:m,endRow:l,endColumn:h});let g=d.clone();return o.push(...this._getDirtyRangesByCellValue(i,r,g)),o.push(...this._getDirtyRangesForArrayFormula(i,r,g)),o}_getHideRowMutation(e){let{subUnitId:t,unitId:n,ranges:r}=e,i=[];return r.forEach(e=>{let r=this._rangeToMatrix(e).getMatrix();i.push(...this._getDirtyRangesByCellValue(n,t,r))}),i}_getRemoveSheetMutation(e){let t={},{subUnitId:n,unitId:r,subUnitName:i}=e;return t[r]??(t[r]={}),t[r][n]=i,t}_getInsertSheetMutation(e){let t={},{sheet:n,unitId:r}=e;return t[r]??(t[r]={}),t[r][n.id]=n.name,t}_rangeToMatrix(e){let n=new t.ObjectMatrix,{startRow:r,startColumn:i,endRow:a,endColumn:o}=e;for(let e=r;e<=a;e++)for(let t=i;t<=o;t++)n.setValue(e,t,{});return n}_getDirtyRangesByCellValue(e,n,r){let i=[];return r==null||new t.ObjectMatrix(r).getDiscreteRanges().forEach(t=>{i.push({unitId:e,sheetId:n,range:t})}),i}_getDirtyRangesForArrayFormula(e,n,r){var i;let a=[];if(r==null)return a;let o=new t.ObjectMatrix(r),s=this._formulaDataModel.getArrayFormulaRange();if(s!=null&&(i=s[e])!=null&&i[n]){var c;let r=new t.ObjectMatrix(s==null||(c=s[e])==null?void 0:c[n]);o.forValue((t,i)=>{r.forValue((r,o,s)=>{if(s==null)return!0;let{startRow:c,startColumn:l,endRow:u,endColumn:d}=s;t>=c&&t<=u&&i>=l&&i<=d&&a.push({unitId:e,sheetId:n,range:{startRow:c,startColumn:l,endRow:c,endColumn:l}})})})}return a}};U=m([p(0,r.IActiveDirtyManagerService),p(1,t.IUniverInstanceService),p(2,(0,t.Inject)(r.FormulaDataModel))],U);let W=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._sheetInterceptorService=t,this._formulaDataModel=n,this._initialize()}_initialize(){this._commandExecutedListener(),this._initInterceptorCellContent()}_commandExecutedListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.SetArrayFormulaDataMutation.id){let t=e.params;if(t==null)return;let{arrayFormulaRange:n,arrayFormulaCellData:r}=t;this._formulaDataModel.setArrayFormulaRange(n),this._formulaDataModel.setArrayFormulaCellData(r)}}))}_initInterceptorCellContent(){this.disposeWithMe(this._sheetInterceptorService.intercept(n.INTERCEPTOR_POINT.CELL_CONTENT,{priority:100,effect:t.InterceptorEffectEnum.Value,handler:(e,n,i)=>{var a;let o=e,{unitId:s,subUnitId:c,row:l,col:u}=n,d=this._formulaDataModel.getArrayFormulaCellData(),f=d==null||(a=d[s])==null||(a=a[c])==null||(a=a[l])==null?void 0:a[u];return f==null?i(o):((!o||o===n.rawData)&&(o={...n.rawData}),f.v==null&&f.t==null?(o.v=0,o.t=t.CellValueType.NUMBER,i(o)):(o==null?void 0:o.t)===t.CellValueType.NUMBER&&o.v!==void 0&&o.v!==null&&(0,t.isRealNum)(o.v)?(o.v=(0,r.stripErrorMargin)(Number(o.v)),i(o)):(o.v=f.v,o.t=f.t,i(o)))}}))}};W=m([p(0,t.ICommandService),p(1,(0,t.Inject)(n.SheetInterceptorService)),p(2,(0,t.Inject)(r.FormulaDataModel))],W);let G=class extends t.Disposable{constructor(e,t,n,r){super(),this._descriptionService=e,this._definedNamesService=t,this._univerInstanceService=n,this._commandService=r,x(this,`_preUnitId`,null),this._initialize()}_initialize(){this._descriptionListener(),this._changeUnitListener(),this._changeSheetListener()}_descriptionListener(){this.disposeWithMe((0,t.toDisposable)(this._definedNamesService.update$.subscribe(e=>{this._updateDescriptions(e)})))}_changeUnitListener(){this.disposeWithMe((0,t.toDisposable)(this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{this._unRegisterDescriptions(),e&&this._initRegisterDescriptions(e.getUnitId())})))}_changeSheetListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(!(t!=null&&t.fromCollab)){if(e.id===n.SetWorksheetActiveOperation.id){let t=e.params;this._unregisterDescriptionsForNotInSheetId(t.unitId,t.subUnitId),this._initRegisterDescriptions(t.unitId,t.subUnitId)}else if(e.id===r.SetDefinedNameMutation.id){let t=e.params;this._registerDescription(t)}else if(e.id===r.RemoveDefinedNameMutation.id){let t=e.params;this._unregisterDescription(t)}}}))}_updateDescriptions(e){let t=(0,n.getSheetCommandTarget)(this._univerInstanceService);if(!t)return;let{unitId:i,subUnitId:a}=t,{type:o,unitId:s,definedNames:c}=e;if(s===i){if(o===`update`){let e=[];c.forEach(t=>{let{name:i,comment:o,formulaOrRefString:s,localSheetId:c}=t;(c==null||c===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||c===a)&&e.push({functionName:i,description:s+(o||``),abstract:s,functionType:r.FunctionType.DefinedName,functionParameter:[]})}),this._descriptionService.registerDescriptions(e)}else if(o===`remove`){let e=[];c.forEach(t=>{e.push(t.name)}),this._descriptionService.unregisterDescriptions(e)}}}_registerDescription(e){let t=(0,n.getSheetCommandTarget)(this._univerInstanceService,e);if(!t)return;let{subUnitId:i}=t,{name:a,comment:o,formulaOrRefString:s,localSheetId:c}=e;this._descriptionService.hasDescription(a)||(c==null||c===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||c===i)&&this._descriptionService.registerDescriptions([{functionName:a,description:s+(o||``),abstract:s,functionType:r.FunctionType.DefinedName,functionParameter:[]}])}_unregisterDescription(e){let{name:t}=e;this._descriptionService.unregisterDescriptions([t])}_unRegisterDescriptions(){if(this._preUnitId===null)return;let e=this._definedNamesService.getDefinedNameMap(this._preUnitId);if(!e)return;let t=[];Object.values(e).forEach(e=>{let{name:n}=e;t.push(n)}),this._descriptionService.unregisterDescriptions(t),this._preUnitId=null}_initRegisterDescriptions(e,t){let i=(0,n.getSheetCommandTarget)(this._univerInstanceService,{unitId:e,subUnitId:t});if(!i)return;let{unitId:a,subUnitId:o}=i,s=this._definedNamesService.getDefinedNameMap(a);if(!s)return;let c=[];this._preUnitId=a,Object.values(s).forEach(e=>{let{name:t,comment:i,formulaOrRefString:a,localSheetId:s}=e;this._descriptionService.hasDescription(t)||(s==null||s===n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME||s===o)&&c.push({functionName:t,description:a+(i||``),abstract:a,functionType:r.FunctionType.DefinedName,functionParameter:[]})}),this._descriptionService.registerDescriptions(c)}_unregisterDescriptionsForNotInSheetId(e,t){let r=this._definedNamesService.getDefinedNameMap(e);if(!r)return;let i=[];Object.values(r).forEach(e=>{let{name:r,localSheetId:a}=e;a!==n.SCOPE_WORKBOOK_VALUE_DEFINED_NAME&&a!==t&&i.push(r)}),this._descriptionService.unregisterDescriptions(i)}};G=m([p(0,r.IDescriptionService),p(1,r.IDefinedNamesService),p(2,t.IUniverInstanceService),p(3,t.ICommandService)],G);let K=class extends t.Disposable{constructor(e){super(),this._commandService=e,[s,c].forEach(e=>this._commandService.registerCommand(e))}};K=m([p(0,t.ICommandService)],K);let q=class extends t.Disposable{constructor(e,t){super(),this._commandService=e,this._sessionService=t,this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{e.id===n.SetRangeValuesMutation.id&&t!=null&&t.applyFormulaCalculationResult&&this._sessionService.markResultApplied(r.FormulaResultApplicationType.SHEET)}))}};q=m([p(0,t.ICommandService),p(1,(0,t.Inject)(r.FormulaCalculationSessionService))],q);let J=class extends t.Disposable{constructor(e,t,n,r){super(),this._descriptionService=e,this._univerInstanceService=t,this._commandService=n,this._superTableService=r,x(this,`_preUnitId`,null),this._initialize()}_initialize(){this._descriptionListener(),this._changeUnitListener(),this._changeSheetListener()}_descriptionListener(){(0,t.toDisposable)(this._superTableService.update$.subscribe(()=>{this._registerDescriptions()}))}_changeUnitListener(){(0,t.toDisposable)(this._univerInstanceService.getCurrentTypeOfUnit$(t.UniverInstanceType.UNIVER_SHEET).subscribe(e=>{this._unRegisterDescriptions(),e&&this._registerDescriptions()}))}_changeSheetListener(){this.disposeWithMe(this._commandService.onCommandExecuted((e,t)=>{if(!(t!=null&&t.fromCollab)){if(e.id===n.SetWorksheetActiveOperation.id)this._unregisterDescriptionsForNotInSheetId(),this._registerDescriptions();else if(e.id===r.SetSuperTableMutation.id){let t=e.params;this._registerDescription(t)}else if(e.id===r.RemoveSuperTableMutation.id){let t=e.params;this._unregisterDescription(t)}}}))}_registerDescription(e){let t=this._getUnitIdAndSheetId(e);if(!t)return;let{unitId:n}=t,{tableName:i,reference:a}=e;if(!this._descriptionService.hasDescription(i)){var o;let e=(0,r.serializeRangeWithSheet)(((o=this._univerInstanceService.getUnit(n))==null||(o=o.getSheetBySheetId(a.sheetId))==null?void 0:o.getName())||``,a.range);this._descriptionService.registerDescriptions([{functionName:i,description:e,abstract:e,functionType:r.FunctionType.Table,functionParameter:[]}])}}_unregisterDescription(e){let{tableName:t}=e;this._descriptionService.unregisterDescriptions([t])}_unRegisterDescriptions(){if(this._preUnitId==null)return;let e=this._superTableService.getTableMap(this._preUnitId);if(e==null)return;let t=[];e.forEach((e,n)=>{t.push(n)}),this._descriptionService.unregisterDescriptions(t),this._preUnitId=null}_getUnitIdAndSheetId(e={}){let{unitId:n,subUnitId:r}=e,i=n?this._univerInstanceService.getUnit(n,t.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET);if(!i)return null;let a=r?i.getSheetBySheetId(r):i.getActiveSheet(!0);return a?{unitId:i.getUnitId(),sheetId:a.getSheetId()}:null}_registerDescriptions(){let e=this._getUnitIdAndSheetId();if(!e)return;let{unitId:t}=e,n=this._superTableService.getTableMap(t);if(!n)return;let i=[];this._preUnitId=t,n.forEach((e,n)=>{var a;let o=(0,r.serializeRangeWithSheet)(((a=this._univerInstanceService.getUnit(t))==null||(a=a.getSheetBySheetId(e.sheetId))==null?void 0:a.getName())||``,e.range);this._descriptionService.hasDescription(n)||i.push({functionName:n,description:o,abstract:o,functionType:r.FunctionType.Table,functionParameter:[]})}),this._descriptionService.registerDescriptions(i)}_unregisterDescriptionsForNotInSheetId(){let e=this._getUnitIdAndSheetId();if(!e)return;let{unitId:t}=e,n=this._superTableService.getTableMap(t);if(!n)return;let r=[];n.forEach((e,t)=>{r.push(t)}),this._descriptionService.unregisterDescriptions(r)}};J=m([p(0,r.IDescriptionService),p(1,t.IUniverInstanceService),p(2,t.ICommandService),p(3,r.ISuperTableService)],J);function Je(e,n,i,a){let o=e.sequenceNodesBuilder(n);if(o==null)return n;let s=[];for(let e=0,n=o.length;e<n;e++){let n=o[e];if(typeof n==`string`||n.nodeType!==r.sequenceNodeType.REFERENCE)continue;let{token:c}=n,l=(0,r.deserializeRangeWithSheetWithCache)(c),{sheetName:u,unitId:d}=l,f=l.range;(f.startAbsoluteRefType!==t.AbsoluteRefType.ALL||f.endAbsoluteRefType!==t.AbsoluteRefType.ALL)&&(f=(0,t.moveRangeByOffset)(f,i,a),s.push({unitId:d,sheetName:u,range:f}))}return s.map(e=>`${e.unitId}!${e.sheetName}!${e.range.startRow}!${e.range.endRow}!${e.range.startColumn}!${e.range.endColumn}`).join(`|`)}let Y=class extends t.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._lexerTreeBuilder=t,this._univerInstanceService=n,this._injector=r}transformFormulaByEffectCommand(e,i,a,o){let s=this._lexerTreeBuilder.sequenceNodesBuilder(a),c=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),l=c.getActiveSheet(),u=c.getUnitId(),d=l.getSheetId(),f=s==null?void 0:s.map(a=>{if(typeof a==`object`&&a.nodeType===r.sequenceNodeType.REFERENCE){let{range:s,unitId:c,sheetName:l}=(0,r.deserializeRangeWithSheetWithCache)(a.token),f=this._univerInstanceService.getUnit(c||e),p=l?f==null?void 0:f.getSheetBySheetName(l):f==null?void 0:f.getSheetBySheetId(i);if(!p)throw Error(`Sheet not found`);let m=f.getUnitId(),h=p.getSheetId();if(m!==u||h!==d)return a;let g=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(s,o),_=``;if(g){let e=(0,t.moveRangeByOffset)(s,g.startColumn-s.startColumn,g.startRow-s.startRow);_=c&&l?(0,r.serializeRangeWithSpreadsheet)(c,l,e):l?(0,r.serializeRangeWithSheet)(l,e):(0,r.serializeRange)(e)}else _=r.ErrorType.REF;return{...a,token:_}}else return a});return f?`=${(0,r.generateStringWithSequence)(f)}`:``}registerFormula(e,i,a,o){let s=new Map,c=this._lexerTreeBuilder.sequenceNodesBuilder(a),l=new t.DisposableCollection,u=e=>{let i=this._univerInstanceService.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_SHEET),a=i.getActiveSheet(),l=i.getUnitId(),u=a.getSheetId(),d=c==null?void 0:c.map(i=>{if(typeof i==`object`&&i.nodeType===r.sequenceNodeType.REFERENCE){let a=s.get(i.token);if(a.unitId!==l||a.subUnitId!==u)return i;let o=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(a.range,e),c=``;if(o){let e=o.startColumn-a.range.startColumn,n=o.startRow-a.range.startRow,i=(0,t.moveRangeByOffset)(a.range,e,n);c=a.unitId&&a.sheetName?(0,r.serializeRangeWithSpreadsheet)(a.unitId,a.sheetName,i):a.sheetName?(0,r.serializeRangeWithSheet)(a.sheetName,i):(0,r.serializeRange)(i)}else c=r.ErrorType.REF;return{...i,token:c}}else return i});return o(`=${d&&(0,r.generateStringWithSequence)(d)}`)};return c==null||c.forEach(t=>{if(typeof t==`object`&&t.nodeType===r.sequenceNodeType.REFERENCE){let{range:n,unitId:a,sheetName:o}=(0,r.deserializeRangeWithSheetWithCache)(t.token),c=this._univerInstanceService.getUnit(a||e),d=o?c==null?void 0:c.getSheetBySheetName(o):c==null?void 0:c.getSheetBySheetId(i);if(!d)return;let f=c.getUnitId(),p=d.getSheetId(),m={unitId:f,subUnitId:p,range:n,sheetName:o};s.set(t.token,m),l.add(this._refRangeService.registerRefRange(n,u,f,p))}}),l}_getFormulaDependcy(e,n,i,a){let o=(0,t.isFormulaString)(i)?this._lexerTreeBuilder.sequenceNodesBuilder(i):null,s=[];return o==null||o.forEach(i=>{if(typeof i==`object`&&i.nodeType===r.sequenceNodeType.REFERENCE){let{range:o,unitId:c,sheetName:l}=(0,r.deserializeRangeWithSheetWithCache)(i.token);if(o.startAbsoluteRefType===t.AbsoluteRefType.ALL&&o.endAbsoluteRefType===t.AbsoluteRefType.ALL)return;let u=this._univerInstanceService.getUnit(c||e),d=l?u==null?void 0:u.getSheetBySheetName(l):u==null?void 0:u.getSheetBySheetId(n);if(!d)return;let f=u.getUnitId(),p=d.getSheetId(),m=a[0].startRow,h=a[0].startColumn,g=o.startRow,_=o.startColumn,v=a.map(e=>({startRow:e.startRow-m+g,endRow:e.endRow-m+g,startColumn:e.startColumn-h+_,endColumn:e.endColumn-h+_}));s.push({unitId:f,subUnitId:p,ranges:v})}}),s}registerRangeFormula(e,r,i,a,o){let s=new t.DisposableCollection,c=a.map(t=>this._getFormulaDependcy(e,r,t,i)),l=s=>{let l=(0,n.getSeparateEffectedRangesOnCommand)(this._injector,s);if(!l)return{undos:[],redos:[]};let u=i[0].startRow,d=i[0].startColumn,f=[{unitId:e,subUnitId:r,ranges:i},...c.flat()],p=[];for(let{unitId:e,subUnitId:n,ranges:r}of f)if(e===l.unitId&&n===l.subUnitId){let e=[],n=r[0].startRow,i=r[0].startColumn,a=n-u,o=i-d;for(let n of l.ranges){let i=[];for(let e of r){let r=(0,t.getIntersectRange)(n,e);r&&i.push(r)}i.length>0&&e.push(...i)}e.length>0&&p.push(e.map(e=>({startRow:e.startRow-a,endRow:e.endRow-a,startColumn:e.startColumn-o,endColumn:e.endColumn-o})))}if(p.length>0){let c=t.Rectangle.splitIntoGrid([...p.flat()]),l=t.Rectangle.subtractMulti(i,c);l.sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn);let f=new Map;for(let i=0;i<c.length;i++){let o=c[i],l=o.startRow,p=o.startColumn,m=l-u,h=p-d,g=(0,n.handleCommonDefaultRangeChangeWithEffectRefCommands)(o,s).sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn);if(!g.length)continue;let _=g[0].startRow,v=g[0].startColumn,y=_-u,b=v-d,x=[];for(let n=0;n<a.length;n++){let i=a[n],o=(0,t.isFormulaString)(i),c=o?this._lexerTreeBuilder.moveFormulaRefOffset(i,h,m):i,l=o?this.transformFormulaByEffectCommand(e,r,c,s):c,u=Je(this._lexerTreeBuilder,l,-b,-y);x.push({newFormula:l,orginFormula:u})}let S={formulas:x,ranges:g,key:x.map(e=>e.orginFormula).join(`_`)};f.has(S.key)?f.get(S.key).push(S):f.set(S.key,[S])}let m=a.map(e=>Je(this._lexerTreeBuilder,e,0,0)).join(`_`);if(l.length>0){let e=l[0].startRow,n=l[0].startColumn,r=[];for(let i=0;i<a.length;i++){let o=a[i];r.push({newFormula:(0,t.isFormulaString)(o)?this._lexerTreeBuilder.moveFormulaRefOffset(o,n-d,e-u):o,orginFormula:o})}let i={formulas:r,ranges:l,key:m};f.has(i.key)?f.get(i.key).push(i):f.set(i.key,[i])}let h=[],g=Array.from(f.keys());for(let e=g.length-1;e>=0;e--){let n=g[e],r=f.get(n).sort((e,t)=>e.ranges[0].startRow-t.ranges[0].startRow||e.ranges[0].startColumn-t.ranges[0].startColumn),i=[];for(let e=0;e<r[0].formulas.length;e++)i.push(r[0].formulas[e].newFormula);let a=t.Rectangle.mergeRanges(r.map(e=>e.ranges).flat());a.sort((e,t)=>e.startRow-t.startRow||e.startColumn-t.startColumn),h.push({formulas:i,ranges:a})}return o(h)}return{undos:[],redos:[]}};return i.forEach(t=>{let n=this._refRangeService.registerRefRange(t,l,e,r);s.add(n)}),[...c.flat()].forEach(({unitId:e,subUnitId:t,ranges:n})=>{n.forEach(n=>{let r=this._refRangeService.registerRefRange(n,l,e,t);s.add(r)})}),s}};Y=m([p(0,(0,t.Inject)(n.RefRangeService)),p(1,(0,t.Inject)(r.LexerTreeBuilder)),p(2,t.IUniverInstanceService),p(3,(0,t.Inject)(t.Injector))],Y);let X=`sheets-formula.remote-register-function.service`,Ye=(0,t.createIdentifier)(X),Z=class{constructor(e){this._functionService=e}async registerFunctions(e){Xe(e)}async registerAsyncFunctions(e){Xe(e)}async unregisterFunctions(e){this._functionService.unregisterExecutors(...e),this._functionService.unregisterDescriptions(...e),this._functionService.deleteFormulaAstCacheKey(...e)}};Z=m([p(0,r.IFunctionService)],Z);function Xe(e){if(e.length!==0)throw Error(`Remote custom function registration is disabled because function deserialization over RPC is unsafe.`)}let Q=class extends t.Plugin{constructor(e=f,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},f,this._config);this._configService.setConfig(`sheets-formula.remote.config`,i)}onStarting(){this._injector.add([Z]),this._injector.get(o.IRPCChannelService).registerChannel(X,(0,o.fromModule)(this._injector.get(Z)))}};x(Q,`pluginName`,`SHEET_FORMULA_REMOTE_PLUGIN`),x(Q,`packageName`,Ke),x(Q,`version`,qe),x(Q,`type`,t.UniverInstanceType.UNIVER_SHEET),Q=m([(0,t.DependentOn)(r.UniverFormulaEnginePlugin),p(1,(0,t.Inject)(t.Injector)),p(2,t.IConfigService)],Q);let $=class extends t.Plugin{constructor(e=d,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},d,this._config);this._configService.setConfig(l,i,{merge:!0})}onStarting(){var e;let t=this._injector,n=[[q],[K],[Y],[W],[S],[T],[H],[U],[G],[V],[J],[h],[D]];if(this._config.notExecuteFormula){let e=t.get(o.IRPCChannelService);n.push([Ye,{useFactory:()=>(0,o.toModule)(e.requestChannel(X))}])}n.forEach(e=>t.add(e)),(e=this._config.description)!=null&&e.length&&this.disposeWithMe(t.get(r.IDescriptionService).registerDescriptions(this._config.description))}onReady(){(0,t.touchDependencies)(this._injector,[[K],[U],[W],[S],[H],[V],[h],[D],[q]]),(0,t.isNodeEnv)()&&(0,t.touchDependencies)(this._injector,[[T]])}onRendered(){(0,t.touchDependencies)(this._injector,[[G],[J]]),(0,t.isNodeEnv)()||(0,t.touchDependencies)(this._injector,[[T]])}};x($,`pluginName`,`SHEETS_FORMULA_PLUGIN`),x($,`packageName`,Ke),x($,`version`,qe),x($,`type`,t.UniverInstanceType.UNIVER_SHEET),$=m([(0,t.DependentOn)(r.UniverFormulaEnginePlugin,n.UniverSheetsPlugin),p(1,(0,t.Inject)(t.Injector)),p(2,t.IConfigService)],$);function Ze(e,t,n,i){let a=e.get(r.IFormulaCurrentConfigService),o=e.get(r.Lexer),s=e.get(r.AstTreeBuilder),c=e.get(r.Interpreter);a.load({formulaData:{},arrayFormulaCellData:{},arrayFormulaRange:{},forceCalculate:!1,dirtyRanges:[],dirtyNameMap:{},dirtyDefinedNameMap:{},dirtyUnitFeatureMap:{},excludedCell:{},allUnitData:{[n]:i},dirtyUnitOtherFormulaMap:{}});let l=o.treeBuilder(t),u=s.parse(l);return(0,r.getObjectValue)(c.execute((0,r.generateExecuteAstNodeData)(u)))}e.CalculationMode=u,Object.defineProperty(e,"FormulaAutoFillController",{enumerable:!0,get:function(){return h}}),Object.defineProperty(e,"FormulaRefRangeService",{enumerable:!0,get:function(){return Y}}),e.IRemoteRegisterFunctionService=Ye,Object.defineProperty(e,"ImageFormulaCellInterceptorController",{enumerable:!0,get:function(){return S}}),e.InsertFunctionCommand=s,e.PLUGIN_CONFIG_KEY_BASE=l,e.QuickSumCommand=c,Object.defineProperty(e,"RemoteRegisterFunctionService",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,"TriggerCalculationController",{enumerable:!0,get:function(){return T}}),Object.defineProperty(e,"UnitQualifierRenameController",{enumerable:!0,get:function(){return D}}),Object.defineProperty(e,"UniverRemoteSheetsFormulaPlugin",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(e,"UniverSheetsFormulaPlugin",{enumerable:!0,get:function(){return $}}),Object.defineProperty(e,"UpdateDefinedNameController",{enumerable:!0,get:function(){return V}}),Object.defineProperty(e,"UpdateFormulaController",{enumerable:!0,get:function(){return H}}),e.calculateFormula=Ze,e.collectUnitQualifierFormulaPatches=E});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/sheets-formula",
3
- "version": "1.0.0-alpha.8",
3
+ "version": "1.0.0-beta.0",
4
4
  "private": false,
5
5
  "description": "Sheet formula services and calculation integration for Univer Sheets.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -67,18 +67,18 @@
67
67
  "rxjs": ">=7.0.0"
68
68
  },
69
69
  "dependencies": {
70
- "@univerjs/core": "1.0.0-alpha.8",
71
- "@univerjs/engine-formula": "1.0.0-alpha.8",
72
- "@univerjs/rpc": "1.0.0-alpha.8",
73
- "@univerjs/sheets": "1.0.0-alpha.8",
74
- "@univerjs/docs": "1.0.0-alpha.8"
70
+ "@univerjs/core": "1.0.0-beta.0",
71
+ "@univerjs/docs": "1.0.0-beta.0",
72
+ "@univerjs/engine-formula": "1.0.0-beta.0",
73
+ "@univerjs/rpc": "1.0.0-beta.0",
74
+ "@univerjs/sheets": "1.0.0-beta.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "rxjs": "^7.8.2",
78
78
  "typescript": "^6.0.3",
79
79
  "vitest": "^4.1.10",
80
- "@univerjs-infra/shared": "1.0.0-alpha.8",
81
- "@univerjs/engine-render": "1.0.0-alpha.8"
80
+ "@univerjs-infra/shared": "1.0.0-beta.0",
81
+ "@univerjs/engine-render": "1.0.0-beta.0"
82
82
  },
83
83
  "scripts": {
84
84
  "test": "vitest run",