@univerjs/sheets 1.0.0-beta.0 → 1.0.0-beta.2

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.
Files changed (82) hide show
  1. package/lib/cjs/index.js +151 -106
  2. package/lib/cjs/locale/ar-SA.js +1 -2
  3. package/lib/cjs/locale/ca-ES.js +3 -4
  4. package/lib/cjs/locale/de-DE.js +1 -2
  5. package/lib/cjs/locale/en-US.js +1 -2
  6. package/lib/cjs/locale/es-ES.js +1 -2
  7. package/lib/cjs/locale/fa-IR.js +1 -2
  8. package/lib/cjs/locale/fr-FR.js +1 -2
  9. package/lib/cjs/locale/id-ID.js +1 -2
  10. package/lib/cjs/locale/it-IT.js +1 -2
  11. package/lib/cjs/locale/ja-JP.js +1 -2
  12. package/lib/cjs/locale/ko-KR.js +1 -2
  13. package/lib/cjs/locale/pl-PL.js +1 -2
  14. package/lib/cjs/locale/pt-BR.js +1 -2
  15. package/lib/cjs/locale/ru-RU.js +1 -2
  16. package/lib/cjs/locale/sk-SK.js +3 -4
  17. package/lib/cjs/locale/vi-VN.js +1 -2
  18. package/lib/cjs/locale/zh-CN.js +1 -2
  19. package/lib/cjs/locale/zh-HK.js +1 -2
  20. package/lib/cjs/locale/zh-TW.js +1 -2
  21. package/lib/es/index.js +152 -107
  22. package/lib/es/locale/ar-SA.js +1 -2
  23. package/lib/es/locale/ca-ES.js +3 -4
  24. package/lib/es/locale/de-DE.js +1 -2
  25. package/lib/es/locale/en-US.js +1 -2
  26. package/lib/es/locale/es-ES.js +1 -2
  27. package/lib/es/locale/fa-IR.js +1 -2
  28. package/lib/es/locale/fr-FR.js +1 -2
  29. package/lib/es/locale/id-ID.js +1 -2
  30. package/lib/es/locale/it-IT.js +1 -2
  31. package/lib/es/locale/ja-JP.js +1 -2
  32. package/lib/es/locale/ko-KR.js +1 -2
  33. package/lib/es/locale/pl-PL.js +1 -2
  34. package/lib/es/locale/pt-BR.js +1 -2
  35. package/lib/es/locale/ru-RU.js +1 -2
  36. package/lib/es/locale/sk-SK.js +3 -4
  37. package/lib/es/locale/vi-VN.js +1 -2
  38. package/lib/es/locale/zh-CN.js +1 -2
  39. package/lib/es/locale/zh-HK.js +1 -2
  40. package/lib/es/locale/zh-TW.js +1 -2
  41. package/lib/index.js +152 -107
  42. package/lib/locale/ar-SA.js +1 -2
  43. package/lib/locale/ca-ES.js +3 -4
  44. package/lib/locale/de-DE.js +1 -2
  45. package/lib/locale/en-US.js +1 -2
  46. package/lib/locale/es-ES.js +1 -2
  47. package/lib/locale/fa-IR.js +1 -2
  48. package/lib/locale/fr-FR.js +1 -2
  49. package/lib/locale/id-ID.js +1 -2
  50. package/lib/locale/it-IT.js +1 -2
  51. package/lib/locale/ja-JP.js +1 -2
  52. package/lib/locale/ko-KR.js +1 -2
  53. package/lib/locale/pl-PL.js +1 -2
  54. package/lib/locale/pt-BR.js +1 -2
  55. package/lib/locale/ru-RU.js +1 -2
  56. package/lib/locale/sk-SK.js +3 -4
  57. package/lib/locale/vi-VN.js +1 -2
  58. package/lib/locale/zh-CN.js +1 -2
  59. package/lib/locale/zh-HK.js +1 -2
  60. package/lib/locale/zh-TW.js +1 -2
  61. package/lib/types/locale/en-US.d.ts +0 -1
  62. package/lib/umd/index.js +1 -1
  63. package/lib/umd/locale/ar-SA.js +1 -1
  64. package/lib/umd/locale/ca-ES.js +1 -1
  65. package/lib/umd/locale/de-DE.js +1 -1
  66. package/lib/umd/locale/en-US.js +1 -1
  67. package/lib/umd/locale/es-ES.js +1 -1
  68. package/lib/umd/locale/fa-IR.js +1 -1
  69. package/lib/umd/locale/fr-FR.js +1 -1
  70. package/lib/umd/locale/id-ID.js +1 -1
  71. package/lib/umd/locale/it-IT.js +1 -1
  72. package/lib/umd/locale/ja-JP.js +1 -1
  73. package/lib/umd/locale/ko-KR.js +1 -1
  74. package/lib/umd/locale/pl-PL.js +1 -1
  75. package/lib/umd/locale/pt-BR.js +1 -1
  76. package/lib/umd/locale/ru-RU.js +1 -1
  77. package/lib/umd/locale/sk-SK.js +1 -1
  78. package/lib/umd/locale/vi-VN.js +1 -1
  79. package/lib/umd/locale/zh-CN.js +1 -1
  80. package/lib/umd/locale/zh-HK.js +1 -1
  81. package/lib/umd/locale/zh-TW.js +1 -1
  82. package/package.json +8 -8
