@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.
- package/lib/cjs/index.js +151 -106
- package/lib/cjs/locale/ar-SA.js +1 -2
- package/lib/cjs/locale/ca-ES.js +3 -4
- package/lib/cjs/locale/de-DE.js +1 -2
- package/lib/cjs/locale/en-US.js +1 -2
- package/lib/cjs/locale/es-ES.js +1 -2
- package/lib/cjs/locale/fa-IR.js +1 -2
- package/lib/cjs/locale/fr-FR.js +1 -2
- package/lib/cjs/locale/id-ID.js +1 -2
- package/lib/cjs/locale/it-IT.js +1 -2
- package/lib/cjs/locale/ja-JP.js +1 -2
- package/lib/cjs/locale/ko-KR.js +1 -2
- package/lib/cjs/locale/pl-PL.js +1 -2
- package/lib/cjs/locale/pt-BR.js +1 -2
- package/lib/cjs/locale/ru-RU.js +1 -2
- package/lib/cjs/locale/sk-SK.js +3 -4
- package/lib/cjs/locale/vi-VN.js +1 -2
- package/lib/cjs/locale/zh-CN.js +1 -2
- package/lib/cjs/locale/zh-HK.js +1 -2
- package/lib/cjs/locale/zh-TW.js +1 -2
- package/lib/es/index.js +152 -107
- package/lib/es/locale/ar-SA.js +1 -2
- package/lib/es/locale/ca-ES.js +3 -4
- package/lib/es/locale/de-DE.js +1 -2
- package/lib/es/locale/en-US.js +1 -2
- package/lib/es/locale/es-ES.js +1 -2
- package/lib/es/locale/fa-IR.js +1 -2
- package/lib/es/locale/fr-FR.js +1 -2
- package/lib/es/locale/id-ID.js +1 -2
- package/lib/es/locale/it-IT.js +1 -2
- package/lib/es/locale/ja-JP.js +1 -2
- package/lib/es/locale/ko-KR.js +1 -2
- package/lib/es/locale/pl-PL.js +1 -2
- package/lib/es/locale/pt-BR.js +1 -2
- package/lib/es/locale/ru-RU.js +1 -2
- package/lib/es/locale/sk-SK.js +3 -4
- package/lib/es/locale/vi-VN.js +1 -2
- package/lib/es/locale/zh-CN.js +1 -2
- package/lib/es/locale/zh-HK.js +1 -2
- package/lib/es/locale/zh-TW.js +1 -2
- package/lib/index.js +152 -107
- package/lib/locale/ar-SA.js +1 -2
- package/lib/locale/ca-ES.js +3 -4
- package/lib/locale/de-DE.js +1 -2
- package/lib/locale/en-US.js +1 -2
- package/lib/locale/es-ES.js +1 -2
- package/lib/locale/fa-IR.js +1 -2
- package/lib/locale/fr-FR.js +1 -2
- package/lib/locale/id-ID.js +1 -2
- package/lib/locale/it-IT.js +1 -2
- package/lib/locale/ja-JP.js +1 -2
- package/lib/locale/ko-KR.js +1 -2
- package/lib/locale/pl-PL.js +1 -2
- package/lib/locale/pt-BR.js +1 -2
- package/lib/locale/ru-RU.js +1 -2
- package/lib/locale/sk-SK.js +3 -4
- package/lib/locale/vi-VN.js +1 -2
- package/lib/locale/zh-CN.js +1 -2
- package/lib/locale/zh-HK.js +1 -2
- package/lib/locale/zh-TW.js +1 -2
- package/lib/types/locale/en-US.d.ts +0 -1
- package/lib/umd/index.js +1 -1
- package/lib/umd/locale/ar-SA.js +1 -1
- package/lib/umd/locale/ca-ES.js +1 -1
- package/lib/umd/locale/de-DE.js +1 -1
- package/lib/umd/locale/en-US.js +1 -1
- package/lib/umd/locale/es-ES.js +1 -1
- package/lib/umd/locale/fa-IR.js +1 -1
- package/lib/umd/locale/fr-FR.js +1 -1
- package/lib/umd/locale/id-ID.js +1 -1
- package/lib/umd/locale/it-IT.js +1 -1
- package/lib/umd/locale/ja-JP.js +1 -1
- package/lib/umd/locale/ko-KR.js +1 -1
- package/lib/umd/locale/pl-PL.js +1 -1
- package/lib/umd/locale/pt-BR.js +1 -1
- package/lib/umd/locale/ru-RU.js +1 -1
- package/lib/umd/locale/sk-SK.js +1 -1
- package/lib/umd/locale/vi-VN.js +1 -1
- package/lib/umd/locale/zh-CN.js +1 -1
- package/lib/umd/locale/zh-HK.js +1 -1
- package/lib/umd/locale/zh-TW.js +1 -1
- package/package.json +8 -8
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, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, isBooleanString, isDefaultFormat, isFormulaId, isFormulaString, isICellData, isRealNum, isSafeNumeric, isTextFormat, mapObjectMatrix, merge, mergeIntervals, mergeOverrideWithDependencies, mergeWorksheetSnapshotWithDefault, moveMatrixArray, normalizeTextRuns, numfmt,
|
|
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, TEXT_DECORATION_KEYS, TEXT_ROTATION_KEYS, TextX, Tools, UniverInstanceType, UserManagerService, cellToRange, cloneWorksheetData, composeInterceptors, concatMatrixArray, createIdentifier, createInterceptorKey, createRowColIter, generateRandomId, getArrayLength, getIntersectRange, 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, first, map, merge as merge$1, of, share, shareReplay, skip, switchMap, 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";
|
|
@@ -6998,6 +6998,88 @@ const rotateRange = (range) => {
|
|
|
6998
6998
|
rangeType
|
|
6999
6999
|
};
|
|
7000
7000
|
};
|
|
7001
|
+
function mergeAndSortRanges(ranges) {
|
|
7002
|
+
return sortRanges(ranges.length > 1 ? Rectangle.mergeRanges(ranges) : ranges);
|
|
7003
|
+
}
|
|
7004
|
+
function sortRanges(ranges) {
|
|
7005
|
+
return ranges.sort((a, b) => a.startRow - b.startRow || a.startColumn - b.startColumn || a.endRow - b.endRow || a.endColumn - b.endColumn);
|
|
7006
|
+
}
|
|
7007
|
+
function translateRange(range, rowOffset, columnOffset) {
|
|
7008
|
+
return {
|
|
7009
|
+
startRow: range.startRow + rowOffset,
|
|
7010
|
+
endRow: range.endRow + rowOffset,
|
|
7011
|
+
startColumn: range.startColumn + columnOffset,
|
|
7012
|
+
endColumn: range.endColumn + columnOffset
|
|
7013
|
+
};
|
|
7014
|
+
}
|
|
7015
|
+
function moveRangeAlongAxis(targetRange, from, count, to, isRow) {
|
|
7016
|
+
let transforms;
|
|
7017
|
+
if (from > to) transforms = [
|
|
7018
|
+
{
|
|
7019
|
+
start: Number.NEGATIVE_INFINITY,
|
|
7020
|
+
end: to - 1,
|
|
7021
|
+
offset: 0
|
|
7022
|
+
},
|
|
7023
|
+
{
|
|
7024
|
+
start: to,
|
|
7025
|
+
end: from - 1,
|
|
7026
|
+
offset: count
|
|
7027
|
+
},
|
|
7028
|
+
{
|
|
7029
|
+
start: from,
|
|
7030
|
+
end: from + count - 1,
|
|
7031
|
+
offset: to - from
|
|
7032
|
+
},
|
|
7033
|
+
{
|
|
7034
|
+
start: from + count,
|
|
7035
|
+
end: Number.POSITIVE_INFINITY,
|
|
7036
|
+
offset: 0
|
|
7037
|
+
}
|
|
7038
|
+
];
|
|
7039
|
+
else {
|
|
7040
|
+
if (from + count > to) throw new Error("Invalid move operation");
|
|
7041
|
+
transforms = [
|
|
7042
|
+
{
|
|
7043
|
+
start: Number.NEGATIVE_INFINITY,
|
|
7044
|
+
end: from - 1,
|
|
7045
|
+
offset: 0
|
|
7046
|
+
},
|
|
7047
|
+
{
|
|
7048
|
+
start: from,
|
|
7049
|
+
end: from + count - 1,
|
|
7050
|
+
offset: to - from - count
|
|
7051
|
+
},
|
|
7052
|
+
{
|
|
7053
|
+
start: from + count,
|
|
7054
|
+
end: to - 1,
|
|
7055
|
+
offset: -count
|
|
7056
|
+
},
|
|
7057
|
+
{
|
|
7058
|
+
start: to,
|
|
7059
|
+
end: Number.POSITIVE_INFINITY,
|
|
7060
|
+
offset: 0
|
|
7061
|
+
}
|
|
7062
|
+
];
|
|
7063
|
+
}
|
|
7064
|
+
const rangeStart = isRow ? targetRange.startRow : targetRange.startColumn;
|
|
7065
|
+
const rangeEnd = isRow ? targetRange.endRow : targetRange.endColumn;
|
|
7066
|
+
return mergeAndSortRanges(transforms.flatMap(({ start, end, offset }) => {
|
|
7067
|
+
const intersectStart = Math.max(rangeStart, start);
|
|
7068
|
+
const intersectEnd = Math.min(rangeEnd, end);
|
|
7069
|
+
if (intersectStart > intersectEnd) return [];
|
|
7070
|
+
return [translateRange(isRow ? {
|
|
7071
|
+
startRow: intersectStart,
|
|
7072
|
+
endRow: intersectEnd,
|
|
7073
|
+
startColumn: targetRange.startColumn,
|
|
7074
|
+
endColumn: targetRange.endColumn
|
|
7075
|
+
} : {
|
|
7076
|
+
startRow: targetRange.startRow,
|
|
7077
|
+
endRow: targetRange.endRow,
|
|
7078
|
+
startColumn: intersectStart,
|
|
7079
|
+
endColumn: intersectEnd
|
|
7080
|
+
}, isRow ? offset : 0, isRow ? 0 : offset)];
|
|
7081
|
+
}));
|
|
7082
|
+
}
|
|
7001
7083
|
/**
|
|
7002
7084
|
* see docs/tldr/ref-range/move-rows-cols.tldr
|
|
7003
7085
|
*/
|
|
@@ -7103,32 +7185,33 @@ const handleMoveRowsCommon = (params, targetRange) => {
|
|
|
7103
7185
|
const fromRow = fromRange.startRow;
|
|
7104
7186
|
const count = fromRange.endRow - fromRange.startRow + 1;
|
|
7105
7187
|
const toRow = toRange.startRow;
|
|
7106
|
-
|
|
7107
|
-
Range.foreach(targetRange, (row, col) => {
|
|
7108
|
-
matrix.setValue(row, col, 1);
|
|
7109
|
-
});
|
|
7110
|
-
matrix.moveRows(fromRow, count, toRow);
|
|
7111
|
-
return queryObjectMatrix(matrix, (value) => value === 1);
|
|
7188
|
+
return moveRangeAlongAxis(targetRange, fromRow, count, toRow, true);
|
|
7112
7189
|
};
|
|
7113
7190
|
const handleReorderRangeCommon = (param, targetRange) => {
|
|
7114
7191
|
const { range, order } = param.params || {};
|
|
7115
7192
|
if (!range || !order) return [targetRange];
|
|
7116
|
-
const
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
if (
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7193
|
+
const overwrittenRows = [];
|
|
7194
|
+
const additions = [];
|
|
7195
|
+
const startColumn = Math.max(range.startColumn, targetRange.startColumn);
|
|
7196
|
+
const endColumn = Math.min(range.endColumn, targetRange.endColumn);
|
|
7197
|
+
Object.keys(order).forEach((key) => {
|
|
7198
|
+
const row = Number(key);
|
|
7199
|
+
if (row < range.startRow || row > range.endRow) return;
|
|
7200
|
+
overwrittenRows.push({
|
|
7201
|
+
startRow: row,
|
|
7202
|
+
endRow: row,
|
|
7203
|
+
startColumn: range.startColumn,
|
|
7204
|
+
endColumn: range.endColumn
|
|
7205
|
+
});
|
|
7206
|
+
const sourceRow = order[row];
|
|
7207
|
+
if (sourceRow >= targetRange.startRow && sourceRow <= targetRange.endRow && startColumn <= endColumn) additions.push({
|
|
7208
|
+
startRow: row,
|
|
7209
|
+
endRow: row,
|
|
7210
|
+
startColumn,
|
|
7211
|
+
endColumn
|
|
7212
|
+
});
|
|
7130
7213
|
});
|
|
7131
|
-
return
|
|
7214
|
+
return mergeAndSortRanges([...Rectangle.subtractMulti([targetRange], overwrittenRows), ...additions]);
|
|
7132
7215
|
};
|
|
7133
7216
|
const handleMoveCols = (params, targetRange) => {
|
|
7134
7217
|
const { fromRange, toRange } = params.params || {};
|
|
@@ -7159,12 +7242,7 @@ const handleMoveColsCommon = (params, targetRange) => {
|
|
|
7159
7242
|
const fromCol = fromRange.startColumn;
|
|
7160
7243
|
const count = fromRange.endColumn - fromRange.startColumn + 1;
|
|
7161
7244
|
const toCol = toRange.startColumn;
|
|
7162
|
-
|
|
7163
|
-
Range.foreach(targetRange, (row, col) => {
|
|
7164
|
-
matrix.setValue(row, col, 1);
|
|
7165
|
-
});
|
|
7166
|
-
matrix.moveColumns(fromCol, count, toCol);
|
|
7167
|
-
return queryObjectMatrix(matrix, (value) => value === 1);
|
|
7245
|
+
return moveRangeAlongAxis(targetRange, fromCol, count, toCol, false);
|
|
7168
7246
|
};
|
|
7169
7247
|
const handleMoveRange = (param, targetRange) => {
|
|
7170
7248
|
var _param$params, _param$params2;
|
|
@@ -7194,32 +7272,12 @@ const handleMoveRangeCommon = (param, targetRange) => {
|
|
|
7194
7272
|
const relativeRange = Rectangle.getRelativeRange(targetRange, fromRange);
|
|
7195
7273
|
return [Rectangle.getPositionRange(relativeRange, toRange)];
|
|
7196
7274
|
}
|
|
7197
|
-
const matrix = new ObjectMatrix();
|
|
7198
|
-
Range.foreach(targetRange, (row, col) => {
|
|
7199
|
-
matrix.setValue(row, col, 1);
|
|
7200
|
-
});
|
|
7201
|
-
const fromMatrix = new ObjectMatrix();
|
|
7202
|
-
const loopFromRange = getIntersectRange(fromRange, targetRange);
|
|
7203
|
-
loopFromRange && Range.foreach(loopFromRange, (row, col) => {
|
|
7204
|
-
if (matrix.getValue(row, col)) {
|
|
7205
|
-
matrix.setValue(row, col, void 0);
|
|
7206
|
-
fromMatrix.setValue(row, col, 1);
|
|
7207
|
-
}
|
|
7208
|
-
});
|
|
7209
7275
|
const columnOffset = toRange.startColumn - fromRange.startColumn;
|
|
7210
7276
|
const rowOffset = toRange.startRow - fromRange.startRow;
|
|
7211
|
-
const
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
endRow: toRange.endRow - rowOffset
|
|
7216
|
-
};
|
|
7217
|
-
loopToRange && Range.foreach(loopToRange, (row, col) => {
|
|
7218
|
-
const targetRow = row + rowOffset;
|
|
7219
|
-
const targetCol = col + columnOffset;
|
|
7220
|
-
matrix.setValue(targetRow, targetCol, fromMatrix.getValue(row, col) ?? 0);
|
|
7221
|
-
});
|
|
7222
|
-
return queryObjectMatrix(matrix, (value) => value === 1);
|
|
7277
|
+
const movedRange = getIntersectRange(fromRange, targetRange);
|
|
7278
|
+
const remainingRanges = Rectangle.subtractMulti([targetRange], [fromRange, toRange]);
|
|
7279
|
+
const translatedRanges = movedRange ? [translateRange(movedRange, rowOffset, columnOffset)] : [];
|
|
7280
|
+
return mergeAndSortRanges([...remainingRanges, ...translatedRanges]);
|
|
7223
7281
|
};
|
|
7224
7282
|
const handleBaseRemoveRange = (_removeRange, _targetRange) => {
|
|
7225
7283
|
const removeRange = handleRangeTypeInput(_removeRange);
|
|
@@ -7429,16 +7487,7 @@ const handleInsertRangeMoveDownCommon = (param, targetRange) => {
|
|
|
7429
7487
|
const noMoveRanges = Rectangle.subtract(targetRange, bottomRange);
|
|
7430
7488
|
const targetMoveRange = getIntersectRange(bottomRange, targetRange);
|
|
7431
7489
|
if (!targetMoveRange) return [targetRange];
|
|
7432
|
-
|
|
7433
|
-
noMoveRanges.forEach((noMoveRange) => {
|
|
7434
|
-
Range.foreach(noMoveRange, (row, col) => {
|
|
7435
|
-
matrix.setValue(row, col, 1);
|
|
7436
|
-
});
|
|
7437
|
-
});
|
|
7438
|
-
targetMoveRange && Range.foreach(targetMoveRange, (row, col) => {
|
|
7439
|
-
matrix.setValue(row + moveCount, col, 1);
|
|
7440
|
-
});
|
|
7441
|
-
return queryObjectMatrix(matrix, (v) => v === 1);
|
|
7490
|
+
return sortRanges([...noMoveRanges, translateRange(targetMoveRange, moveCount, 0)]);
|
|
7442
7491
|
};
|
|
7443
7492
|
const handleInsertRangeMoveRight = (param, targetRange) => {
|
|
7444
7493
|
var _param$params11;
|
|
@@ -7466,16 +7515,7 @@ const handleInsertRangeMoveRightCommon = (param, targetRange) => {
|
|
|
7466
7515
|
const noMoveRanges = Rectangle.subtract(targetRange, bottomRange);
|
|
7467
7516
|
const targetMoveRange = getIntersectRange(bottomRange, targetRange);
|
|
7468
7517
|
if (!targetMoveRange) return [targetRange];
|
|
7469
|
-
|
|
7470
|
-
noMoveRanges.forEach((noMoveRange) => {
|
|
7471
|
-
Range.foreach(noMoveRange, (row, col) => {
|
|
7472
|
-
matrix.setValue(row, col, 1);
|
|
7473
|
-
});
|
|
7474
|
-
});
|
|
7475
|
-
targetMoveRange && Range.foreach(targetMoveRange, (row, col) => {
|
|
7476
|
-
matrix.setValue(row, col + moveCount, 1);
|
|
7477
|
-
});
|
|
7478
|
-
return queryObjectMatrix(matrix, (v) => v === 1);
|
|
7518
|
+
return sortRanges([...noMoveRanges, translateRange(targetMoveRange, 0, moveCount)]);
|
|
7479
7519
|
};
|
|
7480
7520
|
const handleDeleteRangeMoveLeft = (param, targetRange) => {
|
|
7481
7521
|
var _param$params13;
|
|
@@ -7505,23 +7545,11 @@ const handleDeleteRangeMoveLeftCommon = (param, targetRange) => {
|
|
|
7505
7545
|
endColumn: Number.POSITIVE_INFINITY
|
|
7506
7546
|
};
|
|
7507
7547
|
const moveCount = range.endColumn - range.startColumn + 1;
|
|
7508
|
-
const targetDeleteRange = getIntersectRange(range, targetRange);
|
|
7509
7548
|
const noMoveRanges = Rectangle.subtract(targetRange, rightRange);
|
|
7510
7549
|
const targetMoveRange = getIntersectRange(rightRange, targetRange);
|
|
7511
|
-
if (!
|
|
7512
|
-
const
|
|
7513
|
-
|
|
7514
|
-
matrix.setValue(row, col - moveCount, 1);
|
|
7515
|
-
});
|
|
7516
|
-
targetDeleteRange && Range.foreach(targetDeleteRange, (row, col) => {
|
|
7517
|
-
matrix.setValue(row, col - moveCount, 0);
|
|
7518
|
-
});
|
|
7519
|
-
noMoveRanges.forEach((noMoveRange) => {
|
|
7520
|
-
Range.foreach(noMoveRange, (row, col) => {
|
|
7521
|
-
matrix.setValue(row, col, 1);
|
|
7522
|
-
});
|
|
7523
|
-
});
|
|
7524
|
-
return queryObjectMatrix(matrix, (v) => v === 1);
|
|
7550
|
+
if (!targetMoveRange) return [targetRange];
|
|
7551
|
+
const movedRanges = targetMoveRange ? Rectangle.subtract(targetMoveRange, range).map((target) => translateRange(target, 0, -moveCount)) : [];
|
|
7552
|
+
return mergeAndSortRanges([...noMoveRanges, ...movedRanges]);
|
|
7525
7553
|
};
|
|
7526
7554
|
const handleDeleteRangeMoveUp = (param, targetRange) => {
|
|
7527
7555
|
var _param$params15;
|
|
@@ -7550,23 +7578,11 @@ const handleDeleteRangeMoveUpCommon = (param, targetRange) => {
|
|
|
7550
7578
|
endRow: Number.POSITIVE_INFINITY
|
|
7551
7579
|
};
|
|
7552
7580
|
const moveCount = range.endRow - range.startRow + 1;
|
|
7553
|
-
const targetDeleteRange = getIntersectRange(range, targetRange);
|
|
7554
7581
|
const noMoveRanges = Rectangle.subtract(targetRange, bottomRange);
|
|
7555
7582
|
const targetMoveRange = getIntersectRange(bottomRange, targetRange);
|
|
7556
|
-
if (!
|
|
7557
|
-
const
|
|
7558
|
-
|
|
7559
|
-
matrix.setValue(row - moveCount, col, 1);
|
|
7560
|
-
});
|
|
7561
|
-
targetDeleteRange && Range.foreach(targetDeleteRange, (row, col) => {
|
|
7562
|
-
matrix.setValue(row - moveCount, col, 0);
|
|
7563
|
-
});
|
|
7564
|
-
noMoveRanges.forEach((noMoveRange) => {
|
|
7565
|
-
Range.foreach(noMoveRange, (row, col) => {
|
|
7566
|
-
matrix.setValue(row, col, 1);
|
|
7567
|
-
});
|
|
7568
|
-
});
|
|
7569
|
-
return queryObjectMatrix(matrix, (v) => v === 1);
|
|
7583
|
+
if (!targetMoveRange) return [targetRange];
|
|
7584
|
+
const movedRanges = targetMoveRange ? Rectangle.subtract(targetMoveRange, range).map((target) => translateRange(target, -moveCount, 0)) : [];
|
|
7585
|
+
return mergeAndSortRanges([...noMoveRanges, ...movedRanges]);
|
|
7570
7586
|
};
|
|
7571
7587
|
const handleRemoveRowCommon = (param, targetRange) => {
|
|
7572
7588
|
const mergedRemoved = mergeIntervals((param.ranges ?? [param.range]).map((range) => [range.startRow, range.endRow]));
|
|
@@ -13896,7 +13912,7 @@ const SetFrozenCommand = {
|
|
|
13896
13912
|
if (!target) return false;
|
|
13897
13913
|
const { unitId, subUnitId, worksheet } = target;
|
|
13898
13914
|
const { startColumn, startRow, xSplit, ySplit } = params;
|
|
13899
|
-
if (startRow >= worksheet.getRowCount() || startColumn >= worksheet.getColumnCount() || xSplit >= worksheet.getColumnCount() || ySplit >= worksheet.getRowCount()) return false;
|
|
13915
|
+
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;
|
|
13900
13916
|
const redoMutationParams = {
|
|
13901
13917
|
unitId,
|
|
13902
13918
|
subUnitId,
|
|
@@ -16936,18 +16952,26 @@ const TextToNumberCommand = {
|
|
|
16936
16952
|
const undoRedoService = accessor.get(IUndoRedoService);
|
|
16937
16953
|
const { worksheet, unitId, subUnitId } = target;
|
|
16938
16954
|
const newCellValue = new ObjectMatrix();
|
|
16955
|
+
const setNumfmtCells = [];
|
|
16939
16956
|
const removeNumfmtRanges = [];
|
|
16940
16957
|
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++) {
|
|
16941
16958
|
var _worksheet$getStyleDa, _cell$s;
|
|
16942
16959
|
if (newCellValue.getValue(r, c)) continue;
|
|
16943
16960
|
const cell = worksheet.getCellRaw(r, c);
|
|
16944
16961
|
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;
|
|
16945
|
-
|
|
16962
|
+
const parsedValue = typeof (cell === null || cell === void 0 ? void 0 : cell.v) === "string" ? getNumfmtParseValueFilter(cell.v) : null;
|
|
16963
|
+
const numberValue = 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;
|
|
16964
|
+
if (cell && cell.v && (cell.t !== CellValueType.NUMBER || isTextFormat(pattern)) && numberValue !== null) {
|
|
16946
16965
|
newCellValue.setValue(r, c, {
|
|
16947
|
-
v:
|
|
16966
|
+
v: numberValue,
|
|
16948
16967
|
t: CellValueType.NUMBER
|
|
16949
16968
|
});
|
|
16950
|
-
if (isTextFormat(pattern))
|
|
16969
|
+
if ((parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.z) && (!pattern || isTextFormat(pattern))) setNumfmtCells.push({
|
|
16970
|
+
pattern: parsedValue.z,
|
|
16971
|
+
row: r,
|
|
16972
|
+
col: c
|
|
16973
|
+
});
|
|
16974
|
+
else if (isTextFormat(pattern)) removeNumfmtRanges.push({
|
|
16951
16975
|
startRow: r,
|
|
16952
16976
|
endRow: r,
|
|
16953
16977
|
startColumn: c,
|
|
@@ -16968,6 +16992,14 @@ const TextToNumberCommand = {
|
|
|
16968
16992
|
id: SetRangeValuesMutation.id,
|
|
16969
16993
|
params: SetRangeValuesUndoMutationFactory(accessor, setRangeValuesMutationParams)
|
|
16970
16994
|
}];
|
|
16995
|
+
if (setNumfmtCells.length) {
|
|
16996
|
+
const setNumfmtMutationParams = transformCellsToRange(unitId, subUnitId, setNumfmtCells);
|
|
16997
|
+
redos.push({
|
|
16998
|
+
id: SetNumfmtMutation.id,
|
|
16999
|
+
params: setNumfmtMutationParams
|
|
17000
|
+
});
|
|
17001
|
+
undos.push(...factorySetNumfmtUndoMutation(accessor, setNumfmtMutationParams));
|
|
17002
|
+
}
|
|
16971
17003
|
if (removeNumfmtRanges.length) {
|
|
16972
17004
|
const removeNumfmtMutationParams = {
|
|
16973
17005
|
unitId,
|
|
@@ -18185,6 +18217,19 @@ let SheetPermissionCheckController = class SheetPermissionCheckController extend
|
|
|
18185
18217
|
}, params.unitId, params.localSheetId);
|
|
18186
18218
|
errorMsg = this._localeService.t("sheets.permission.dialog.editErr");
|
|
18187
18219
|
break;
|
|
18220
|
+
case TextToNumberCommand.id:
|
|
18221
|
+
params = commandInfo.params;
|
|
18222
|
+
permission = this.permissionCheckWithRanges({
|
|
18223
|
+
workbookTypes: [WorkbookEditablePermission],
|
|
18224
|
+
worksheetTypes: [
|
|
18225
|
+
WorksheetSetCellValuePermission,
|
|
18226
|
+
WorksheetSetCellStylePermission,
|
|
18227
|
+
WorksheetEditPermission
|
|
18228
|
+
],
|
|
18229
|
+
rangeTypes: [RangeProtectionPermissionEditPoint]
|
|
18230
|
+
}, 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);
|
|
18231
|
+
errorMsg = this._localeService.t("sheets.permission.dialog.editErr");
|
|
18232
|
+
break;
|
|
18188
18233
|
default: break;
|
|
18189
18234
|
}
|
|
18190
18235
|
if (!permission) this.blockExecuteWithoutPermission(errorMsg);
|
|
@@ -19324,7 +19369,7 @@ RangeProtectionCache = __decorate([
|
|
|
19324
19369
|
//#endregion
|
|
19325
19370
|
//#region package.json
|
|
19326
19371
|
var name = "@univerjs/sheets";
|
|
19327
|
-
var version = "1.0.0-beta.
|
|
19372
|
+
var version = "1.0.0-beta.2";
|
|
19328
19373
|
|
|
19329
19374
|
//#endregion
|
|
19330
19375
|
//#region src/controllers/active-worksheet.controller.ts
|
package/lib/es/locale/ar-SA.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "سيؤدي الاستمرار في الدمج إلى الاحتفاظ بقيمة الخلية العلوية اليسرى فقط، وسيتم تجاهل القيم الأخرى. هل أنت متأكد من الاستمرار؟",
|
|
43
43
|
cancel: "إلغاء الدمج",
|
|
44
44
|
confirm: "الاستمرار في الدمج",
|
|
45
|
-
warning: "تحذير"
|
|
46
|
-
dismantleMergeCellWarning: "سيؤدي هذا إلى تقسيم بعض الخلايا المدمجة. هل تريد الاستمرار؟"
|
|
45
|
+
warning: "تحذير"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/ca-ES.js
CHANGED
|
@@ -24,11 +24,11 @@ const locale = { sheets: {
|
|
|
24
24
|
editErr: "L'interval està protegit i no teniu permís d'edició. Per editar, contacteu amb el creador.",
|
|
25
25
|
formulaErr: "L'interval o l'interval referenciat està protegit, i no teniu permís d'edició. Per editar, contacteu amb el creador.",
|
|
26
26
|
insertOrDeleteMoveRangeErr: "L'interval inserit o suprimit s'interseca amb l'interval protegit, i aquesta operació no és compatible per ara.",
|
|
27
|
-
insertRowColErr: "L'interval
|
|
27
|
+
insertRowColErr: "L'interval està protegit i no teniu permís per inserir files i columnes. Per inserir files i columnes, contacteu amb el creador.",
|
|
28
28
|
moveRangeErr: "L'interval està protegit i no teniu permís per moure la selecció. Per moure la selecció, contacteu amb el creador.",
|
|
29
29
|
moveRowColErr: "L'interval està protegit i no teniu permís per moure files i columnes. Per moure files i columnes, contacteu amb el creador.",
|
|
30
30
|
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.",
|
|
31
|
-
removeRowColErr: "L'interval
|
|
31
|
+
removeRowColErr: "L'interval està protegit i no teniu permís per suprimir files i columnes. Per suprimir files i columnes, contacteu amb el creador.",
|
|
32
32
|
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.",
|
|
33
33
|
setStyleErr: "L'interval està protegit i no teniu permís per establir estils. Per establir estils, contacteu amb el creador."
|
|
34
34
|
} },
|
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Continuar la fusió només conservarà el valor de la cel·la superior esquerra, descartant els altres valors. Estàs segur de continuar?",
|
|
43
43
|
cancel: "Cancel·lar fusió",
|
|
44
44
|
confirm: "Continuar fusió",
|
|
45
|
-
warning: "Avís"
|
|
46
|
-
dismantleMergeCellWarning: "Això dividirà algunes cel·les fusionades. Vols continuar?"
|
|
45
|
+
warning: "Avís"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/de-DE.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
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?",
|
|
43
43
|
cancel: "Zusammenführen abbrechen",
|
|
44
44
|
confirm: "Zusammenführen fortsetzen",
|
|
45
|
-
warning: "Warnung"
|
|
46
|
-
dismantleMergeCellWarning: "Dadurch werden einige verbundene Zellen aufgeteilt. Möchten Sie fortfahren?"
|
|
45
|
+
warning: "Warnung"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/en-US.js
CHANGED
|
@@ -57,8 +57,7 @@ const locale = { sheets: {
|
|
|
57
57
|
title: "Continue merging would only keep the upper-left cell value, discard other values. Are you sure to continue?",
|
|
58
58
|
cancel: "Cancel merging",
|
|
59
59
|
confirm: "Continue merging",
|
|
60
|
-
warning: "Warning"
|
|
61
|
-
dismantleMergeCellWarning: "This will cause some merged cells to be split. Do you want to continue?"
|
|
60
|
+
warning: "Warning"
|
|
62
61
|
} }
|
|
63
62
|
} };
|
|
64
63
|
|
package/lib/es/locale/es-ES.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Continuar la fusión solo conservará el valor de la celda superior izquierda, descartando los otros valores. ¿Estás seguro de continuar?",
|
|
43
43
|
cancel: "Cancelar fusión",
|
|
44
44
|
confirm: "Continuar fusión",
|
|
45
|
-
warning: "Advertencia"
|
|
46
|
-
dismantleMergeCellWarning: "Esto dividirá algunas celdas fusionadas. ¿Quieres continuar?"
|
|
45
|
+
warning: "Advertencia"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/fa-IR.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "ادغام ادامهدار فقط مقدار سلول بالا-چپ را حفظ میکند و سایر مقادیر را حذف میکند. آیا مطمئن هستید که ادامه میدهید؟",
|
|
43
43
|
cancel: "لغو ادغام",
|
|
44
44
|
confirm: "ادغام ادامهدار",
|
|
45
|
-
warning: "هشدار"
|
|
46
|
-
dismantleMergeCellWarning: "این باعث تقسیم برخی سلولهای ادغامشده میشود. آیا میخواهید ادامه دهید؟"
|
|
45
|
+
warning: "هشدار"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/fr-FR.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
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 ?",
|
|
43
43
|
cancel: "Annuler la fusion",
|
|
44
44
|
confirm: "Continuer la fusion",
|
|
45
|
-
warning: "Avertissement"
|
|
46
|
-
dismantleMergeCellWarning: "Cela divisera certaines cellules fusionnées. Voulez-vous continuer ?"
|
|
45
|
+
warning: "Avertissement"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/id-ID.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Melanjutkan penggabungan hanya akan menyimpan nilai sel kiri atas, membuang nilai lainnya. Apakah Anda yakin ingin melanjutkan?",
|
|
43
43
|
cancel: "Batalkan penggabungan",
|
|
44
44
|
confirm: "Lanjutkan penggabungan",
|
|
45
|
-
warning: "Peringatan"
|
|
46
|
-
dismantleMergeCellWarning: "Ini akan menyebabkan beberapa sel gabungan terpisah. Apakah Anda ingin melanjutkan?"
|
|
45
|
+
warning: "Peringatan"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/it-IT.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Continuando l'unione verrà mantenuto solo il valore della cella in alto a sinistra, scartando gli altri valori. Continuare?",
|
|
43
43
|
cancel: "Annulla unione",
|
|
44
44
|
confirm: "Continua unione",
|
|
45
|
-
warning: "Avviso"
|
|
46
|
-
dismantleMergeCellWarning: "Questo comporterà la divisione di alcune celle unite. Continuare?"
|
|
45
|
+
warning: "Avviso"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/ja-JP.js
CHANGED
package/lib/es/locale/ko-KR.js
CHANGED
package/lib/es/locale/pl-PL.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
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ć?",
|
|
43
43
|
cancel: "Anuluj scalanie",
|
|
44
44
|
confirm: "Kontynuuj scalanie",
|
|
45
|
-
warning: "Ostrzeżenie"
|
|
46
|
-
dismantleMergeCellWarning: "Spowoduje to rozdzielenie niektórych scalonych komórek. Czy chcesz kontynuować?"
|
|
45
|
+
warning: "Ostrzeżenie"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/pt-BR.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Continuar a mesclagem manterá apenas o valor da célula superior esquerda, descartando os outros valores. Tem certeza de que deseja continuar?",
|
|
43
43
|
cancel: "Cancelar mesclagem",
|
|
44
44
|
confirm: "Continuar mesclagem",
|
|
45
|
-
warning: "Aviso"
|
|
46
|
-
dismantleMergeCellWarning: "Isso fará com que algumas células mescladas sejam divididas. Deseja continuar?"
|
|
45
|
+
warning: "Aviso"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/ru-RU.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Продолжение объединения сохранит только значение верхней левой ячейки, остальные значения будут удалены. Вы уверены, что хотите продолжить?",
|
|
43
43
|
cancel: "Отменить объединение",
|
|
44
44
|
confirm: "Продолжить объединение",
|
|
45
|
-
warning: "Предупреждение"
|
|
46
|
-
dismantleMergeCellWarning: "Это приведет к разделению некоторых объединенных ячеек. Вы хотите продолжить?"
|
|
45
|
+
warning: "Предупреждение"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/sk-SK.js
CHANGED
|
@@ -24,11 +24,11 @@ const locale = { sheets: {
|
|
|
24
24
|
editErr: "Rozsah je chránený a nemáte oprávnenie na úpravy. Ak chcete upravovať, kontaktujte autora.",
|
|
25
25
|
formulaErr: "Rozsah alebo referenčný rozsah je chránený a nemáte oprávnenie na úpravu. Ak chcete upravovať, kontaktujte autora.",
|
|
26
26
|
insertOrDeleteMoveRangeErr: "Vložený alebo odstránený rozsah sa prekrýva s chráneným rozsahom a táto operácia zatiaľ nie je podporovaná.",
|
|
27
|
-
insertRowColErr: "Rozsah je chránený a nemáte
|
|
27
|
+
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.",
|
|
28
28
|
moveRangeErr: "Rozsah je chránený a nemáte oprávnenie presúvať výber. Ak chcete presúvať výber, kontaktujte autora.",
|
|
29
29
|
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.",
|
|
30
30
|
operatorSheetErr: "Hárok je chránený a nemáte oprávnenie pracovať s hárkom. Ak chcete pracovať s hárkom, kontaktujte autora.",
|
|
31
|
-
removeRowColErr: "Rozsah je chránený a nemáte
|
|
31
|
+
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.",
|
|
32
32
|
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.",
|
|
33
33
|
setStyleErr: "Rozsah je chránený a nemáte oprávnenie nastavovať štýly. Ak chcete nastavovať štýly, kontaktujte autora."
|
|
34
34
|
} },
|
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
title: "Pokračovanie v zlúčení zachová iba hodnotu hornej ľavej bunky, ostatné hodnoty sa zahodia. Ste si istí, že chcete pokračovať?",
|
|
43
43
|
cancel: "Zrušiť zlúčenie",
|
|
44
44
|
confirm: "Pokračovať v zlúčení",
|
|
45
|
-
warning: "Varovanie"
|
|
46
|
-
dismantleMergeCellWarning: "To spôsobí rozdelenie niektorých zlúčených buniek. Chcete pokračovať?"
|
|
45
|
+
warning: "Varovanie"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/vi-VN.js
CHANGED
|
@@ -42,8 +42,7 @@ const locale = { sheets: {
|
|
|
42
42
|
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?",
|
|
43
43
|
cancel: "Hủy hợp nhất",
|
|
44
44
|
confirm: "Tiếp tục hợp nhất",
|
|
45
|
-
warning: "Cảnh báo"
|
|
46
|
-
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?"
|
|
45
|
+
warning: "Cảnh báo"
|
|
47
46
|
} }
|
|
48
47
|
} };
|
|
49
48
|
|
package/lib/es/locale/zh-CN.js
CHANGED
package/lib/es/locale/zh-HK.js
CHANGED