@univerjs/sheets 1.0.3 → 1.0.4

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/index.js CHANGED
@@ -1649,7 +1649,7 @@ const MoveRangeMutation = {
1649
1649
  handler: (accessor, params) => {
1650
1650
  const { from, to } = params;
1651
1651
  if (!from || !to) return false;
1652
- const workbook = accessor.get(_univerjs_core.IUniverInstanceService).getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_SHEET);
1652
+ const workbook = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(params.unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
1653
1653
  if (!workbook) return false;
1654
1654
  const fromWorksheet = workbook.getSheetBySheetId(params.from.subUnitId);
1655
1655
  const toWorksheet = workbook.getSheetBySheetId(params.to.subUnitId);
@@ -2320,7 +2320,9 @@ function prepareSetRangeValuesMutation(cells, styles, params) {
2320
2320
  const before = new _univerjs_core.ObjectMatrix();
2321
2321
  const after = new _univerjs_core.ObjectMatrix();
2322
2322
  new _univerjs_core.ObjectMatrix(_univerjs_core.Tools.deepClone(params.cellValue)).forValue((row, column, value) => {
2323
+ var _params$sourceFormula;
2323
2324
  const original = _univerjs_core.Tools.deepClone(cells.getValue(row, column) ?? null);
2325
+ if (isStaleFormulaResult(original, (_params$sourceFormula = params.sourceFormulaData) === null || _params$sourceFormula === void 0 || (_params$sourceFormula = _params$sourceFormula[row]) === null || _params$sourceFormula === void 0 ? void 0 : _params$sourceFormula[column])) return;
2324
2326
  before.setValue(row, column, original);
2325
2327
  const next = value ? mergeCellData(value, _univerjs_core.Tools.deepClone(original ?? {}), detachedStyles, !!params.isOverrideStyle) : null;
2326
2328
  after.setValue(row, column, next && !_univerjs_core.Tools.isEmptyObject(next) ? next : null);
@@ -2370,7 +2372,7 @@ const SetRangeValuesMutation = {
2370
2372
  id: "sheet.mutation.set-range-values",
2371
2373
  type: _univerjs_core.CommandType.MUTATION,
2372
2374
  handler: (accessor, params) => {
2373
- const { cellValue, subUnitId, unitId, isOverrideStyle } = params;
2375
+ const { cellValue, subUnitId, unitId, isOverrideStyle, sourceFormulaData } = params;
2374
2376
  const workbook = accessor.get(_univerjs_core.IUniverInstanceService).getUnit(unitId);
2375
2377
  if (!workbook) return false;
2376
2378
  const worksheet = workbook.getSheetBySheetId(subUnitId);
@@ -2378,6 +2380,8 @@ const SetRangeValuesMutation = {
2378
2380
  const cellMatrix = worksheet.getCellMatrix();
2379
2381
  const styles = workbook.getStyles();
2380
2382
  new _univerjs_core.ObjectMatrix(cellValue).forValue((row, col, newVal) => {
2383
+ var _sourceFormulaData$ro;
2384
+ if (isStaleFormulaResult(cellMatrix.getValue(row, col), sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$ro = sourceFormulaData[row]) === null || _sourceFormulaData$ro === void 0 ? void 0 : _sourceFormulaData$ro[col])) return;
2381
2385
  if (!newVal) cellMatrix.realDeleteValue(row, col);
2382
2386
  else {
2383
2387
  let oldVal = cellMatrix.getValue(row, col) || {};
@@ -2389,6 +2393,9 @@ const SetRangeValuesMutation = {
2389
2393
  return true;
2390
2394
  }
2391
2395
  };
2396
+ function isStaleFormulaResult(cell, source) {
2397
+ return source != null && (source.f !== ((cell === null || cell === void 0 ? void 0 : cell.f) ?? "") || source.si !== ((cell === null || cell === void 0 ? void 0 : cell.si) ?? void 0));
2398
+ }
2392
2399
  const overwriteCellPropertiesSet = /* @__PURE__ */ new Set([
2393
2400
  "f",
2394
2401
  "p",
@@ -10349,6 +10356,27 @@ const AFFECT_LAYOUT_STYLES = [
10349
10356
  "tr",
10350
10357
  "tb"
10351
10358
  ];
10359
+ function createStyleCellValue(worksheet, ranges, style) {
10360
+ const cellValue = new _univerjs_core.ObjectMatrix();
10361
+ const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10362
+ if (_univerjs_core.Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10363
+ cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10364
+ });
10365
+ else {
10366
+ const styleObj = { s: { [style.type]: style.value } };
10367
+ for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10368
+ }
10369
+ if (style.type === "tb" || style.type === "stf") cellValue.forValue((row, column, cell) => {
10370
+ var _worksheet$getCompose;
10371
+ const cellStyle = cell.s;
10372
+ if (cellStyle.tb === _univerjs_core.WrapStrategy.WRAP) cellStyle.stf = _univerjs_core.BooleanNumber.FALSE;
10373
+ else if (cellStyle.stf === _univerjs_core.BooleanNumber.TRUE && ((_worksheet$getCompose = worksheet.getComposedCellStyle(row, column)) === null || _worksheet$getCompose === void 0 ? void 0 : _worksheet$getCompose.tb) === _univerjs_core.WrapStrategy.WRAP) cellValue.setValue(row, column, { s: {
10374
+ ...cellStyle,
10375
+ tb: _univerjs_core.WrapStrategy.UNSPECIFIED
10376
+ } });
10377
+ });
10378
+ return cellValue;
10379
+ }
10352
10380
  /**
10353
10381
  * The command to set cell style.
10354
10382
  * Set style to a bunch of ranges.
@@ -10368,19 +10396,10 @@ const SetStyleCommand = {
10368
10396
  const selectionManagerService = accessor.get(SheetsSelectionsService);
10369
10397
  const ranges = range ? [range] : (_selectionManagerServ = selectionManagerService.getCurrentSelections()) === null || _selectionManagerServ === void 0 ? void 0 : _selectionManagerServ.map((s) => s.range);
10370
10398
  if (!(ranges === null || ranges === void 0 ? void 0 : ranges.length)) return false;
10371
- const cellValue = new _univerjs_core.ObjectMatrix();
10372
- const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10373
- if (_univerjs_core.Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10374
- cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10375
- });
10376
- else for (let i = 0; i < ranges.length; i++) {
10377
- const styleObj = { s: { [style.type]: style.value } };
10378
- iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10379
- }
10380
10399
  const setRangeValuesMutationParams = {
10381
10400
  subUnitId,
10382
10401
  unitId,
10383
- cellValue: cellValue.getMatrix()
10402
+ cellValue: createStyleCellValue(worksheet, ranges, style).getMatrix()
10384
10403
  };
10385
10404
  const skeleton = accessor.get(SheetSkeletonService).getSkeleton(unitId, subUnitId);
10386
10405
  const undoSetRangeValuesMutationParams = SetRangeValuesUndoMutationFactory(accessor, setRangeValuesMutationParams);
@@ -17808,7 +17827,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17808
17827
  _initialize() {
17809
17828
  this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
17810
17829
  if (command.id !== _univerjs_engine_formula.SetFormulaCalculationResultMutation.id) return;
17811
- const { unitData } = command.params;
17830
+ const { unitData, sourceFormulaData } = command.params;
17812
17831
  const unitIds = Object.keys(unitData);
17813
17832
  const redoMutationsInfo = [];
17814
17833
  for (let i = 0; i < unitIds.length; i++) {
@@ -17819,6 +17838,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17819
17838
  if (sheetData == null) continue;
17820
17839
  const sheetIds = Object.keys(sheetData);
17821
17840
  for (let j = 0; j < sheetIds.length; j++) {
17841
+ var _sourceFormulaData$un;
17822
17842
  const sheetId = sheetIds[j];
17823
17843
  const cellData = sheetData[sheetId];
17824
17844
  if (cellData == null) continue;
@@ -17826,7 +17846,8 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17826
17846
  const setRangeValuesMutation = {
17827
17847
  subUnitId: sheetId,
17828
17848
  unitId,
17829
- cellValue: this._getMergedCellData(unitId, sheetId, cellData)
17849
+ cellValue: this._getMergedCellData(unitId, sheetId, cellData, sourceFormulaData),
17850
+ sourceFormulaData: sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un = sourceFormulaData[unitId]) === null || _sourceFormulaData$un === void 0 ? void 0 : _sourceFormulaData$un[sheetId]
17830
17851
  };
17831
17852
  redoMutationsInfo.push({
17832
17853
  id: SetRangeValuesMutation.id,
@@ -17846,16 +17867,23 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17846
17867
  * @param unitId
17847
17868
  * @param sheetId
17848
17869
  * @param cellData
17870
+ * @param sourceFormulaData Formula identities captured before scalar evaluation.
17849
17871
  * @returns Calculated cell data merged with number formats.
17850
17872
  */
17851
- _getMergedCellData(unitId, sheetId, cellData) {
17873
+ _getMergedCellData(unitId, sheetId, cellData, sourceFormulaData) {
17852
17874
  const workbook = this._univerInstanceService.getUnit(unitId, _univerjs_core.UniverInstanceType.UNIVER_SHEET);
17853
17875
  const styles = workbook === null || workbook === void 0 ? void 0 : workbook.getStyles();
17854
17876
  const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(sheetId);
17855
17877
  const oldCellDataMatrix = worksheet === null || worksheet === void 0 ? void 0 : worksheet.getCellMatrix();
17856
17878
  const cellDataMatrix = new _univerjs_core.ObjectMatrix(cellData);
17857
17879
  cellDataMatrix.forValue((row, col, cell) => {
17880
+ var _sourceFormulaData$un2;
17858
17881
  const oldCell = oldCellDataMatrix === null || oldCellDataMatrix === void 0 ? void 0 : oldCellDataMatrix.getValue(row, col);
17882
+ const sourceFormula = sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un2 = sourceFormulaData[unitId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[sheetId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[row]) === null || _sourceFormulaData$un2 === void 0 ? void 0 : _sourceFormulaData$un2[col];
17883
+ if (sourceFormula != null && (sourceFormula.f !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.f) ?? "") || sourceFormula.si !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.si) ?? void 0))) {
17884
+ cellDataMatrix.realDeleteValue(row, col);
17885
+ return;
17886
+ }
17859
17887
  const newCell = (0, _univerjs_engine_formula.handleNumfmtInCell)(oldCell, cell, styles);
17860
17888
  cellDataMatrix.setValue(row, col, newCell);
17861
17889
  });
@@ -19491,7 +19519,7 @@ RangeProtectionCache = __decorate([
19491
19519
  //#endregion
19492
19520
  //#region package.json
19493
19521
  var name = "@univerjs/sheets";
19494
- var version = "1.0.3";
19522
+ var version = "1.0.4";
19495
19523
 
19496
19524
  //#endregion
19497
19525
  //#region src/controllers/active-worksheet.controller.ts
package/lib/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { AUTO_HEIGHT_FOR_MERGED_CELLS, BORDER_KEYS, BORDER_STYLE_KEYS, BooleanNumber, BorderStyleTypes, BorderType, BuildTextUtils, COLOR_STYLE_KEYS, CellModeEnum, CellValueType, CommandType, CustomCommandExecutionError, DependentOn, Dimension, Direction, Disposable, DisposableCollection, DocumentDataModel, ErrorService, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IResourceManagerService, IS_ROW_STYLE_PRECEDE_COLUMN_STYLE, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, MAX_COLUMN_COUNT, MAX_ROW_COUNT, ObjectMatrix, Optional, PADDING_KEYS, PermissionStatus, Plugin, RANGE_TYPE, RTree, Range, Rectangle, RxDisposable, STYLE_KEYS, Styles, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, WorksheetHiddenState, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, getNumfmtLocaleTag, getNumfmtParseValueFilter, isBooleanString, isDefaultFormat, isFormulaId, isFormulaString, isICellData, isRealNum, isSafeNumeric, isTextFormat, mapObjectMatrix, merge, mergeIntervals, mergeOverrideWithDependencies, mergeWorksheetSnapshotWithDefault, moveMatrixArray, normalizeTextRuns, numfmt, regexp, registerDependencies, remove, selectionToArray, sequenceExecute, sliceMatrixArray, spliceArray, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
1
+ import { AUTO_HEIGHT_FOR_MERGED_CELLS, BORDER_KEYS, BORDER_STYLE_KEYS, BooleanNumber, BorderStyleTypes, BorderType, BuildTextUtils, COLOR_STYLE_KEYS, CellModeEnum, CellValueType, CommandType, CustomCommandExecutionError, DependentOn, Dimension, Direction, Disposable, DisposableCollection, DocumentDataModel, ErrorService, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IResourceManagerService, IS_ROW_STYLE_PRECEDE_COLUMN_STYLE, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, MAX_COLUMN_COUNT, MAX_ROW_COUNT, ObjectMatrix, Optional, PADDING_KEYS, PermissionStatus, Plugin, RANGE_TYPE, RTree, Range, Rectangle, RxDisposable, STYLE_KEYS, Styles, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, WorksheetHiddenState, WrapStrategy, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, getNumfmtLocaleTag, getNumfmtParseValueFilter, isBooleanString, isDefaultFormat, isFormulaId, isFormulaString, isICellData, isRealNum, isSafeNumeric, isTextFormat, mapObjectMatrix, merge, mergeIntervals, mergeOverrideWithDependencies, mergeWorksheetSnapshotWithDefault, moveMatrixArray, normalizeTextRuns, numfmt, regexp, registerDependencies, remove, selectionToArray, sequenceExecute, sliceMatrixArray, spliceArray, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
2
2
  import { BehaviorSubject, Subject, distinctUntilChanged, filter, map, merge as merge$1, of, share, shareReplay, skip, switchMap, take, takeUntil } from "rxjs";
3
3
  import { IDefinedNamesService, LexerTreeBuilder, RemoveDefinedNameMutation, SetDefinedNameMutation, SetDefinedNameMutationFactory, SetFormulaCalculationResultMutation, UniverFormulaEnginePlugin, deserializeRangeWithSheet, deserializeRangeWithSheetWithCache, handleNumfmtInCell, isReferenceStringWithEffectiveColumn, operatorToken, sequenceNodeType, stripErrorMargin } from "@univerjs/engine-formula";
4
4
  import { SpreadsheetSkeleton, cjk, precisionTo } from "@univerjs/engine-render";
@@ -1648,7 +1648,7 @@ const MoveRangeMutation = {
1648
1648
  handler: (accessor, params) => {
1649
1649
  const { from, to } = params;
1650
1650
  if (!from || !to) return false;
1651
- const workbook = accessor.get(IUniverInstanceService).getCurrentUnitOfType(UniverInstanceType.UNIVER_SHEET);
1651
+ const workbook = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_SHEET);
1652
1652
  if (!workbook) return false;
1653
1653
  const fromWorksheet = workbook.getSheetBySheetId(params.from.subUnitId);
1654
1654
  const toWorksheet = workbook.getSheetBySheetId(params.to.subUnitId);
@@ -2319,7 +2319,9 @@ function prepareSetRangeValuesMutation(cells, styles, params) {
2319
2319
  const before = new ObjectMatrix();
2320
2320
  const after = new ObjectMatrix();
2321
2321
  new ObjectMatrix(Tools.deepClone(params.cellValue)).forValue((row, column, value) => {
2322
+ var _params$sourceFormula;
2322
2323
  const original = Tools.deepClone(cells.getValue(row, column) ?? null);
2324
+ if (isStaleFormulaResult(original, (_params$sourceFormula = params.sourceFormulaData) === null || _params$sourceFormula === void 0 || (_params$sourceFormula = _params$sourceFormula[row]) === null || _params$sourceFormula === void 0 ? void 0 : _params$sourceFormula[column])) return;
2323
2325
  before.setValue(row, column, original);
2324
2326
  const next = value ? mergeCellData(value, Tools.deepClone(original ?? {}), detachedStyles, !!params.isOverrideStyle) : null;
2325
2327
  after.setValue(row, column, next && !Tools.isEmptyObject(next) ? next : null);
@@ -2369,7 +2371,7 @@ const SetRangeValuesMutation = {
2369
2371
  id: "sheet.mutation.set-range-values",
2370
2372
  type: CommandType.MUTATION,
2371
2373
  handler: (accessor, params) => {
2372
- const { cellValue, subUnitId, unitId, isOverrideStyle } = params;
2374
+ const { cellValue, subUnitId, unitId, isOverrideStyle, sourceFormulaData } = params;
2373
2375
  const workbook = accessor.get(IUniverInstanceService).getUnit(unitId);
2374
2376
  if (!workbook) return false;
2375
2377
  const worksheet = workbook.getSheetBySheetId(subUnitId);
@@ -2377,6 +2379,8 @@ const SetRangeValuesMutation = {
2377
2379
  const cellMatrix = worksheet.getCellMatrix();
2378
2380
  const styles = workbook.getStyles();
2379
2381
  new ObjectMatrix(cellValue).forValue((row, col, newVal) => {
2382
+ var _sourceFormulaData$ro;
2383
+ if (isStaleFormulaResult(cellMatrix.getValue(row, col), sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$ro = sourceFormulaData[row]) === null || _sourceFormulaData$ro === void 0 ? void 0 : _sourceFormulaData$ro[col])) return;
2380
2384
  if (!newVal) cellMatrix.realDeleteValue(row, col);
2381
2385
  else {
2382
2386
  let oldVal = cellMatrix.getValue(row, col) || {};
@@ -2388,6 +2392,9 @@ const SetRangeValuesMutation = {
2388
2392
  return true;
2389
2393
  }
2390
2394
  };
2395
+ function isStaleFormulaResult(cell, source) {
2396
+ return source != null && (source.f !== ((cell === null || cell === void 0 ? void 0 : cell.f) ?? "") || source.si !== ((cell === null || cell === void 0 ? void 0 : cell.si) ?? void 0));
2397
+ }
2391
2398
  const overwriteCellPropertiesSet = /* @__PURE__ */ new Set([
2392
2399
  "f",
2393
2400
  "p",
@@ -10348,6 +10355,27 @@ const AFFECT_LAYOUT_STYLES = [
10348
10355
  "tr",
10349
10356
  "tb"
10350
10357
  ];
10358
+ function createStyleCellValue(worksheet, ranges, style) {
10359
+ const cellValue = new ObjectMatrix();
10360
+ const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10361
+ if (Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10362
+ cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10363
+ });
10364
+ else {
10365
+ const styleObj = { s: { [style.type]: style.value } };
10366
+ for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10367
+ }
10368
+ if (style.type === "tb" || style.type === "stf") cellValue.forValue((row, column, cell) => {
10369
+ var _worksheet$getCompose;
10370
+ const cellStyle = cell.s;
10371
+ if (cellStyle.tb === WrapStrategy.WRAP) cellStyle.stf = BooleanNumber.FALSE;
10372
+ else if (cellStyle.stf === BooleanNumber.TRUE && ((_worksheet$getCompose = worksheet.getComposedCellStyle(row, column)) === null || _worksheet$getCompose === void 0 ? void 0 : _worksheet$getCompose.tb) === WrapStrategy.WRAP) cellValue.setValue(row, column, { s: {
10373
+ ...cellStyle,
10374
+ tb: WrapStrategy.UNSPECIFIED
10375
+ } });
10376
+ });
10377
+ return cellValue;
10378
+ }
10351
10379
  /**
10352
10380
  * The command to set cell style.
10353
10381
  * Set style to a bunch of ranges.
@@ -10367,19 +10395,10 @@ const SetStyleCommand = {
10367
10395
  const selectionManagerService = accessor.get(SheetsSelectionsService);
10368
10396
  const ranges = range ? [range] : (_selectionManagerServ = selectionManagerService.getCurrentSelections()) === null || _selectionManagerServ === void 0 ? void 0 : _selectionManagerServ.map((s) => s.range);
10369
10397
  if (!(ranges === null || ranges === void 0 ? void 0 : ranges.length)) return false;
10370
- const cellValue = new ObjectMatrix();
10371
- const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10372
- if (Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10373
- cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10374
- });
10375
- else for (let i = 0; i < ranges.length; i++) {
10376
- const styleObj = { s: { [style.type]: style.value } };
10377
- iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10378
- }
10379
10398
  const setRangeValuesMutationParams = {
10380
10399
  subUnitId,
10381
10400
  unitId,
10382
- cellValue: cellValue.getMatrix()
10401
+ cellValue: createStyleCellValue(worksheet, ranges, style).getMatrix()
10383
10402
  };
10384
10403
  const skeleton = accessor.get(SheetSkeletonService).getSkeleton(unitId, subUnitId);
10385
10404
  const undoSetRangeValuesMutationParams = SetRangeValuesUndoMutationFactory(accessor, setRangeValuesMutationParams);
@@ -17807,7 +17826,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17807
17826
  _initialize() {
17808
17827
  this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
17809
17828
  if (command.id !== SetFormulaCalculationResultMutation.id) return;
17810
- const { unitData } = command.params;
17829
+ const { unitData, sourceFormulaData } = command.params;
17811
17830
  const unitIds = Object.keys(unitData);
17812
17831
  const redoMutationsInfo = [];
17813
17832
  for (let i = 0; i < unitIds.length; i++) {
@@ -17818,6 +17837,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17818
17837
  if (sheetData == null) continue;
17819
17838
  const sheetIds = Object.keys(sheetData);
17820
17839
  for (let j = 0; j < sheetIds.length; j++) {
17840
+ var _sourceFormulaData$un;
17821
17841
  const sheetId = sheetIds[j];
17822
17842
  const cellData = sheetData[sheetId];
17823
17843
  if (cellData == null) continue;
@@ -17825,7 +17845,8 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17825
17845
  const setRangeValuesMutation = {
17826
17846
  subUnitId: sheetId,
17827
17847
  unitId,
17828
- cellValue: this._getMergedCellData(unitId, sheetId, cellData)
17848
+ cellValue: this._getMergedCellData(unitId, sheetId, cellData, sourceFormulaData),
17849
+ sourceFormulaData: sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un = sourceFormulaData[unitId]) === null || _sourceFormulaData$un === void 0 ? void 0 : _sourceFormulaData$un[sheetId]
17829
17850
  };
17830
17851
  redoMutationsInfo.push({
17831
17852
  id: SetRangeValuesMutation.id,
@@ -17845,16 +17866,23 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17845
17866
  * @param unitId
17846
17867
  * @param sheetId
17847
17868
  * @param cellData
17869
+ * @param sourceFormulaData Formula identities captured before scalar evaluation.
17848
17870
  * @returns Calculated cell data merged with number formats.
17849
17871
  */
17850
- _getMergedCellData(unitId, sheetId, cellData) {
17872
+ _getMergedCellData(unitId, sheetId, cellData, sourceFormulaData) {
17851
17873
  const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
17852
17874
  const styles = workbook === null || workbook === void 0 ? void 0 : workbook.getStyles();
17853
17875
  const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(sheetId);
17854
17876
  const oldCellDataMatrix = worksheet === null || worksheet === void 0 ? void 0 : worksheet.getCellMatrix();
17855
17877
  const cellDataMatrix = new ObjectMatrix(cellData);
17856
17878
  cellDataMatrix.forValue((row, col, cell) => {
17879
+ var _sourceFormulaData$un2;
17857
17880
  const oldCell = oldCellDataMatrix === null || oldCellDataMatrix === void 0 ? void 0 : oldCellDataMatrix.getValue(row, col);
17881
+ const sourceFormula = sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un2 = sourceFormulaData[unitId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[sheetId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[row]) === null || _sourceFormulaData$un2 === void 0 ? void 0 : _sourceFormulaData$un2[col];
17882
+ if (sourceFormula != null && (sourceFormula.f !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.f) ?? "") || sourceFormula.si !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.si) ?? void 0))) {
17883
+ cellDataMatrix.realDeleteValue(row, col);
17884
+ return;
17885
+ }
17858
17886
  const newCell = handleNumfmtInCell(oldCell, cell, styles);
17859
17887
  cellDataMatrix.setValue(row, col, newCell);
17860
17888
  });
@@ -19490,7 +19518,7 @@ RangeProtectionCache = __decorate([
19490
19518
  //#endregion
19491
19519
  //#region package.json
19492
19520
  var name = "@univerjs/sheets";
19493
- var version = "1.0.3";
19521
+ var version = "1.0.4";
19494
19522
 
19495
19523
  //#endregion
19496
19524
  //#region src/controllers/active-worksheet.controller.ts
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { AUTO_HEIGHT_FOR_MERGED_CELLS, BORDER_KEYS, BORDER_STYLE_KEYS, BooleanNumber, BorderStyleTypes, BorderType, BuildTextUtils, COLOR_STYLE_KEYS, CellModeEnum, CellValueType, CommandType, CustomCommandExecutionError, DependentOn, Dimension, Direction, Disposable, DisposableCollection, DocumentDataModel, ErrorService, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IResourceManagerService, IS_ROW_STYLE_PRECEDE_COLUMN_STYLE, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, MAX_COLUMN_COUNT, MAX_ROW_COUNT, ObjectMatrix, Optional, PADDING_KEYS, PermissionStatus, Plugin, RANGE_TYPE, RTree, Range, Rectangle, RxDisposable, STYLE_KEYS, Styles, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, WorksheetHiddenState, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, getNumfmtLocaleTag, getNumfmtParseValueFilter, isBooleanString, isDefaultFormat, isFormulaId, isFormulaString, isICellData, isRealNum, isSafeNumeric, isTextFormat, mapObjectMatrix, merge, mergeIntervals, mergeOverrideWithDependencies, mergeWorksheetSnapshotWithDefault, moveMatrixArray, normalizeTextRuns, numfmt, regexp, registerDependencies, remove, selectionToArray, sequenceExecute, sliceMatrixArray, spliceArray, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
1
+ import { AUTO_HEIGHT_FOR_MERGED_CELLS, BORDER_KEYS, BORDER_STYLE_KEYS, BooleanNumber, BorderStyleTypes, BorderType, BuildTextUtils, COLOR_STYLE_KEYS, CellModeEnum, CellValueType, CommandType, CustomCommandExecutionError, DependentOn, Dimension, Direction, Disposable, DisposableCollection, DocumentDataModel, ErrorService, FontItalic, FontWeight, HorizontalAlign, IAuthzIoService, ICommandService, IConfigService, IConfirmService, IContextService, ILogService, IPermissionService, IResourceManagerService, IS_ROW_STYLE_PRECEDE_COLUMN_STYLE, IUndoRedoService, IUniverInstanceService, Inject, Injector, InterceptorEffectEnum, InterceptorManager, LRUMap, LocaleService, MAX_COLUMN_COUNT, MAX_ROW_COUNT, ObjectMatrix, Optional, PADDING_KEYS, PermissionStatus, Plugin, RANGE_TYPE, RTree, Range, Rectangle, RxDisposable, STYLE_KEYS, Styles, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, WorksheetHiddenState, WrapStrategy, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, getNumfmtLocaleTag, getNumfmtParseValueFilter, isBooleanString, isDefaultFormat, isFormulaId, isFormulaString, isICellData, isRealNum, isSafeNumeric, isTextFormat, mapObjectMatrix, merge, mergeIntervals, mergeOverrideWithDependencies, mergeWorksheetSnapshotWithDefault, moveMatrixArray, normalizeTextRuns, numfmt, regexp, registerDependencies, remove, selectionToArray, sequenceExecute, sliceMatrixArray, spliceArray, throttle, toDisposable, touchDependencies, willLoseNumericPrecision } from "@univerjs/core";
2
2
  import { BehaviorSubject, Subject, distinctUntilChanged, filter, map, merge as merge$1, of, share, shareReplay, skip, switchMap, take, takeUntil } from "rxjs";
3
3
  import { IDefinedNamesService, LexerTreeBuilder, RemoveDefinedNameMutation, SetDefinedNameMutation, SetDefinedNameMutationFactory, SetFormulaCalculationResultMutation, UniverFormulaEnginePlugin, deserializeRangeWithSheet, deserializeRangeWithSheetWithCache, handleNumfmtInCell, isReferenceStringWithEffectiveColumn, operatorToken, sequenceNodeType, stripErrorMargin } from "@univerjs/engine-formula";
4
4
  import { SpreadsheetSkeleton, cjk, precisionTo } from "@univerjs/engine-render";
@@ -1648,7 +1648,7 @@ const MoveRangeMutation = {
1648
1648
  handler: (accessor, params) => {
1649
1649
  const { from, to } = params;
1650
1650
  if (!from || !to) return false;
1651
- const workbook = accessor.get(IUniverInstanceService).getCurrentUnitOfType(UniverInstanceType.UNIVER_SHEET);
1651
+ const workbook = accessor.get(IUniverInstanceService).getUnit(params.unitId, UniverInstanceType.UNIVER_SHEET);
1652
1652
  if (!workbook) return false;
1653
1653
  const fromWorksheet = workbook.getSheetBySheetId(params.from.subUnitId);
1654
1654
  const toWorksheet = workbook.getSheetBySheetId(params.to.subUnitId);
@@ -2319,7 +2319,9 @@ function prepareSetRangeValuesMutation(cells, styles, params) {
2319
2319
  const before = new ObjectMatrix();
2320
2320
  const after = new ObjectMatrix();
2321
2321
  new ObjectMatrix(Tools.deepClone(params.cellValue)).forValue((row, column, value) => {
2322
+ var _params$sourceFormula;
2322
2323
  const original = Tools.deepClone(cells.getValue(row, column) ?? null);
2324
+ if (isStaleFormulaResult(original, (_params$sourceFormula = params.sourceFormulaData) === null || _params$sourceFormula === void 0 || (_params$sourceFormula = _params$sourceFormula[row]) === null || _params$sourceFormula === void 0 ? void 0 : _params$sourceFormula[column])) return;
2323
2325
  before.setValue(row, column, original);
2324
2326
  const next = value ? mergeCellData(value, Tools.deepClone(original ?? {}), detachedStyles, !!params.isOverrideStyle) : null;
2325
2327
  after.setValue(row, column, next && !Tools.isEmptyObject(next) ? next : null);
@@ -2369,7 +2371,7 @@ const SetRangeValuesMutation = {
2369
2371
  id: "sheet.mutation.set-range-values",
2370
2372
  type: CommandType.MUTATION,
2371
2373
  handler: (accessor, params) => {
2372
- const { cellValue, subUnitId, unitId, isOverrideStyle } = params;
2374
+ const { cellValue, subUnitId, unitId, isOverrideStyle, sourceFormulaData } = params;
2373
2375
  const workbook = accessor.get(IUniverInstanceService).getUnit(unitId);
2374
2376
  if (!workbook) return false;
2375
2377
  const worksheet = workbook.getSheetBySheetId(subUnitId);
@@ -2377,6 +2379,8 @@ const SetRangeValuesMutation = {
2377
2379
  const cellMatrix = worksheet.getCellMatrix();
2378
2380
  const styles = workbook.getStyles();
2379
2381
  new ObjectMatrix(cellValue).forValue((row, col, newVal) => {
2382
+ var _sourceFormulaData$ro;
2383
+ if (isStaleFormulaResult(cellMatrix.getValue(row, col), sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$ro = sourceFormulaData[row]) === null || _sourceFormulaData$ro === void 0 ? void 0 : _sourceFormulaData$ro[col])) return;
2380
2384
  if (!newVal) cellMatrix.realDeleteValue(row, col);
2381
2385
  else {
2382
2386
  let oldVal = cellMatrix.getValue(row, col) || {};
@@ -2388,6 +2392,9 @@ const SetRangeValuesMutation = {
2388
2392
  return true;
2389
2393
  }
2390
2394
  };
2395
+ function isStaleFormulaResult(cell, source) {
2396
+ return source != null && (source.f !== ((cell === null || cell === void 0 ? void 0 : cell.f) ?? "") || source.si !== ((cell === null || cell === void 0 ? void 0 : cell.si) ?? void 0));
2397
+ }
2391
2398
  const overwriteCellPropertiesSet = /* @__PURE__ */ new Set([
2392
2399
  "f",
2393
2400
  "p",
@@ -10348,6 +10355,27 @@ const AFFECT_LAYOUT_STYLES = [
10348
10355
  "tr",
10349
10356
  "tb"
10350
10357
  ];
10358
+ function createStyleCellValue(worksheet, ranges, style) {
10359
+ const cellValue = new ObjectMatrix();
10360
+ const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10361
+ if (Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10362
+ cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10363
+ });
10364
+ else {
10365
+ const styleObj = { s: { [style.type]: style.value } };
10366
+ for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10367
+ }
10368
+ if (style.type === "tb" || style.type === "stf") cellValue.forValue((row, column, cell) => {
10369
+ var _worksheet$getCompose;
10370
+ const cellStyle = cell.s;
10371
+ if (cellStyle.tb === WrapStrategy.WRAP) cellStyle.stf = BooleanNumber.FALSE;
10372
+ else if (cellStyle.stf === BooleanNumber.TRUE && ((_worksheet$getCompose = worksheet.getComposedCellStyle(row, column)) === null || _worksheet$getCompose === void 0 ? void 0 : _worksheet$getCompose.tb) === WrapStrategy.WRAP) cellValue.setValue(row, column, { s: {
10373
+ ...cellStyle,
10374
+ tb: WrapStrategy.UNSPECIFIED
10375
+ } });
10376
+ });
10377
+ return cellValue;
10378
+ }
10351
10379
  /**
10352
10380
  * The command to set cell style.
10353
10381
  * Set style to a bunch of ranges.
@@ -10367,19 +10395,10 @@ const SetStyleCommand = {
10367
10395
  const selectionManagerService = accessor.get(SheetsSelectionsService);
10368
10396
  const ranges = range ? [range] : (_selectionManagerServ = selectionManagerService.getCurrentSelections()) === null || _selectionManagerServ === void 0 ? void 0 : _selectionManagerServ.map((s) => s.range);
10369
10397
  if (!(ranges === null || ranges === void 0 ? void 0 : ranges.length)) return false;
10370
- const cellValue = new ObjectMatrix();
10371
- const iterator = createRangeIteratorWithSkipFilteredRows(worksheet);
10372
- if (Tools.isArray(style.value)) for (let i = 0; i < ranges.length; i++) iterator.forOperableEach(ranges[i], (r, c, range) => {
10373
- cellValue.setValue(r, c, { s: { [style.type]: style.value[r - range.startRow][c - range.startColumn] } });
10374
- });
10375
- else for (let i = 0; i < ranges.length; i++) {
10376
- const styleObj = { s: { [style.type]: style.value } };
10377
- iterator.forOperableEach(ranges[i], (r, c) => cellValue.setValue(r, c, styleObj));
10378
- }
10379
10398
  const setRangeValuesMutationParams = {
10380
10399
  subUnitId,
10381
10400
  unitId,
10382
- cellValue: cellValue.getMatrix()
10401
+ cellValue: createStyleCellValue(worksheet, ranges, style).getMatrix()
10383
10402
  };
10384
10403
  const skeleton = accessor.get(SheetSkeletonService).getSkeleton(unitId, subUnitId);
10385
10404
  const undoSetRangeValuesMutationParams = SetRangeValuesUndoMutationFactory(accessor, setRangeValuesMutationParams);
@@ -17807,7 +17826,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17807
17826
  _initialize() {
17808
17827
  this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
17809
17828
  if (command.id !== SetFormulaCalculationResultMutation.id) return;
17810
- const { unitData } = command.params;
17829
+ const { unitData, sourceFormulaData } = command.params;
17811
17830
  const unitIds = Object.keys(unitData);
17812
17831
  const redoMutationsInfo = [];
17813
17832
  for (let i = 0; i < unitIds.length; i++) {
@@ -17818,6 +17837,7 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17818
17837
  if (sheetData == null) continue;
17819
17838
  const sheetIds = Object.keys(sheetData);
17820
17839
  for (let j = 0; j < sheetIds.length; j++) {
17840
+ var _sourceFormulaData$un;
17821
17841
  const sheetId = sheetIds[j];
17822
17842
  const cellData = sheetData[sheetId];
17823
17843
  if (cellData == null) continue;
@@ -17825,7 +17845,8 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17825
17845
  const setRangeValuesMutation = {
17826
17846
  subUnitId: sheetId,
17827
17847
  unitId,
17828
- cellValue: this._getMergedCellData(unitId, sheetId, cellData)
17848
+ cellValue: this._getMergedCellData(unitId, sheetId, cellData, sourceFormulaData),
17849
+ sourceFormulaData: sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un = sourceFormulaData[unitId]) === null || _sourceFormulaData$un === void 0 ? void 0 : _sourceFormulaData$un[sheetId]
17829
17850
  };
17830
17851
  redoMutationsInfo.push({
17831
17852
  id: SetRangeValuesMutation.id,
@@ -17845,16 +17866,23 @@ let CalculateResultApplyController = class CalculateResultApplyController extend
17845
17866
  * @param unitId
17846
17867
  * @param sheetId
17847
17868
  * @param cellData
17869
+ * @param sourceFormulaData Formula identities captured before scalar evaluation.
17848
17870
  * @returns Calculated cell data merged with number formats.
17849
17871
  */
17850
- _getMergedCellData(unitId, sheetId, cellData) {
17872
+ _getMergedCellData(unitId, sheetId, cellData, sourceFormulaData) {
17851
17873
  const workbook = this._univerInstanceService.getUnit(unitId, UniverInstanceType.UNIVER_SHEET);
17852
17874
  const styles = workbook === null || workbook === void 0 ? void 0 : workbook.getStyles();
17853
17875
  const worksheet = workbook === null || workbook === void 0 ? void 0 : workbook.getSheetBySheetId(sheetId);
17854
17876
  const oldCellDataMatrix = worksheet === null || worksheet === void 0 ? void 0 : worksheet.getCellMatrix();
17855
17877
  const cellDataMatrix = new ObjectMatrix(cellData);
17856
17878
  cellDataMatrix.forValue((row, col, cell) => {
17879
+ var _sourceFormulaData$un2;
17857
17880
  const oldCell = oldCellDataMatrix === null || oldCellDataMatrix === void 0 ? void 0 : oldCellDataMatrix.getValue(row, col);
17881
+ const sourceFormula = sourceFormulaData === null || sourceFormulaData === void 0 || (_sourceFormulaData$un2 = sourceFormulaData[unitId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[sheetId]) === null || _sourceFormulaData$un2 === void 0 || (_sourceFormulaData$un2 = _sourceFormulaData$un2[row]) === null || _sourceFormulaData$un2 === void 0 ? void 0 : _sourceFormulaData$un2[col];
17882
+ if (sourceFormula != null && (sourceFormula.f !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.f) ?? "") || sourceFormula.si !== ((oldCell === null || oldCell === void 0 ? void 0 : oldCell.si) ?? void 0))) {
17883
+ cellDataMatrix.realDeleteValue(row, col);
17884
+ return;
17885
+ }
17858
17886
  const newCell = handleNumfmtInCell(oldCell, cell, styles);
17859
17887
  cellDataMatrix.setValue(row, col, newCell);
17860
17888
  });
@@ -19490,7 +19518,7 @@ RangeProtectionCache = __decorate([
19490
19518
  //#endregion
19491
19519
  //#region package.json
19492
19520
  var name = "@univerjs/sheets";
19493
- var version = "1.0.3";
19521
+ var version = "1.0.4";
19494
19522
 
19495
19523
  //#endregion
19496
19524
  //#region src/controllers/active-worksheet.controller.ts
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { HorizontalAlign, ICommand, IRange, IStyleData, VerticalAlign, WrapStrategy } from '@univerjs/core';
16
+ import type { HorizontalAlign, ICommand, IRange, IStyleData, VerticalAlign } from '@univerjs/core';
17
17
  import type { ISheetCommandSharedParams } from '../utils/interface';
18
- import { BooleanNumber } from '@univerjs/core';
18
+ import { BooleanNumber, WrapStrategy } from '@univerjs/core';
19
19
  export interface IStyleTypeValue<T> {
20
20
  type: keyof IStyleData;
21
21
  value: T | T[][];
@@ -28,6 +28,8 @@ export interface ISetRangeValuesMutationParams extends IMutationCommonParams {
28
28
  * @default false
29
29
  */
30
30
  isOverrideStyle?: boolean;
31
+ /** Formula identities retained for conditional result application across Worker replay. */
32
+ sourceFormulaData?: IObjectMatrixPrimitiveType<Pick<ICellData, 'f' | 'si'>>;
31
33
  }
32
34
  export interface ISetRangeValuesRangeMutationParams extends ISetRangeValuesMutationParams {
33
35
  range: IRange[];
@@ -37,7 +39,7 @@ export interface ISetRangeValuesRangeMutationParams extends ISetRangeValuesMutat
37
39
  * must travel with the prepared cells; replay installs them and must not allocate replacement IDs.
38
40
  * This does not execute handlers, publish notifications, or own style garbage collection.
39
41
  */
40
- export declare function prepareSetRangeValuesMutation(cells: ObjectMatrix<Nullable<ICellData>>, styles: Styles, params: Pick<ISetRangeValuesMutationParams, 'cellValue' | 'isOverrideStyle'>): {
42
+ export declare function prepareSetRangeValuesMutation(cells: ObjectMatrix<Nullable<ICellData>>, styles: Styles, params: Pick<ISetRangeValuesMutationParams, 'cellValue' | 'isOverrideStyle' | 'sourceFormulaData'>): {
41
43
  before: IObjectMatrixPrimitiveType<Nullable<ICellData>>;
42
44
  after: IObjectMatrixPrimitiveType<Nullable<ICellData>>;
43
45
  styles: Record<string, IStyleData>;
@@ -24,6 +24,7 @@ export declare class CalculateResultApplyController extends Disposable {
24
24
  * @param unitId
25
25
  * @param sheetId
26
26
  * @param cellData
27
+ * @param sourceFormulaData Formula identities captured before scalar evaluation.
27
28
  * @returns Calculated cell data merged with number formats.
28
29
  */
29
30
  private _getMergedCellData;