package/lib/cjs/index.js CHANGED
@@ -6999,6 +6999,88 @@ const rotateRange = (range) => {
6999
6999
  rangeType
7000
7000
  };
7001
7001
  };
7002
+ function mergeAndSortRanges(ranges) {
7003
+ return sortRanges(ranges.length > 1 ? _univerjs_core.Rectangle.mergeRanges(ranges) : ranges);
7004
+ }
7005
+ function sortRanges(ranges) {
7006
+ return ranges.sort((a, b) => a.startRow - b.startRow || a.startColumn - b.startColumn || a.endRow - b.endRow || a.endColumn - b.endColumn);
7007
+ }
7008
+ function translateRange(range, rowOffset, columnOffset) {
7009
+ return {
7010
+ startRow: range.startRow + rowOffset,
7011
+ endRow: range.endRow + rowOffset,
7012
+ startColumn: range.startColumn + columnOffset,
7013
+ endColumn: range.endColumn + columnOffset
7014
+ };
7015
+ }
7016
+ function moveRangeAlongAxis(targetRange, from, count, to, isRow) {
7017
+ let transforms;
7018
+ if (from > to) transforms = [
7019
+ {
7020
+ start: Number.NEGATIVE_INFINITY,
7021
+ end: to - 1,
7022
+ offset: 0
7023
+ },
7024
+ {
7025
+ start: to,
7026
+ end: from - 1,
7027
+ offset: count
7028
+ },
7029
+ {
7030
+ start: from,
7031
+ end: from + count - 1,
7032
+ offset: to - from
7033
+ },
7034
+ {
7035
+ start: from + count,
7036
+ end: Number.POSITIVE_INFINITY,
7037
+ offset: 0
7038
+ }
7039
+ ];
7040
+ else {
7041
+ if (from + count > to) throw new Error("Invalid move operation");
7042
+ transforms = [
7043
+ {
7044
+ start: Number.NEGATIVE_INFINITY,
7045
+ end: from - 1,
7046
+ offset: 0
7047
+ },
7048
+ {
7049
+ start: from,
7050
+ end: from + count - 1,
7051
+ offset: to - from - count
7052
+ },
7053
+ {
7054
+ start: from + count,
7055
+ end: to - 1,
7056
+ offset: -count
7057
+ },
7058
+ {
7059
+ start: to,
7060
+ end: Number.POSITIVE_INFINITY,
7061
+ offset: 0
7062
+ }
7063
+ ];
7064
+ }
7065
+ const rangeStart = isRow ? targetRange.startRow : targetRange.startColumn;
7066
+ const rangeEnd = isRow ? targetRange.endRow : targetRange.endColumn;
7067
+ return mergeAndSortRanges(transforms.flatMap(({ start, end, offset }) => {
7068
+ const intersectStart = Math.max(rangeStart, start);
7069
+ const intersectEnd = Math.min(rangeEnd, end);
7070
+ if (intersectStart > intersectEnd) return [];
7071
+ return [translateRange(isRow ? {
7072
+ startRow: intersectStart,
7073
+ endRow: intersectEnd,
7074
+ startColumn: targetRange.startColumn,
7075
+ endColumn: targetRange.endColumn
7076
+ } : {
7077
+ startRow: targetRange.startRow,
7078
+ endRow: targetRange.endRow,
7079
+ startColumn: intersectStart,
7080
+ endColumn: intersectEnd
7081
+ }, isRow ? offset : 0, isRow ? 0 : offset)];
7082
+ }));
7083
+ }
7002
7084
  /**
7003
7085
  * see docs/tldr/ref-range/move-rows-cols.tldr
7004
7086
  */
@@ -7104,32 +7186,33 @@ const handleMoveRowsCommon = (params, targetRange) => {
7104
7186
  const fromRow = fromRange.startRow;
7105
7187
  const count = fromRange.endRow - fromRange.startRow + 1;
7106
7188
  const toRow = toRange.startRow;
7107
- const matrix = new _univerjs_core.ObjectMatrix();
7108
- _univerjs_core.Range.foreach(targetRange, (row, col) => {
7109
- matrix.setValue(row, col, 1);
7110
- });
7111
- matrix.moveRows(fromRow, count, toRow);
7112
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (value) => value === 1);
7189
+ return moveRangeAlongAxis(targetRange, fromRow, count, toRow, true);
7113
7190
  };
7114
7191
  const handleReorderRangeCommon = (param, targetRange) => {
7115
7192
  const { range, order } = param.params || {};
7116
7193
  if (!range || !order) return [targetRange];
7117
- const matrix = new _univerjs_core.ObjectMatrix();
7118
- _univerjs_core.Range.foreach(targetRange, (row, col) => {
7119
- matrix.setValue(row, col, 1);
7120
- });
7121
- const cacheMatrix = new _univerjs_core.ObjectMatrix();
7122
- _univerjs_core.Range.foreach(range, (row, col) => {
7123
- if (Object.prototype.hasOwnProperty.call(order, row)) {
7124
- const targetRow = order[row];
7125
- const cloneCell = matrix.getValue(targetRow, col) ?? 0;
7126
- cacheMatrix.setValue(row, col, cloneCell);
7127
- }
7128
- });
7129
- cacheMatrix.forValue((row, col, cellData) => {
7130
- matrix.setValue(row, col, cellData);
7194
+ const overwrittenRows = [];
7195
+ const additions = [];
7196
+ const startColumn = Math.max(range.startColumn, targetRange.startColumn);
7197
+ const endColumn = Math.min(range.endColumn, targetRange.endColumn);
7198
+ Object.keys(order).forEach((key) => {
7199
+ const row = Number(key);
7200
+ if (row < range.startRow || row > range.endRow) return;
7201
+ overwrittenRows.push({
7202
+ startRow: row,
7203
+ endRow: row,
7204
+ startColumn: range.startColumn,
7205
+ endColumn: range.endColumn
7206
+ });
7207
+ const sourceRow = order[row];
7208
+ if (sourceRow >= targetRange.startRow && sourceRow <= targetRange.endRow && startColumn <= endColumn) additions.push({
7209
+ startRow: row,
7210
+ endRow: row,
7211
+ startColumn,
7212
+ endColumn
7213
+ });
7131
7214
  });
7132
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (value) => value === 1);
7215
+ return mergeAndSortRanges([..._univerjs_core.Rectangle.subtractMulti([targetRange], overwrittenRows), ...additions]);
7133
7216
  };
7134
7217
  const handleMoveCols = (params, targetRange) => {
7135
7218
  const { fromRange, toRange } = params.params || {};
@@ -7160,12 +7243,7 @@ const handleMoveColsCommon = (params, targetRange) => {
7160
7243
  const fromCol = fromRange.startColumn;
7161
7244
  const count = fromRange.endColumn - fromRange.startColumn + 1;
7162
7245
  const toCol = toRange.startColumn;
7163
- const matrix = new _univerjs_core.ObjectMatrix();
7164
- _univerjs_core.Range.foreach(targetRange, (row, col) => {
7165
- matrix.setValue(row, col, 1);
7166
- });
7167
- matrix.moveColumns(fromCol, count, toCol);
7168
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (value) => value === 1);
7246
+ return moveRangeAlongAxis(targetRange, fromCol, count, toCol, false);
7169
7247
  };
7170
7248
  const handleMoveRange = (param, targetRange) => {
7171
7249
  var _param$params, _param$params2;
@@ -7195,32 +7273,12 @@ const handleMoveRangeCommon = (param, targetRange) => {
7195
7273
  const relativeRange = _univerjs_core.Rectangle.getRelativeRange(targetRange, fromRange);
7196
7274
  return [_univerjs_core.Rectangle.getPositionRange(relativeRange, toRange)];
7197
7275
  }
7198
- const matrix = new _univerjs_core.ObjectMatrix();
7199
- _univerjs_core.Range.foreach(targetRange, (row, col) => {
7200
- matrix.setValue(row, col, 1);
7201
- });
7202
- const fromMatrix = new _univerjs_core.ObjectMatrix();
7203
- const loopFromRange = (0, _univerjs_core.getIntersectRange)(fromRange, targetRange);
7204
- loopFromRange && _univerjs_core.Range.foreach(loopFromRange, (row, col) => {
7205
- if (matrix.getValue(row, col)) {
7206
- matrix.setValue(row, col, void 0);
7207
- fromMatrix.setValue(row, col, 1);
7208
- }
7209
- });
7210
7276
  const columnOffset = toRange.startColumn - fromRange.startColumn;
7211
7277
  const rowOffset = toRange.startRow - fromRange.startRow;
7212
- const loopToRange = {
7213
- startColumn: toRange.startColumn - columnOffset,
7214
- endColumn: toRange.endColumn - columnOffset,
7215
- startRow: toRange.startRow - rowOffset,
7216
- endRow: toRange.endRow - rowOffset
7217
- };
7218
- loopToRange && _univerjs_core.Range.foreach(loopToRange, (row, col) => {
7219
- const targetRow = row + rowOffset;
7220
- const targetCol = col + columnOffset;
7221
- matrix.setValue(targetRow, targetCol, fromMatrix.getValue(row, col) ?? 0);
7222
- });
7223
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (value) => value === 1);
7278
+ const movedRange = (0, _univerjs_core.getIntersectRange)(fromRange, targetRange);
7279
+ const remainingRanges = _univerjs_core.Rectangle.subtractMulti([targetRange], [fromRange, toRange]);
7280
+ const translatedRanges = movedRange ? [translateRange(movedRange, rowOffset, columnOffset)] : [];
7281
+ return mergeAndSortRanges([...remainingRanges, ...translatedRanges]);
7224
7282
  };
7225
7283
  const handleBaseRemoveRange = (_removeRange, _targetRange) => {
7226
7284
  const removeRange = handleRangeTypeInput(_removeRange);
@@ -7430,16 +7488,7 @@ const handleInsertRangeMoveDownCommon = (param, targetRange) => {
7430
7488
  const noMoveRanges = _univerjs_core.Rectangle.subtract(targetRange, bottomRange);
7431
7489
  const targetMoveRange = (0, _univerjs_core.getIntersectRange)(bottomRange, targetRange);
7432
7490
  if (!targetMoveRange) return [targetRange];
7433
- const matrix = new _univerjs_core.ObjectMatrix();
7434
- noMoveRanges.forEach((noMoveRange) => {
7435
- _univerjs_core.Range.foreach(noMoveRange, (row, col) => {
7436
- matrix.setValue(row, col, 1);
7437
- });
7438
- });
7439
- targetMoveRange && _univerjs_core.Range.foreach(targetMoveRange, (row, col) => {
7440
- matrix.setValue(row + moveCount, col, 1);
7441
- });
7442
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (v) => v === 1);
7491
+ return sortRanges([...noMoveRanges, translateRange(targetMoveRange, moveCount, 0)]);
7443
7492
  };
7444
7493
  const handleInsertRangeMoveRight = (param, targetRange) => {
7445
7494
  var _param$params11;
@@ -7467,16 +7516,7 @@ const handleInsertRangeMoveRightCommon = (param, targetRange) => {
7467
7516
  const noMoveRanges = _univerjs_core.Rectangle.subtract(targetRange, bottomRange);
7468
7517
  const targetMoveRange = (0, _univerjs_core.getIntersectRange)(bottomRange, targetRange);
7469
7518
  if (!targetMoveRange) return [targetRange];
7470
- const matrix = new _univerjs_core.ObjectMatrix();
7471
- noMoveRanges.forEach((noMoveRange) => {
7472
- _univerjs_core.Range.foreach(noMoveRange, (row, col) => {
7473
- matrix.setValue(row, col, 1);
7474
- });
7475
- });
7476
- targetMoveRange && _univerjs_core.Range.foreach(targetMoveRange, (row, col) => {
7477
- matrix.setValue(row, col + moveCount, 1);
7478
- });
7479
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (v) => v === 1);
7519
+ return sortRanges([...noMoveRanges, translateRange(targetMoveRange, 0, moveCount)]);
7480
7520
  };
7481
7521
  const handleDeleteRangeMoveLeft = (param, targetRange) => {
7482
7522
  var _param$params13;
@@ -7506,23 +7546,11 @@ const handleDeleteRangeMoveLeftCommon = (param, targetRange) => {
7506
7546
  endColumn: Number.POSITIVE_INFINITY
7507
7547
  };
7508
7548
  const moveCount = range.endColumn - range.startColumn + 1;
7509
- const targetDeleteRange = (0, _univerjs_core.getIntersectRange)(range, targetRange);
7510
7549
  const noMoveRanges = _univerjs_core.Rectangle.subtract(targetRange, rightRange);
7511
7550
  const targetMoveRange = (0, _univerjs_core.getIntersectRange)(rightRange, targetRange);
7512
- if (!targetDeleteRange && !targetMoveRange) return [targetRange];
7513
- const matrix = new _univerjs_core.ObjectMatrix();
7514
- targetMoveRange && _univerjs_core.Range.foreach(targetMoveRange, (row, col) => {
7515
- matrix.setValue(row, col - moveCount, 1);
7516
- });
7517
- targetDeleteRange && _univerjs_core.Range.foreach(targetDeleteRange, (row, col) => {
7518
- matrix.setValue(row, col - moveCount, 0);
7519
- });
7520
- noMoveRanges.forEach((noMoveRange) => {
7521
- _univerjs_core.Range.foreach(noMoveRange, (row, col) => {
7522
- matrix.setValue(row, col, 1);
7523
- });
7524
- });
7525
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (v) => v === 1);
7551
+ if (!targetMoveRange) return [targetRange];
7552
+ const movedRanges = targetMoveRange ? _univerjs_core.Rectangle.subtract(targetMoveRange, range).map((target) => translateRange(target, 0, -moveCount)) : [];
7553
+ return mergeAndSortRanges([...noMoveRanges, ...movedRanges]);
7526
7554
  };
7527
7555
  const handleDeleteRangeMoveUp = (param, targetRange) => {
7528
7556
  var _param$params15;
@@ -7551,23 +7579,11 @@ const handleDeleteRangeMoveUpCommon = (param, targetRange) => {
7551
7579
  endRow: Number.POSITIVE_INFINITY
7552
7580
  };
7553
7581
  const moveCount = range.endRow - range.startRow + 1;
7554
- const targetDeleteRange = (0, _univerjs_core.getIntersectRange)(range, targetRange);
7555
7582
  const noMoveRanges = _univerjs_core.Rectangle.subtract(targetRange, bottomRange);
7556
7583
  const targetMoveRange = (0, _univerjs_core.getIntersectRange)(bottomRange, targetRange);
7557
- if (!targetDeleteRange && !targetMoveRange) return [targetRange];
7558
- const matrix = new _univerjs_core.ObjectMatrix();
7559
- targetMoveRange && _univerjs_core.Range.foreach(targetMoveRange, (row, col) => {
7560
- matrix.setValue(row - moveCount, col, 1);
7561
- });
7562
- targetDeleteRange && _univerjs_core.Range.foreach(targetDeleteRange, (row, col) => {
7563
- matrix.setValue(row - moveCount, col, 0);
7564
- });
7565
- noMoveRanges.forEach((noMoveRange) => {
7566
- _univerjs_core.Range.foreach(noMoveRange, (row, col) => {
7567
- matrix.setValue(row, col, 1);
7568
- });
7569
- });
7570
- return (0, _univerjs_core.queryObjectMatrix)(matrix, (v) => v === 1);
7584
+ if (!targetMoveRange) return [targetRange];
7585
+ const movedRanges = targetMoveRange ? _univerjs_core.Rectangle.subtract(targetMoveRange, range).map((target) => translateRange(target, -moveCount, 0)) : [];
7586
+ return mergeAndSortRanges([...noMoveRanges, ...movedRanges]);
7571
7587
  };
7572
7588
  const handleRemoveRowCommon = (param, targetRange) => {
7573
7589
  const mergedRemoved = (0, _univerjs_core.mergeIntervals)((param.ranges ?? [param.range]).map((range) => [range.startRow, range.endRow]));
@@ -13897,7 +13913,7 @@ const SetFrozenCommand = {
13897
13913
  if (!target) return false;
13898
13914
  const { unitId, subUnitId, worksheet } = target;
13899
13915
  const { startColumn, startRow, xSplit, ySplit } = params;
13900
- if (startRow >= worksheet.getRowCount() || startColumn >= worksheet.getColumnCount() || xSplit >= worksheet.getColumnCount() || ySplit >= worksheet.getRowCount()) return false;
13916
+ if (!Number.isInteger(startRow) || !Number.isInteger(startColumn) || !Number.isInteger(xSplit) || !Number.isInteger(ySplit) || xSplit < 0 || ySplit < 0 || startRow >= worksheet.getRowCount() || startColumn >= worksheet.getColumnCount() || xSplit >= worksheet.getColumnCount() || ySplit >= worksheet.getRowCount()) return false;
13901
13917
  const redoMutationParams = {
13902
13918
  unitId,
13903
13919
  subUnitId,
@@ -16937,18 +16953,26 @@ const TextToNumberCommand = {
16937
16953
  const undoRedoService = accessor.get(_univerjs_core.IUndoRedoService);
16938
16954
  const { worksheet, unitId, subUnitId } = target;
16939
16955
  const newCellValue = new _univerjs_core.ObjectMatrix();
16956
+ const setNumfmtCells = [];
16940
16957
  const removeNumfmtRanges = [];
16941
16958
  for (let i = 0; i < ranges.length; i++) for (let r = ranges[i].startRow; r <= ranges[i].endRow; r++) for (let c = ranges[i].startColumn; c <= ranges[i].endColumn; c++) {
16942
16959
  var _worksheet$getStyleDa, _cell$s;
16943
16960
  if (newCellValue.getValue(r, c)) continue;
16944
16961
  const cell = worksheet.getCellRaw(r, c);
16945
16962
  const pattern = typeof (cell === null || cell === void 0 ? void 0 : cell.s) === "string" ? (_worksheet$getStyleDa = worksheet.getStyleDataByHash(cell.s)) === null || _worksheet$getStyleDa === void 0 || (_worksheet$getStyleDa = _worksheet$getStyleDa.n) === null || _worksheet$getStyleDa === void 0 ? void 0 : _worksheet$getStyleDa.pattern : cell === null || cell === void 0 || (_cell$s = cell.s) === null || _cell$s === void 0 || (_cell$s = _cell$s.n) === null || _cell$s === void 0 ? void 0 : _cell$s.pattern;
16946
- if (cell && cell.v && (cell.t !== _univerjs_core.CellValueType.NUMBER || (0, _univerjs_core.isTextFormat)(pattern)) && (0, _univerjs_core.isRealNum)(cell.v)) {
16963
+ const parsedValue = typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string" ? (0, _univerjs_core.getNumfmtParseValueFilter)(cell.v) : null;
16964
+ const numberValue = (0, _univerjs_core.isRealNum)(cell === null || cell === void 0 ? void 0 : cell.v) ? Number(cell === null || cell === void 0 ? void 0 : cell.v) : typeof (parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.v) === "number" ? parsedValue.v : null;
16965
+ if (cell && cell.v && (cell.t !== _univerjs_core.CellValueType.NUMBER || (0, _univerjs_core.isTextFormat)(pattern)) && numberValue !== null) {
16947
16966
  newCellValue.setValue(r, c, {
16948
- v: Number(cell.v),
16967
+ v: numberValue,
16949
16968
  t: _univerjs_core.CellValueType.NUMBER
16950
16969
  });
16951
- if ((0, _univerjs_core.isTextFormat)(pattern)) removeNumfmtRanges.push({
16970
+ if ((parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.z) && (!pattern || (0, _univerjs_core.isTextFormat)(pattern))) setNumfmtCells.push({
16971
+ pattern: parsedValue.z,
16972
+ row: r,
16973
+ col: c
16974
+ });
16975
+ else if ((0, _univerjs_core.isTextFormat)(pattern)) removeNumfmtRanges.push({
16952
16976
  startRow: r,
16953
16977
  endRow: r,
16954
16978
  startColumn: c,
@@ -16969,6 +16993,14 @@ const TextToNumberCommand = {
16969
16993
  id: SetRangeValuesMutation.id,
16970
16994
  params: SetRangeValuesUndoMutationFactory(accessor, setRangeValuesMutationParams)
16971
16995
  }];
16996
+ if (setNumfmtCells.length) {
16997
+ const setNumfmtMutationParams = transformCellsToRange(unitId, subUnitId, setNumfmtCells);
16998
+ redos.push({
16999
+ id: SetNumfmtMutation.id,
17000
+ params: setNumfmtMutationParams
17001
+ });
17002
+ undos.push(...factorySetNumfmtUndoMutation(accessor, setNumfmtMutationParams));
17003
+ }
16972
17004
  if (removeNumfmtRanges.length) {
16973
17005
  const removeNumfmtMutationParams = {
16974
17006
  unitId,
@@ -18186,6 +18218,19 @@ let SheetPermissionCheckController = class SheetPermissionCheckController extend
18186
18218
  }, params.unitId, params.localSheetId);
18187
18219
  errorMsg = this._localeService.t("sheets.permission.dialog.editErr");
18188
18220
  break;
18221
+ case TextToNumberCommand.id:
18222
+ params = commandInfo.params;
18223
+ permission = this.permissionCheckWithRanges({
18224
+ workbookTypes: [WorkbookEditablePermission],
18225
+ worksheetTypes: [
18226
+ WorksheetSetCellValuePermission,
18227
+ WorksheetSetCellStylePermission,
18228
+ WorksheetEditPermission
18229
+ ],
18230
+ rangeTypes: [RangeProtectionPermissionEditPoint]
18231
+ }, params === null || params === void 0 ? void 0 : params.ranges, params === null || params === void 0 ? void 0 : params.unitId, params === null || params === void 0 ? void 0 : params.subUnitId);
18232
+ errorMsg = this._localeService.t("sheets.permission.dialog.editErr");
18233
+ break;
18189
18234
  default: break;
18190
18235
  }
18191
18236
  if (!permission) this.blockExecuteWithoutPermission(errorMsg);
@@ -19325,7 +19370,7 @@ RangeProtectionCache = __decorate([
19325
19370
  //#endregion
19326
19371
  //#region package.json
19327
19372
  var name = "@univerjs/sheets";
19328
- var version = "1.0.0-beta.0";
19373
+ var version = "1.0.0-beta.2";
19329
19374
 
19330
19375
  //#endregion
19331
19376
  //#region src/controllers/active-worksheet.controller.ts
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "سيؤدي الاستمرار في الدمج إلى الاحتفاظ بقيمة الخلية العلوية اليسرى فقط، وسيتم تجاهل القيم الأخرى. هل أنت متأكد من الاستمرار؟",
44
44
  cancel: "إلغاء الدمج",
45
45
  confirm: "الاستمرار في الدمج",
46
- warning: "تحذير",
47
- dismantleMergeCellWarning: "سيؤدي هذا إلى تقسيم بعض الخلايا المدمجة. هل تريد الاستمرار؟"
46
+ warning: "تحذير"
48
47
  } }
49
48
  } };
50
49
 
@@ -25,11 +25,11 @@ const locale = { sheets: {
25
25
  editErr: "L'interval està protegit i no teniu permís d'edició. Per editar, contacteu amb el creador.",
26
26
  formulaErr: "L'interval o l'interval referenciat està protegit, i no teniu permís d'edició. Per editar, contacteu amb el creador.",
27
27
  insertOrDeleteMoveRangeErr: "L'interval inserit o suprimit s'interseca amb l'interval protegit, i aquesta operació no és compatible per ara.",
28
- insertRowColErr: "L'interval está protegido y no tienes permiso para insertar filas y columnas. Para insertar filas y columnas, contacta con el creador.",
28
+ insertRowColErr: "L'interval està protegit i no teniu permís per inserir files i columnes. Per inserir files i columnes, contacteu amb el creador.",
29
29
  moveRangeErr: "L'interval està protegit i no teniu permís per moure la selecció. Per moure la selecció, contacteu amb el creador.",
30
30
  moveRowColErr: "L'interval està protegit i no teniu permís per moure files i columnes. Per moure files i columnes, contacteu amb el creador.",
31
31
  operatorSheetErr: "El full de càlcul està protegit i no teniu permís per operar-hi. Per operar al full de càlcul, contacteu amb el creador.",
32
- removeRowColErr: "L'interval está protegido y no tienes permiso para eliminar filas y columnas. Para eliminar filas y columnas, contacta con el creador.",
32
+ removeRowColErr: "L'interval està protegit i no teniu permís per suprimir files i columnes. Per suprimir files i columnes, contacteu amb el creador.",
33
33
  setRowColStyleErr: "L'interval està protegit i no teniu permís per establir estils de fila i columna. Per establir estils de fila i columna, contacteu amb el creador.",
34
34
  setStyleErr: "L'interval està protegit i no teniu permís per establir estils. Per establir estils, contacteu amb el creador."
35
35
  } },
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Continuar la fusió només conservarà el valor de la cel·la superior esquerra, descartant els altres valors. Estàs segur de continuar?",
44
44
  cancel: "Cancel·lar fusió",
45
45
  confirm: "Continuar fusió",
46
- warning: "Avís",
47
- dismantleMergeCellWarning: "Això dividirà algunes cel·les fusionades. Vols continuar?"
46
+ warning: "Avís"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Beim Fortfahren mit dem Zusammenführen bleibt nur der Wert der oberen linken Zelle erhalten, andere Werte werden verworfen. Möchten Sie wirklich fortfahren?",
44
44
  cancel: "Zusammenführen abbrechen",
45
45
  confirm: "Zusammenführen fortsetzen",
46
- warning: "Warnung",
47
- dismantleMergeCellWarning: "Dadurch werden einige verbundene Zellen aufgeteilt. Möchten Sie fortfahren?"
46
+ warning: "Warnung"
48
47
  } }
49
48
  } };
50
49
 
@@ -58,8 +58,7 @@ const locale = { sheets: {
58
58
  title: "Continue merging would only keep the upper-left cell value, discard other values. Are you sure to continue?",
59
59
  cancel: "Cancel merging",
60
60
  confirm: "Continue merging",
61
- warning: "Warning",
62
- dismantleMergeCellWarning: "This will cause some merged cells to be split. Do you want to continue?"
61
+ warning: "Warning"
63
62
  } }
64
63
  } };
65
64
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Continuar la fusión solo conservará el valor de la celda superior izquierda, descartando los otros valores. ¿Estás seguro de continuar?",
44
44
  cancel: "Cancelar fusión",
45
45
  confirm: "Continuar fusión",
46
- warning: "Advertencia",
47
- dismantleMergeCellWarning: "Esto dividirá algunas celdas fusionadas. ¿Quieres continuar?"
46
+ warning: "Advertencia"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "ادغام ادامه‌دار فقط مقدار سلول بالا-چپ را حفظ می‌کند و سایر مقادیر را حذف می‌کند. آیا مطمئن هستید که ادامه می‌دهید؟",
44
44
  cancel: "لغو ادغام",
45
45
  confirm: "ادغام ادامه‌دار",
46
- warning: "هشدار",
47
- dismantleMergeCellWarning: "این باعث تقسیم برخی سلول‌های ادغام‌شده می‌شود. آیا می‌خواهید ادامه دهید؟"
46
+ warning: "هشدار"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Continuer la fusion ne conservera que la valeur de la cellule en haut à gauche, en supprimant les autres valeurs. Êtes-vous sûr de vouloir continuer ?",
44
44
  cancel: "Annuler la fusion",
45
45
  confirm: "Continuer la fusion",
46
- warning: "Avertissement",
47
- dismantleMergeCellWarning: "Cela divisera certaines cellules fusionnées. Voulez-vous continuer ?"
46
+ warning: "Avertissement"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Melanjutkan penggabungan hanya akan menyimpan nilai sel kiri atas, membuang nilai lainnya. Apakah Anda yakin ingin melanjutkan?",
44
44
  cancel: "Batalkan penggabungan",
45
45
  confirm: "Lanjutkan penggabungan",
46
- warning: "Peringatan",
47
- dismantleMergeCellWarning: "Ini akan menyebabkan beberapa sel gabungan terpisah. Apakah Anda ingin melanjutkan?"
46
+ warning: "Peringatan"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Continuando l'unione verrà mantenuto solo il valore della cella in alto a sinistra, scartando gli altri valori. Continuare?",
44
44
  cancel: "Annulla unione",
45
45
  confirm: "Continua unione",
46
- warning: "Avviso",
47
- dismantleMergeCellWarning: "Questo comporterà la divisione di alcune celle unite. Continuare?"
46
+ warning: "Avviso"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "結合を続行すると、左上のセルの値のみが保持され、他の値は破棄されます。続行しますか?",
44
44
  cancel: "結合をキャンセル",
45
45
  confirm: "結合を続行",
46
- warning: "警告",
47
- dismantleMergeCellWarning: "これにより、一部の結合セルが分割されます。続行しますか?"
46
+ warning: "警告"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "병합을 계속하면 왼쪽 상단 셀의 값만 유지되고 다른 값은 삭제됩니다. 계속하시겠습니까?",
44
44
  cancel: "병합 취소",
45
45
  confirm: "병합 계속",
46
- warning: "경고",
47
- dismantleMergeCellWarning: "일부 병합된 셀이 분할됩니다. 계속하시겠습니까?"
46
+ warning: "경고"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Kontynuowanie scalania spowoduje zachowanie tylko wartości komórki w lewym górnym rogu, pozostałe wartości zostaną odrzucone. Czy na pewno chcesz kontynuować?",
44
44
  cancel: "Anuluj scalanie",
45
45
  confirm: "Kontynuuj scalanie",
46
- warning: "Ostrzeżenie",
47
- dismantleMergeCellWarning: "Spowoduje to rozdzielenie niektórych scalonych komórek. Czy chcesz kontynuować?"
46
+ warning: "Ostrzeżenie"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Continuar a mesclagem manterá apenas o valor da célula superior esquerda, descartando os outros valores. Tem certeza de que deseja continuar?",
44
44
  cancel: "Cancelar mesclagem",
45
45
  confirm: "Continuar mesclagem",
46
- warning: "Aviso",
47
- dismantleMergeCellWarning: "Isso fará com que algumas células mescladas sejam divididas. Deseja continuar?"
46
+ warning: "Aviso"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Продолжение объединения сохранит только значение верхней левой ячейки, остальные значения будут удалены. Вы уверены, что хотите продолжить?",
44
44
  cancel: "Отменить объединение",
45
45
  confirm: "Продолжить объединение",
46
- warning: "Предупреждение",
47
- dismantleMergeCellWarning: "Это приведет к разделению некоторых объединенных ячеек. Вы хотите продолжить?"
46
+ warning: "Предупреждение"
48
47
  } }
49
48
  } };
50
49
 
@@ -25,11 +25,11 @@ const locale = { sheets: {
25
25
  editErr: "Rozsah je chránený a nemáte oprávnenie na úpravy. Ak chcete upravovať, kontaktujte autora.",
26
26
  formulaErr: "Rozsah alebo referenčný rozsah je chránený a nemáte oprávnenie na úpravu. Ak chcete upravovať, kontaktujte autora.",
27
27
  insertOrDeleteMoveRangeErr: "Vložený alebo odstránený rozsah sa prekrýva s chráneným rozsahom a táto operácia zatiaľ nie je podporovaná.",
28
- insertRowColErr: "Rozsah je chránený a nemáte oprávnění pro vkládání řádků a sloupců. Pokud chcete vkládat řádky a sloupce, kontaktujte autora.",
28
+ insertRowColErr: "Rozsah je chránený a nemáte oprávnenie vkladať riadky a stĺpce. Ak chcete vložiť riadky a stĺpce, kontaktujte autora.",
29
29
  moveRangeErr: "Rozsah je chránený a nemáte oprávnenie presúvať výber. Ak chcete presúvať výber, kontaktujte autora.",
30
30
  moveRowColErr: "Rozsah je chránený a nemáte oprávnenie presúvať riadky a stĺpce. Ak chcete presúvať riadky a stĺpce, kontaktujte autora.",
31
31
  operatorSheetErr: "Hárok je chránený a nemáte oprávnenie pracovať s hárkom. Ak chcete pracovať s hárkom, kontaktujte autora.",
32
- removeRowColErr: "Rozsah je chránený a nemáte oprávnění pro odstraňování řádků a sloupců. Pokud chcete odstraňovat řádky a sloupce, kontaktujte autora.",
32
+ removeRowColErr: "Rozsah je chránený a nemáte oprávnenie odstraňovať riadky a stĺpce. Ak chcete odstrániť riadky a stĺpce, kontaktujte autora.",
33
33
  setRowColStyleErr: "Rozsah je chránený a nemáte oprávnenie nastavovať štýly riadkov a stĺpcov. Ak chcete nastavovať štýly riadkov a stĺpcov, kontaktujte autora.",
34
34
  setStyleErr: "Rozsah je chránený a nemáte oprávnenie nastavovať štýly. Ak chcete nastavovať štýly, kontaktujte autora."
35
35
  } },
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Pokračovanie v zlúčení zachová iba hodnotu hornej ľavej bunky, ostatné hodnoty sa zahodia. Ste si istí, že chcete pokračovať?",
44
44
  cancel: "Zrušiť zlúčenie",
45
45
  confirm: "Pokračovať v zlúčení",
46
- warning: "Varovanie",
47
- dismantleMergeCellWarning: "To spôsobí rozdelenie niektorých zlúčených buniek. Chcete pokračovať?"
46
+ warning: "Varovanie"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "Tiếp tục hợp nhất chỉ giữ lại giá trị của ô trên cùng bên trái, loại bỏ các giá trị khác. Bạn có chắc chắn muốn tiếp tục không?",
44
44
  cancel: "Hủy hợp nhất",
45
45
  confirm: "Tiếp tục hợp nhất",
46
- warning: "Cảnh báo",
47
- dismantleMergeCellWarning: "Điều này sẽ khiến một số ô đã hợp nhất bị tách ra. Bạn có muốn tiếp tục không?"
46
+ warning: "Cảnh báo"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "继续合并将只保留左上角单元格的值,丢弃其他值。您确定要继续吗?",
44
44
  cancel: "取消合并",
45
45
  confirm: "继续合并",
46
- warning: "警告",
47
- dismantleMergeCellWarning: "这将导致一些合并单元格被拆分。您要继续吗?"
46
+ warning: "警告"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "繼續合併將只保留左上角儲存格的值,捨棄其他值。您確定要繼續嗎?",
44
44
  cancel: "取消合併",
45
45
  confirm: "繼續合併",
46
- warning: "警告",
47
- dismantleMergeCellWarning: "這將導致一些合併儲存格被拆分。您要繼續嗎?"
46
+ warning: "警告"
48
47
  } }
49
48
  } };
50
49
 
@@ -43,8 +43,7 @@ const locale = { sheets: {
43
43
  title: "繼續合併將只保留左上角儲存格的值,捨棄其他值。您確定要繼續嗎?",
44
44
  cancel: "取消合併",
45
45
  confirm: "繼續合併",
46
- warning: "警告",
47
- dismantleMergeCellWarning: "這將導致一些合併儲存格被拆分。您要繼續嗎?"
46
+ warning: "警告"
48
47
  } }
49
48
  } };
50
49