@rowsncolumns/spreadsheet-state 28.0.67 → 28.0.68
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/dist/cjs/helpers/sheet-title.d.ts +3 -0
- package/dist/cjs/helpers/sheet-title.d.ts.map +1 -1
- package/dist/cjs/helpers/sheet-title.js +10 -1
- package/dist/cjs/hooks/use-on-rename-sheet.js +2 -2
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +62 -60
- package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-table-column.js +4 -3
- package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-table-row.js +19 -8
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +5 -4
- package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-table-row.js +19 -9
- package/dist/cjs/interface/update-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/update-sheet.js +4 -1
- package/dist/esm/helpers/sheet-title.d.ts +3 -0
- package/dist/esm/helpers/sheet-title.d.ts.map +1 -1
- package/dist/esm/helpers/sheet-title.js +9 -0
- package/dist/esm/hooks/use-on-rename-sheet.js +2 -2
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +30 -18
- package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-table-column.js +4 -2
- package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-table-row.js +17 -8
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +5 -3
- package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-table-row.js +17 -9
- package/dist/esm/interface/update-sheet.d.ts.map +1 -1
- package/dist/esm/interface/update-sheet.js +4 -1
- package/package.json +22 -22
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Sheet } from "@rowsncolumns/spreadsheet";
|
|
2
2
|
export declare const MAX_SHEET_TITLE_LENGTH = 32;
|
|
3
3
|
export declare const truncateSheetTitle: (title: string) => string;
|
|
4
|
+
/** Worksheet names cannot be empty or whitespace-only. */
|
|
5
|
+
export declare const isValidSheetTitle: (title: string) => boolean;
|
|
6
|
+
/** Truncates a valid title; drops an invalid (blank) one so the rest of the spec still applies. */
|
|
4
7
|
export declare const sanitizeSheetSpecTitle: <S extends Sheet>(sheetSpec: Partial<S>) => Partial<S>;
|
|
5
8
|
//# sourceMappingURL=sheet-title.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-title.d.ts","sourceRoot":"","sources":["../../../helpers/sheet-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAElD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,KAAK,EACpD,WAAW,OAAO,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"sheet-title.d.ts","sourceRoot":"","sources":["../../../helpers/sheet-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAElD,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,OAEjD,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,KAAK,EACpD,WAAW,OAAO,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,CAAC,CAcX,CAAC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
1
|
+
import { __assign, __rest } from "tslib";
|
|
2
2
|
export var MAX_SHEET_TITLE_LENGTH = 32;
|
|
3
3
|
export var truncateSheetTitle = function (title) {
|
|
4
4
|
return title.slice(0, MAX_SHEET_TITLE_LENGTH);
|
|
5
5
|
};
|
|
6
|
+
/** Worksheet names cannot be empty or whitespace-only. */
|
|
7
|
+
export var isValidSheetTitle = function (title) {
|
|
8
|
+
return title.trim().length > 0;
|
|
9
|
+
};
|
|
10
|
+
/** Truncates a valid title; drops an invalid (blank) one so the rest of the spec still applies. */
|
|
6
11
|
export var sanitizeSheetSpecTitle = function (sheetSpec) {
|
|
7
12
|
if (typeof sheetSpec.title !== "string") {
|
|
8
13
|
return sheetSpec;
|
|
9
14
|
}
|
|
15
|
+
if (!isValidSheetTitle(sheetSpec.title)) {
|
|
16
|
+
var _title = sheetSpec.title, rest = __rest(sheetSpec, ["title"]);
|
|
17
|
+
return rest;
|
|
18
|
+
}
|
|
10
19
|
return __assign(__assign({}, sheetSpec), { title: truncateSheetTitle(sheetSpec.title) });
|
|
11
20
|
};
|
|
@@ -2,7 +2,7 @@ import { __assign, __read } from "tslib";
|
|
|
2
2
|
import { produceWithPatches } from "immer";
|
|
3
3
|
import { useCallback } from "react";
|
|
4
4
|
import { updateFormulaSheetReferences } from "../api/rename-sheet";
|
|
5
|
-
import { truncateSheetTitle } from "../helpers/sheet-title";
|
|
5
|
+
import { isValidSheetTitle, truncateSheetTitle } from "../helpers/sheet-title";
|
|
6
6
|
import { useCanEditSheet, useCanEditWorkbook } from "./use-can-edit-cellrange";
|
|
7
7
|
export var useOnRenameSheet = function (_a) {
|
|
8
8
|
var locale = _a.locale, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeActiveCell = _a.onChangeActiveCell, getActiveCell = _a.getActiveCell, getGraphNodes = _a.getGraphNodes, getPrecedents = _a.getPrecedents, createHistory = _a.createHistory, onCommand = _a.onCommand;
|
|
@@ -10,7 +10,7 @@ export var useOnRenameSheet = function (_a) {
|
|
|
10
10
|
var canEditWorkbook = useCanEditWorkbook();
|
|
11
11
|
return useCallback(function (sheetId, name, oldName) {
|
|
12
12
|
// Worksheet names cannot be empty or whitespace-only
|
|
13
|
-
if (name
|
|
13
|
+
if (!isValidSheetTitle(name)) {
|
|
14
14
|
console.debug("Sheet name cannot be empty.");
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qbAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qbAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,SAuUjD,CAAC"}
|
|
@@ -59,65 +59,67 @@ export var deleteColumn = function (_a) {
|
|
|
59
59
|
// and table-column splice for partially-overlapped tables.
|
|
60
60
|
onChangeTables === null || onChangeTables === void 0 ? void 0 : onChangeTables(function (prevTables) {
|
|
61
61
|
var _a = __read(produceWithPatches(prevTables, function (draft) {
|
|
62
|
-
var e_1, _a, e_2, _b
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
87
|
-
}
|
|
88
|
-
finally { if (e_2) throw e_2.error; }
|
|
62
|
+
var e_1, _a, e_2, _b;
|
|
63
|
+
var _c;
|
|
64
|
+
for (var idx = draft.length - 1; idx >= 0; idx--) {
|
|
65
|
+
var table = draft[idx];
|
|
66
|
+
if (table.sheetId !== sheetId)
|
|
67
|
+
continue;
|
|
68
|
+
var _d = table.range, startColumnIndex = _d.startColumnIndex, endColumnIndex = _d.endColumnIndex;
|
|
69
|
+
if (maxColumnIndex < startColumnIndex) {
|
|
70
|
+
moveFilterView(table, count, Direction.Left);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (minColumnIndex > endColumnIndex)
|
|
74
|
+
continue;
|
|
75
|
+
if (minColumnIndex <= startColumnIndex &&
|
|
76
|
+
maxColumnIndex >= endColumnIndex) {
|
|
77
|
+
draft.splice(idx, 1);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (table.filterSpecs) {
|
|
81
|
+
try {
|
|
82
|
+
for (var _e = (e_1 = void 0, __values(table.filterSpecs)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
83
|
+
var spec = _f.value;
|
|
84
|
+
if (spec.columnIndex >= minColumnIndex) {
|
|
85
|
+
spec.columnIndex -= count;
|
|
89
86
|
}
|
|
90
87
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
spec.dimensionIndex -= count;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
101
|
-
finally {
|
|
102
|
-
try {
|
|
103
|
-
if (_h && !_h.done && (_c = _g.return)) _c.call(_g);
|
|
104
|
-
}
|
|
105
|
-
finally { if (e_3) throw e_3.error; }
|
|
106
|
-
}
|
|
88
|
+
}
|
|
89
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
90
|
+
finally {
|
|
91
|
+
try {
|
|
92
|
+
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
107
93
|
}
|
|
108
|
-
|
|
109
|
-
(_d = table.columns) === null || _d === void 0 ? void 0 : _d.splice(columnArrayIndex, count);
|
|
110
|
-
var delta = Math.min(table.range.endColumnIndex - minColumnIndex + 1, count);
|
|
111
|
-
table.range.endColumnIndex -= delta;
|
|
94
|
+
finally { if (e_1) throw e_1.error; }
|
|
112
95
|
}
|
|
113
96
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
97
|
+
if (table.sortSpecs) {
|
|
98
|
+
try {
|
|
99
|
+
for (var _g = (e_2 = void 0, __values(table.sortSpecs)), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
100
|
+
var spec = _h.value;
|
|
101
|
+
if (spec.dimensionIndex >= minColumnIndex) {
|
|
102
|
+
spec.dimensionIndex -= count;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
107
|
+
finally {
|
|
108
|
+
try {
|
|
109
|
+
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
|
|
110
|
+
}
|
|
111
|
+
finally { if (e_2) throw e_2.error; }
|
|
112
|
+
}
|
|
119
113
|
}
|
|
120
|
-
|
|
114
|
+
var overlapStart = Math.max(minColumnIndex, startColumnIndex);
|
|
115
|
+
var overlapEnd = Math.min(maxColumnIndex, endColumnIndex);
|
|
116
|
+
var removed = overlapEnd - overlapStart + 1;
|
|
117
|
+
(_c = table.columns) === null || _c === void 0 ? void 0 : _c.splice(overlapStart - startColumnIndex, removed);
|
|
118
|
+
table.range.startColumnIndex = Math.min(startColumnIndex, minColumnIndex);
|
|
119
|
+
table.range.endColumnIndex =
|
|
120
|
+
table.range.startColumnIndex +
|
|
121
|
+
(endColumnIndex - startColumnIndex) -
|
|
122
|
+
removed;
|
|
121
123
|
}
|
|
122
124
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
123
125
|
saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
|
|
@@ -172,7 +174,7 @@ export var deleteColumn = function (_a) {
|
|
|
172
174
|
// Sheet metadata
|
|
173
175
|
onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
|
|
174
176
|
var _a = __read(produceWithPatches(prevSheets, function (draft) {
|
|
175
|
-
var
|
|
177
|
+
var e_3, _a, e_4, _b, e_5, _c;
|
|
176
178
|
var _d;
|
|
177
179
|
var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
178
180
|
if (!sheet)
|
|
@@ -196,12 +198,12 @@ export var deleteColumn = function (_a) {
|
|
|
196
198
|
}
|
|
197
199
|
}
|
|
198
200
|
}
|
|
199
|
-
catch (
|
|
201
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
200
202
|
finally {
|
|
201
203
|
try {
|
|
202
204
|
if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
|
|
203
205
|
}
|
|
204
|
-
finally { if (
|
|
206
|
+
finally { if (e_3) throw e_3.error; }
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
209
|
if (sheet.basicFilter.sortSpecs) {
|
|
@@ -213,12 +215,12 @@ export var deleteColumn = function (_a) {
|
|
|
213
215
|
}
|
|
214
216
|
}
|
|
215
217
|
}
|
|
216
|
-
catch (
|
|
218
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
217
219
|
finally {
|
|
218
220
|
try {
|
|
219
221
|
if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
|
|
220
222
|
}
|
|
221
|
-
finally { if (
|
|
223
|
+
finally { if (e_4) throw e_4.error; }
|
|
222
224
|
}
|
|
223
225
|
}
|
|
224
226
|
var delta = Math.min(endColumnIndex - minColumnIndex + 1, count);
|
|
@@ -234,12 +236,12 @@ export var deleteColumn = function (_a) {
|
|
|
234
236
|
}
|
|
235
237
|
}
|
|
236
238
|
}
|
|
237
|
-
catch (
|
|
239
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
238
240
|
finally {
|
|
239
241
|
try {
|
|
240
242
|
if (sortedColumnIndexes_1_1 && !sortedColumnIndexes_1_1.done && (_c = sortedColumnIndexes_1.return)) _c.call(sortedColumnIndexes_1);
|
|
241
243
|
}
|
|
242
|
-
finally { if (
|
|
244
|
+
finally { if (e_5) throw e_5.error; }
|
|
243
245
|
}
|
|
244
246
|
}
|
|
245
247
|
if (sheet.merges) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-table-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-column.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6OAepE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,CAClB,MACS,WAAW,SAAS,EAAE,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"delete-table-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-column.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6OAepE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,CAClB,MACS,WAAW,SAAS,EAAE,gBAAgB,MAAM,SA8VrD,CAAC"}
|
|
@@ -179,7 +179,9 @@ export var deleteTableColumn = function (_a) {
|
|
|
179
179
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
180
180
|
var e_6, _a, e_7, _b;
|
|
181
181
|
var _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
182
|
-
|
|
182
|
+
// The moved region is every cell after the deleted column within the table's rows,
|
|
183
|
+
// including any table to the right that sits inside that row band.
|
|
184
|
+
var sourceRange = __assign(__assign({}, range), { startColumnIndex: referenceColumnIndex + count, endColumnIndex: Number.MAX_SAFE_INTEGER });
|
|
183
185
|
var movedKeys = new Set();
|
|
184
186
|
/**
|
|
185
187
|
* THREE-PASS FORMULA UPDATE STRATEGY FOR DELETION:
|
|
@@ -308,8 +310,7 @@ export var deleteTableColumn = function (_a) {
|
|
|
308
310
|
continue;
|
|
309
311
|
}
|
|
310
312
|
var startCol = Math.min(Math.max(range.startColumnIndex, 1), dataColumnCount);
|
|
311
|
-
var
|
|
312
|
-
for (var columnIndex = startCol; columnIndex < endCol; columnIndex++) {
|
|
313
|
+
for (var columnIndex = startCol; columnIndex < dataColumnCount; columnIndex++) {
|
|
313
314
|
var cellData = rowValues === null || rowValues === void 0 ? void 0 : rowValues[columnIndex];
|
|
314
315
|
var hasFormula = !!getExtendedValueFormula(getCellUserEnteredValue(cellData));
|
|
315
316
|
if (!hasFormula) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-table-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,kSAiBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MACvB,WAAW,SAAS,EAAE,YAAY,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"delete-table-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,kSAiBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MACvB,WAAW,SAAS,EAAE,YAAY,MAAM,EAAE,SAoYnD,CAAC"}
|
|
@@ -17,6 +17,11 @@ export var deleteTableRow = function (_a) {
|
|
|
17
17
|
var saveHistory = createHistory();
|
|
18
18
|
var _a = rowIndexes, minRowIndex = _a[0], _b = rowIndexes.length - 1, maxRowIndex = _a[_b];
|
|
19
19
|
var count = rowIndexes.length;
|
|
20
|
+
var _c = tableView.range, startColumnIndex = _c.startColumnIndex, endColumnIndex = _c.endColumnIndex;
|
|
21
|
+
var isInsideColumnBand = function (range) {
|
|
22
|
+
return range.startColumnIndex >= startColumnIndex &&
|
|
23
|
+
range.endColumnIndex <= endColumnIndex;
|
|
24
|
+
};
|
|
20
25
|
enqueueStructureChange === null || enqueueStructureChange === void 0 ? void 0 : enqueueStructureChange({
|
|
21
26
|
kind: "delete-table-row",
|
|
22
27
|
sheetId: sheetId,
|
|
@@ -35,14 +40,15 @@ export var deleteTableRow = function (_a) {
|
|
|
35
40
|
try {
|
|
36
41
|
for (var draft_1 = __values(draft), draft_1_1 = draft_1.next(); !draft_1_1.done; draft_1_1 = draft_1.next()) {
|
|
37
42
|
var table = draft_1_1.value;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (minRowIndex < startRowIndex) {
|
|
41
|
-
moveFilterView(table, count, Direction.Up);
|
|
43
|
+
if (table.sheetId !== sheetId || !isInsideColumnBand(table.range)) {
|
|
44
|
+
continue;
|
|
42
45
|
}
|
|
43
|
-
if (
|
|
46
|
+
if (table.id === tableView.id) {
|
|
44
47
|
table.range.endRowIndex -= count;
|
|
45
48
|
}
|
|
49
|
+
else if (maxRowIndex < table.range.startRowIndex) {
|
|
50
|
+
moveFilterView(table, count, Direction.Up);
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -66,7 +72,9 @@ export var deleteTableRow = function (_a) {
|
|
|
66
72
|
for (var idx = draft.length - 1; idx >= 0; idx--) {
|
|
67
73
|
var rule = draft[idx];
|
|
68
74
|
var ranges = (_b = (_a = rule.ranges) === null || _a === void 0 ? void 0 : _a.map(function (range) {
|
|
69
|
-
return
|
|
75
|
+
return isInsideColumnBand(range)
|
|
76
|
+
? updateSheetRangeOnDelete(range, "row", minRowIndex, count, sheetId)
|
|
77
|
+
: range;
|
|
70
78
|
}).filter(function (range) { return !!range; })) !== null && _b !== void 0 ? _b : [];
|
|
71
79
|
if (ranges.length) {
|
|
72
80
|
rule.ranges = ranges;
|
|
@@ -88,7 +96,9 @@ export var deleteTableRow = function (_a) {
|
|
|
88
96
|
for (var idx = draft.length - 1; idx >= 0; idx--) {
|
|
89
97
|
var rule = draft[idx];
|
|
90
98
|
var ranges = (_b = (_a = rule.ranges) === null || _a === void 0 ? void 0 : _a.map(function (range) {
|
|
91
|
-
return
|
|
99
|
+
return isInsideColumnBand(range)
|
|
100
|
+
? updateSheetRangeOnDelete(range, "row", minRowIndex, count, sheetId)
|
|
101
|
+
: range;
|
|
92
102
|
}).filter(function (range) { return !!range; })) !== null && _b !== void 0 ? _b : [];
|
|
93
103
|
if (ranges.length) {
|
|
94
104
|
rule.ranges = ranges;
|
|
@@ -112,7 +122,8 @@ export var deleteTableRow = function (_a) {
|
|
|
112
122
|
if (sheet.rowMetadata) {
|
|
113
123
|
sheet.rowMetadata.splice(minRowIndex, count);
|
|
114
124
|
}
|
|
115
|
-
if (sheet.basicFilter
|
|
125
|
+
if (sheet.basicFilter &&
|
|
126
|
+
isInsideColumnBand(sheet.basicFilter.range)) {
|
|
116
127
|
if (minRowIndex < sheet.basicFilter.range.startRowIndex) {
|
|
117
128
|
moveFilterView(sheet.basicFilter, count, Direction.Up);
|
|
118
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qaAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SA0TtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qaAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SA0TtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
|
|
@@ -349,7 +349,7 @@ export var insertTableColumn = function (_a) {
|
|
|
349
349
|
try {
|
|
350
350
|
for (var draft_3 = __values(draft), draft_3_1 = draft_3.next(); !draft_3_1.done; draft_3_1 = draft_3.next()) {
|
|
351
351
|
var table_1 = draft_3_1.value;
|
|
352
|
-
if (referenceColumnIndex
|
|
352
|
+
if (referenceColumnIndex <= table_1.range.startColumnIndex &&
|
|
353
353
|
table_1.range.startRowIndex >= tableView.range.startRowIndex &&
|
|
354
354
|
table_1.range.endRowIndex <= tableView.range.endRowIndex &&
|
|
355
355
|
table_1.id !== tableView.id) {
|
|
@@ -485,7 +485,9 @@ export var insertTableColumn = function (_a) {
|
|
|
485
485
|
var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
|
|
486
486
|
var range = tableView.range;
|
|
487
487
|
var headerRow = (_c = tableView.headerRow) !== null && _c !== void 0 ? _c : true;
|
|
488
|
-
|
|
488
|
+
// The moved region is every cell at/after the insertion point within the table's
|
|
489
|
+
// rows, including any table to the right that sits inside that row band.
|
|
490
|
+
var sourceRange = __assign(__assign({}, range), { startColumnIndex: referenceColumnIndex, endColumnIndex: Number.MAX_SAFE_INTEGER });
|
|
489
491
|
var movedKeys = new Set();
|
|
490
492
|
// PASS 1
|
|
491
493
|
var insertionRange = {
|
|
@@ -587,8 +589,7 @@ export var insertTableColumn = function (_a) {
|
|
|
587
589
|
for (var rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
|
|
588
590
|
var dataColumnCount = (_j = (_h = (_g = (_f = draft[sheetId]) === null || _f === void 0 ? void 0 : _f[rowIndex]) === null || _g === void 0 ? void 0 : _g.values) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0;
|
|
589
591
|
var startCol = Math.min(Math.max(referenceColumnIndex, 1), dataColumnCount);
|
|
590
|
-
var
|
|
591
|
-
for (var columnIndex = startCol; columnIndex < endCol; columnIndex++) {
|
|
592
|
+
for (var columnIndex = startCol; columnIndex < dataColumnCount; columnIndex++) {
|
|
592
593
|
moveFormulaAtPosition({
|
|
593
594
|
draft: draft,
|
|
594
595
|
position: { sheetId: sheetId, rowIndex: rowIndex, columnIndex: columnIndex },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iTAkBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iTAkBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,SAubxD,CAAC"}
|
|
@@ -17,6 +17,11 @@ export var insertTableRow = function (_a) {
|
|
|
17
17
|
(relativeRowIndex !== null && relativeRowIndex !== void 0 ? relativeRowIndex : tableView.range.endRowIndex - tableView.range.startRowIndex + 1);
|
|
18
18
|
var numRows = (_a = rowData === null || rowData === void 0 ? void 0 : rowData.length) !== null && _a !== void 0 ? _a : 1;
|
|
19
19
|
var sheetId = tableView.sheetId;
|
|
20
|
+
var _b = tableView.range, startColumnIndex = _b.startColumnIndex, endColumnIndex = _b.endColumnIndex;
|
|
21
|
+
var isInsideColumnBand = function (range) {
|
|
22
|
+
return range.startColumnIndex >= startColumnIndex &&
|
|
23
|
+
range.endColumnIndex <= endColumnIndex;
|
|
24
|
+
};
|
|
20
25
|
enqueueStructureChange === null || enqueueStructureChange === void 0 ? void 0 : enqueueStructureChange({
|
|
21
26
|
kind: "insert-table-row",
|
|
22
27
|
sheetId: sheetId,
|
|
@@ -36,15 +41,15 @@ export var insertTableRow = function (_a) {
|
|
|
36
41
|
try {
|
|
37
42
|
for (var draft_1 = __values(draft), draft_1_1 = draft_1.next(); !draft_1_1.done; draft_1_1 = draft_1.next()) {
|
|
38
43
|
var table = draft_1_1.value;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (referenceRowIndex < startRowIndex) {
|
|
42
|
-
moveFilterView(table, numRows, Direction.Down);
|
|
44
|
+
if (table.sheetId !== sheetId || !isInsideColumnBand(table.range)) {
|
|
45
|
+
continue;
|
|
43
46
|
}
|
|
44
|
-
if (
|
|
45
|
-
referenceRowIndex <= endRowIndex + 1) {
|
|
47
|
+
if (table.id === tableView.id) {
|
|
46
48
|
table.range.endRowIndex += numRows;
|
|
47
49
|
}
|
|
50
|
+
else if (referenceRowIndex <= table.range.startRowIndex) {
|
|
51
|
+
moveFilterView(table, numRows, Direction.Down);
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
55
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -68,7 +73,9 @@ export var insertTableRow = function (_a) {
|
|
|
68
73
|
for (var idx = draft.length - 1; idx >= 0; idx--) {
|
|
69
74
|
var rule = draft[idx];
|
|
70
75
|
var ranges = (_b = (_a = rule.ranges) === null || _a === void 0 ? void 0 : _a.map(function (range) {
|
|
71
|
-
return
|
|
76
|
+
return isInsideColumnBand(range)
|
|
77
|
+
? updateSheetRangeOnInsert(range, "row", referenceRowIndex, numRows, sheetId)
|
|
78
|
+
: range;
|
|
72
79
|
}).filter(function (range) { return !!range; })) !== null && _b !== void 0 ? _b : [];
|
|
73
80
|
if (ranges.length) {
|
|
74
81
|
rule.ranges = ranges;
|
|
@@ -90,7 +97,9 @@ export var insertTableRow = function (_a) {
|
|
|
90
97
|
for (var idx = draft.length - 1; idx >= 0; idx--) {
|
|
91
98
|
var rule = draft[idx];
|
|
92
99
|
var ranges = (_b = (_a = rule.ranges) === null || _a === void 0 ? void 0 : _a.map(function (range) {
|
|
93
|
-
return
|
|
100
|
+
return isInsideColumnBand(range)
|
|
101
|
+
? updateSheetRangeOnInsert(range, "row", referenceRowIndex, numRows, sheetId)
|
|
102
|
+
: range;
|
|
94
103
|
}).filter(function (range) { return !!range; })) !== null && _b !== void 0 ? _b : [];
|
|
95
104
|
if (ranges.length) {
|
|
96
105
|
rule.ranges = ranges;
|
|
@@ -116,7 +125,8 @@ export var insertTableRow = function (_a) {
|
|
|
116
125
|
var newRowMetaData = __spreadArray([], __read(Array(numRows)), false).map(function (_, index) { var _a; return (_a = sheet.rowMetadata) === null || _a === void 0 ? void 0 : _a[referenceRowIndex + index]; });
|
|
117
126
|
(_a = sheet.rowMetadata).splice.apply(_a, __spreadArray([referenceRowIndex, 0], __read(newRowMetaData), false));
|
|
118
127
|
}
|
|
119
|
-
if (sheet.basicFilter
|
|
128
|
+
if (sheet.basicFilter &&
|
|
129
|
+
isInsideColumnBand(sheet.basicFilter.range)) {
|
|
120
130
|
// Check if basicFilter needs to be moved
|
|
121
131
|
if (sheet.basicFilter.range.startRowIndex >= referenceRowIndex) {
|
|
122
132
|
moveFilterView(sheet.basicFilter, numRows, Direction.Down);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-sheet.d.ts","sourceRoot":"","sources":["../../../interface/update-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,CAAC;IACzE,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,cAAc,KACnB,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;IAC/C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qGAQ9D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MACf,SAAS,MAAM,EAAE,WAAW,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"update-sheet.d.ts","sourceRoot":"","sources":["../../../interface/update-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,CAAC;IACzE,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,cAAc,KACnB,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;IAC/C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qGAQ9D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MACf,SAAS,MAAM,EAAE,WAAW,OAAO,CAAC,CAAC,CAAC,kBAsF/C,CAAC"}
|
|
@@ -5,12 +5,15 @@ import { sanitizeSheetSpecTitle } from "../helpers/sheet-title";
|
|
|
5
5
|
export var updateSheet = function (_a) {
|
|
6
6
|
var sheets = _a.sheets, locale = _a.locale, onChangeSheets = _a.onChangeSheets, onChangeSheetData = _a.onChangeSheetData, getGraphNodes = _a.getGraphNodes, getPrecedents = _a.getPrecedents, createHistory = _a.createHistory;
|
|
7
7
|
return function (sheetId, sheetSpec) {
|
|
8
|
-
var saveHistory = createHistory();
|
|
9
8
|
var sanitizedSheetSpec = sanitizeSheetSpecTitle(sheetSpec);
|
|
10
9
|
var curSheet = sheets === null || sheets === void 0 ? void 0 : sheets.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
11
10
|
if (!curSheet) {
|
|
12
11
|
return undefined;
|
|
13
12
|
}
|
|
13
|
+
if (Object.keys(sanitizedSheetSpec).length === 0) {
|
|
14
|
+
return curSheet;
|
|
15
|
+
}
|
|
16
|
+
var saveHistory = createHistory();
|
|
14
17
|
var oldTitle = curSheet.title;
|
|
15
18
|
var newTitle = sanitizedSheetSpec.title;
|
|
16
19
|
var isTitleChanging = newTitle !== undefined && newTitle !== oldTitle && oldTitle !== undefined;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Sheet } from "@rowsncolumns/spreadsheet";
|
|
2
2
|
export declare const MAX_SHEET_TITLE_LENGTH = 32;
|
|
3
3
|
export declare const truncateSheetTitle: (title: string) => string;
|
|
4
|
+
/** Worksheet names cannot be empty or whitespace-only. */
|
|
5
|
+
export declare const isValidSheetTitle: (title: string) => boolean;
|
|
6
|
+
/** Truncates a valid title; drops an invalid (blank) one so the rest of the spec still applies. */
|
|
4
7
|
export declare const sanitizeSheetSpecTitle: <S extends Sheet>(sheetSpec: Partial<S>) => Partial<S>;
|
|
5
8
|
//# sourceMappingURL=sheet-title.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-title.d.ts","sourceRoot":"","sources":["../../../helpers/sheet-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAElD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,KAAK,EACpD,WAAW,OAAO,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"sheet-title.d.ts","sourceRoot":"","sources":["../../../helpers/sheet-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MAElD,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,OAEjD,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,KAAK,EACpD,WAAW,OAAO,CAAC,CAAC,CAAC,KACpB,OAAO,CAAC,CAAC,CAcX,CAAC"}
|
|
@@ -2,10 +2,19 @@ export const MAX_SHEET_TITLE_LENGTH = 32;
|
|
|
2
2
|
export const truncateSheetTitle = (title) => {
|
|
3
3
|
return title.slice(0, MAX_SHEET_TITLE_LENGTH);
|
|
4
4
|
};
|
|
5
|
+
/** Worksheet names cannot be empty or whitespace-only. */
|
|
6
|
+
export const isValidSheetTitle = (title) => {
|
|
7
|
+
return title.trim().length > 0;
|
|
8
|
+
};
|
|
9
|
+
/** Truncates a valid title; drops an invalid (blank) one so the rest of the spec still applies. */
|
|
5
10
|
export const sanitizeSheetSpecTitle = (sheetSpec) => {
|
|
6
11
|
if (typeof sheetSpec.title !== "string") {
|
|
7
12
|
return sheetSpec;
|
|
8
13
|
}
|
|
14
|
+
if (!isValidSheetTitle(sheetSpec.title)) {
|
|
15
|
+
const { title: _title, ...rest } = sheetSpec;
|
|
16
|
+
return rest;
|
|
17
|
+
}
|
|
9
18
|
return {
|
|
10
19
|
...sheetSpec,
|
|
11
20
|
title: truncateSheetTitle(sheetSpec.title),
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { produceWithPatches } from "immer";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { updateFormulaSheetReferences } from "../api/rename-sheet";
|
|
4
|
-
import { truncateSheetTitle } from "../helpers/sheet-title";
|
|
4
|
+
import { isValidSheetTitle, truncateSheetTitle } from "../helpers/sheet-title";
|
|
5
5
|
import { useCanEditSheet, useCanEditWorkbook } from "./use-can-edit-cellrange";
|
|
6
6
|
export const useOnRenameSheet = ({ locale, onChangeSheetData, onChangeSheets, onChangeActiveCell, getActiveCell, getGraphNodes, getPrecedents, createHistory, onCommand, }) => {
|
|
7
7
|
const canEditSheet = useCanEditSheet();
|
|
8
8
|
const canEditWorkbook = useCanEditWorkbook();
|
|
9
9
|
return useCallback((sheetId, name, oldName) => {
|
|
10
10
|
// Worksheet names cannot be empty or whitespace-only
|
|
11
|
-
if (name
|
|
11
|
+
if (!isValidSheetTitle(name)) {
|
|
12
12
|
console.debug("Sheet name cannot be empty.");
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qbAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qbAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,SAuUjD,CAAC"}
|
|
@@ -71,33 +71,45 @@ export const deleteColumn = ({ rowCount, columnCount, locale, cellXfsRegistry, s
|
|
|
71
71
|
// and table-column splice for partially-overlapped tables.
|
|
72
72
|
onChangeTables?.((prevTables) => {
|
|
73
73
|
const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
|
|
74
|
-
for (
|
|
74
|
+
for (let idx = draft.length - 1; idx >= 0; idx--) {
|
|
75
|
+
const table = draft[idx];
|
|
75
76
|
if (table.sheetId !== sheetId)
|
|
76
77
|
continue;
|
|
77
|
-
|
|
78
|
+
const { startColumnIndex, endColumnIndex } = table.range;
|
|
79
|
+
if (maxColumnIndex < startColumnIndex) {
|
|
78
80
|
moveFilterView(table, count, Direction.Left);
|
|
81
|
+
continue;
|
|
79
82
|
}
|
|
80
|
-
if (minColumnIndex
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
if (minColumnIndex > endColumnIndex)
|
|
84
|
+
continue;
|
|
85
|
+
if (minColumnIndex <= startColumnIndex &&
|
|
86
|
+
maxColumnIndex >= endColumnIndex) {
|
|
87
|
+
draft.splice(idx, 1);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (table.filterSpecs) {
|
|
91
|
+
for (const spec of table.filterSpecs) {
|
|
92
|
+
if (spec.columnIndex >= minColumnIndex) {
|
|
93
|
+
spec.columnIndex -= count;
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
}
|
|
97
|
+
if (table.sortSpecs) {
|
|
98
|
+
for (const spec of table.sortSpecs) {
|
|
99
|
+
if (spec.dimensionIndex >= minColumnIndex) {
|
|
100
|
+
spec.dimensionIndex -= count;
|
|
94
101
|
}
|
|
95
102
|
}
|
|
96
|
-
const columnArrayIndex = minColumnIndex - table.range.startColumnIndex;
|
|
97
|
-
table.columns?.splice(columnArrayIndex, count);
|
|
98
|
-
const delta = Math.min(table.range.endColumnIndex - minColumnIndex + 1, count);
|
|
99
|
-
table.range.endColumnIndex -= delta;
|
|
100
103
|
}
|
|
104
|
+
const overlapStart = Math.max(minColumnIndex, startColumnIndex);
|
|
105
|
+
const overlapEnd = Math.min(maxColumnIndex, endColumnIndex);
|
|
106
|
+
const removed = overlapEnd - overlapStart + 1;
|
|
107
|
+
table.columns?.splice(overlapStart - startColumnIndex, removed);
|
|
108
|
+
table.range.startColumnIndex = Math.min(startColumnIndex, minColumnIndex);
|
|
109
|
+
table.range.endColumnIndex =
|
|
110
|
+
table.range.startColumnIndex +
|
|
111
|
+
(endColumnIndex - startColumnIndex) -
|
|
112
|
+
removed;
|
|
101
113
|
}
|
|
102
114
|
});
|
|
103
115
|
saveHistory({ tables: { patches, inversePatches } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-table-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-column.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6OAepE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,CAClB,MACS,WAAW,SAAS,EAAE,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"delete-table-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-column.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6OAepE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,CAClB,MACS,WAAW,SAAS,EAAE,gBAAgB,MAAM,SA8VrD,CAAC"}
|
|
@@ -121,9 +121,12 @@ export const deleteTableColumn = ({ columnCount, rowCount, locale, cellXfsRegist
|
|
|
121
121
|
// Sheet data
|
|
122
122
|
onChangeSheetData?.((prevSheetData) => {
|
|
123
123
|
const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
|
|
124
|
+
// The moved region is every cell after the deleted column within the table's rows,
|
|
125
|
+
// including any table to the right that sits inside that row band.
|
|
124
126
|
const sourceRange = {
|
|
125
127
|
...range,
|
|
126
128
|
startColumnIndex: referenceColumnIndex + count,
|
|
129
|
+
endColumnIndex: Number.MAX_SAFE_INTEGER,
|
|
127
130
|
};
|
|
128
131
|
const movedKeys = new Set();
|
|
129
132
|
/**
|
|
@@ -233,8 +236,7 @@ export const deleteTableColumn = ({ columnCount, rowCount, locale, cellXfsRegist
|
|
|
233
236
|
continue;
|
|
234
237
|
}
|
|
235
238
|
const startCol = Math.min(Math.max(range.startColumnIndex, 1), dataColumnCount);
|
|
236
|
-
|
|
237
|
-
for (let columnIndex = startCol; columnIndex < endCol; columnIndex++) {
|
|
239
|
+
for (let columnIndex = startCol; columnIndex < dataColumnCount; columnIndex++) {
|
|
238
240
|
const cellData = rowValues?.[columnIndex];
|
|
239
241
|
const hasFormula = !!getExtendedValueFormula(getCellUserEnteredValue(cellData));
|
|
240
242
|
if (!hasFormula) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-table-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,kSAiBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MACvB,WAAW,SAAS,EAAE,YAAY,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"delete-table-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,kSAiBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MACvB,WAAW,SAAS,EAAE,YAAY,MAAM,EAAE,SAoYnD,CAAC"}
|
|
@@ -15,6 +15,9 @@ export const deleteTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
15
15
|
const saveHistory = createHistory();
|
|
16
16
|
const { 0: minRowIndex, [rowIndexes.length - 1]: maxRowIndex } = rowIndexes;
|
|
17
17
|
const count = rowIndexes.length;
|
|
18
|
+
const { startColumnIndex, endColumnIndex } = tableView.range;
|
|
19
|
+
const isInsideColumnBand = (range) => range.startColumnIndex >= startColumnIndex &&
|
|
20
|
+
range.endColumnIndex <= endColumnIndex;
|
|
18
21
|
enqueueStructureChange?.({
|
|
19
22
|
kind: "delete-table-row",
|
|
20
23
|
sheetId,
|
|
@@ -30,14 +33,15 @@ export const deleteTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
30
33
|
onChangeTables?.((prevTables) => {
|
|
31
34
|
const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
|
|
32
35
|
for (const table of draft) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (minRowIndex < startRowIndex) {
|
|
36
|
-
moveFilterView(table, count, Direction.Up);
|
|
36
|
+
if (table.sheetId !== sheetId || !isInsideColumnBand(table.range)) {
|
|
37
|
+
continue;
|
|
37
38
|
}
|
|
38
|
-
if (
|
|
39
|
+
if (table.id === tableView.id) {
|
|
39
40
|
table.range.endRowIndex -= count;
|
|
40
41
|
}
|
|
42
|
+
else if (maxRowIndex < table.range.startRowIndex) {
|
|
43
|
+
moveFilterView(table, count, Direction.Up);
|
|
44
|
+
}
|
|
41
45
|
}
|
|
42
46
|
});
|
|
43
47
|
// Save history
|
|
@@ -52,7 +56,9 @@ export const deleteTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
52
56
|
for (let idx = draft.length - 1; idx >= 0; idx--) {
|
|
53
57
|
const rule = draft[idx];
|
|
54
58
|
const ranges = rule.ranges
|
|
55
|
-
?.map((range) =>
|
|
59
|
+
?.map((range) => isInsideColumnBand(range)
|
|
60
|
+
? updateSheetRangeOnDelete(range, "row", minRowIndex, count, sheetId)
|
|
61
|
+
: range)
|
|
56
62
|
.filter((range) => !!range) ?? [];
|
|
57
63
|
if (ranges.length) {
|
|
58
64
|
rule.ranges = ranges;
|
|
@@ -73,7 +79,9 @@ export const deleteTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
73
79
|
for (let idx = draft.length - 1; idx >= 0; idx--) {
|
|
74
80
|
const rule = draft[idx];
|
|
75
81
|
const ranges = rule.ranges
|
|
76
|
-
?.map((range) =>
|
|
82
|
+
?.map((range) => isInsideColumnBand(range)
|
|
83
|
+
? updateSheetRangeOnDelete(range, "row", minRowIndex, count, sheetId)
|
|
84
|
+
: range)
|
|
77
85
|
.filter((range) => !!range) ?? [];
|
|
78
86
|
if (ranges.length) {
|
|
79
87
|
rule.ranges = ranges;
|
|
@@ -96,7 +104,8 @@ export const deleteTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
96
104
|
if (sheet.rowMetadata) {
|
|
97
105
|
sheet.rowMetadata.splice(minRowIndex, count);
|
|
98
106
|
}
|
|
99
|
-
if (sheet.basicFilter
|
|
107
|
+
if (sheet.basicFilter &&
|
|
108
|
+
isInsideColumnBand(sheet.basicFilter.range)) {
|
|
100
109
|
if (minRowIndex < sheet.basicFilter.range.startRowIndex) {
|
|
101
110
|
moveFilterView(sheet.basicFilter, count, Direction.Up);
|
|
102
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qaAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SA0TtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qaAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SA0TtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
|
|
@@ -259,7 +259,7 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
|
|
|
259
259
|
onChangeTables?.((prevTables) => {
|
|
260
260
|
const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
|
|
261
261
|
for (const table of draft) {
|
|
262
|
-
if (referenceColumnIndex
|
|
262
|
+
if (referenceColumnIndex <= table.range.startColumnIndex &&
|
|
263
263
|
table.range.startRowIndex >= tableView.range.startRowIndex &&
|
|
264
264
|
table.range.endRowIndex <= tableView.range.endRowIndex &&
|
|
265
265
|
table.id !== tableView.id) {
|
|
@@ -342,9 +342,12 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
|
|
|
342
342
|
const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
|
|
343
343
|
const { range } = tableView;
|
|
344
344
|
const headerRow = tableView.headerRow ?? true;
|
|
345
|
+
// The moved region is every cell at/after the insertion point within the table's
|
|
346
|
+
// rows, including any table to the right that sits inside that row band.
|
|
345
347
|
const sourceRange = {
|
|
346
348
|
...range,
|
|
347
349
|
startColumnIndex: referenceColumnIndex,
|
|
350
|
+
endColumnIndex: Number.MAX_SAFE_INTEGER,
|
|
348
351
|
};
|
|
349
352
|
const movedKeys = new Set();
|
|
350
353
|
// PASS 1
|
|
@@ -427,8 +430,7 @@ export const insertTableColumn = ({ tables, columnCount, rowCount, locale, cellX
|
|
|
427
430
|
for (let rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
|
|
428
431
|
const dataColumnCount = draft[sheetId]?.[rowIndex]?.values?.length ?? 0;
|
|
429
432
|
const startCol = Math.min(Math.max(referenceColumnIndex, 1), dataColumnCount);
|
|
430
|
-
|
|
431
|
-
for (let columnIndex = startCol; columnIndex < endCol; columnIndex++) {
|
|
433
|
+
for (let columnIndex = startCol; columnIndex < dataColumnCount; columnIndex++) {
|
|
432
434
|
moveFormulaAtPosition({
|
|
433
435
|
draft,
|
|
434
436
|
position: { sheetId, rowIndex, columnIndex },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iTAkBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"insert-table-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-table-row.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAIjF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iTAkBjE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE7B,WAAW,SAAS,EACpB,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,SAubxD,CAAC"}
|
|
@@ -15,6 +15,9 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
15
15
|
tableView.range.endRowIndex - tableView.range.startRowIndex + 1);
|
|
16
16
|
const numRows = rowData?.length ?? 1;
|
|
17
17
|
const { sheetId } = tableView;
|
|
18
|
+
const { startColumnIndex, endColumnIndex } = tableView.range;
|
|
19
|
+
const isInsideColumnBand = (range) => range.startColumnIndex >= startColumnIndex &&
|
|
20
|
+
range.endColumnIndex <= endColumnIndex;
|
|
18
21
|
enqueueStructureChange?.({
|
|
19
22
|
kind: "insert-table-row",
|
|
20
23
|
sheetId,
|
|
@@ -31,15 +34,15 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
31
34
|
onChangeTables?.((prevTables) => {
|
|
32
35
|
const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
|
|
33
36
|
for (const table of draft) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (referenceRowIndex < startRowIndex) {
|
|
37
|
-
moveFilterView(table, numRows, Direction.Down);
|
|
37
|
+
if (table.sheetId !== sheetId || !isInsideColumnBand(table.range)) {
|
|
38
|
+
continue;
|
|
38
39
|
}
|
|
39
|
-
if (
|
|
40
|
-
referenceRowIndex <= endRowIndex + 1) {
|
|
40
|
+
if (table.id === tableView.id) {
|
|
41
41
|
table.range.endRowIndex += numRows;
|
|
42
42
|
}
|
|
43
|
+
else if (referenceRowIndex <= table.range.startRowIndex) {
|
|
44
|
+
moveFilterView(table, numRows, Direction.Down);
|
|
45
|
+
}
|
|
43
46
|
}
|
|
44
47
|
});
|
|
45
48
|
// Save history
|
|
@@ -54,7 +57,9 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
54
57
|
for (let idx = draft.length - 1; idx >= 0; idx--) {
|
|
55
58
|
const rule = draft[idx];
|
|
56
59
|
const ranges = rule.ranges
|
|
57
|
-
?.map((range) =>
|
|
60
|
+
?.map((range) => isInsideColumnBand(range)
|
|
61
|
+
? updateSheetRangeOnInsert(range, "row", referenceRowIndex, numRows, sheetId)
|
|
62
|
+
: range)
|
|
58
63
|
.filter((range) => !!range) ??
|
|
59
64
|
[];
|
|
60
65
|
if (ranges.length) {
|
|
@@ -76,7 +81,9 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
76
81
|
for (let idx = draft.length - 1; idx >= 0; idx--) {
|
|
77
82
|
const rule = draft[idx];
|
|
78
83
|
const ranges = rule.ranges
|
|
79
|
-
?.map((range) =>
|
|
84
|
+
?.map((range) => isInsideColumnBand(range)
|
|
85
|
+
? updateSheetRangeOnInsert(range, "row", referenceRowIndex, numRows, sheetId)
|
|
86
|
+
: range)
|
|
80
87
|
.filter((range) => !!range) ??
|
|
81
88
|
[];
|
|
82
89
|
if (ranges.length) {
|
|
@@ -101,7 +108,8 @@ export const insertTableRow = ({ rowCount, columnCount, locale, cellXfsRegistry,
|
|
|
101
108
|
const newRowMetaData = [...Array(numRows)].map((_, index) => sheet.rowMetadata?.[referenceRowIndex + index]);
|
|
102
109
|
sheet.rowMetadata.splice(referenceRowIndex, 0, ...newRowMetaData);
|
|
103
110
|
}
|
|
104
|
-
if (sheet.basicFilter
|
|
111
|
+
if (sheet.basicFilter &&
|
|
112
|
+
isInsideColumnBand(sheet.basicFilter.range)) {
|
|
105
113
|
// Check if basicFilter needs to be moved
|
|
106
114
|
if (sheet.basicFilter.range.startRowIndex >= referenceRowIndex) {
|
|
107
115
|
moveFilterView(sheet.basicFilter, numRows, Direction.Down);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-sheet.d.ts","sourceRoot":"","sources":["../../../interface/update-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,CAAC;IACzE,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,cAAc,KACnB,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;IAC/C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qGAQ9D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MACf,SAAS,MAAM,EAAE,WAAW,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"update-sheet.d.ts","sourceRoot":"","sources":["../../../interface/update-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAMjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAClE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,CAAC;IACzE,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,cAAc,KACnB,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;IAC/C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qGAQ9D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MACf,SAAS,MAAM,EAAE,WAAW,OAAO,CAAC,CAAC,CAAC,kBAsF/C,CAAC"}
|
|
@@ -3,12 +3,15 @@ import { updateFormulaSheetReferences } from "../api/rename-sheet";
|
|
|
3
3
|
import { sanitizeSheetSpecTitle } from "../helpers/sheet-title";
|
|
4
4
|
export const updateSheet = ({ sheets, locale, onChangeSheets, onChangeSheetData, getGraphNodes, getPrecedents, createHistory, }) => {
|
|
5
5
|
return (sheetId, sheetSpec) => {
|
|
6
|
-
const saveHistory = createHistory();
|
|
7
6
|
const sanitizedSheetSpec = sanitizeSheetSpecTitle(sheetSpec);
|
|
8
7
|
const curSheet = sheets?.find((sheet) => sheet.sheetId === sheetId);
|
|
9
8
|
if (!curSheet) {
|
|
10
9
|
return undefined;
|
|
11
10
|
}
|
|
11
|
+
if (Object.keys(sanitizedSheetSpec).length === 0) {
|
|
12
|
+
return curSheet;
|
|
13
|
+
}
|
|
14
|
+
const saveHistory = createHistory();
|
|
12
15
|
const oldTitle = curSheet.title;
|
|
13
16
|
const newTitle = sanitizedSheetSpec.title;
|
|
14
17
|
const isTitleChanging = newTitle !== undefined && newTitle !== oldTitle && oldTitle !== undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rowsncolumns/spreadsheet-state",
|
|
3
|
-
"version": "28.0.
|
|
3
|
+
"version": "28.0.68",
|
|
4
4
|
"main": "./dist/cjs/index.js",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -52,33 +52,33 @@
|
|
|
52
52
|
"dist"
|
|
53
53
|
],
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@rowsncolumns/calculator": ">=7.2.
|
|
56
|
-
"@rowsncolumns/common-types": ">=5.2.
|
|
57
|
-
"@rowsncolumns/dag": ">=7.2.
|
|
58
|
-
"@rowsncolumns/fast-formula-parser": "6.2.
|
|
59
|
-
"@rowsncolumns/grid": ">=13.2.
|
|
60
|
-
"@rowsncolumns/icons": ">=7.2.
|
|
55
|
+
"@rowsncolumns/calculator": ">=7.2.30",
|
|
56
|
+
"@rowsncolumns/common-types": ">=5.2.30",
|
|
57
|
+
"@rowsncolumns/dag": ">=7.2.30",
|
|
58
|
+
"@rowsncolumns/fast-formula-parser": "6.2.33",
|
|
59
|
+
"@rowsncolumns/grid": ">=13.2.33",
|
|
60
|
+
"@rowsncolumns/icons": ">=7.2.31",
|
|
61
61
|
"@rowsncolumns/spreadsheet": ">=10.2.68",
|
|
62
|
-
"@rowsncolumns/toolkit": ">=24.4.
|
|
63
|
-
"@rowsncolumns/ui": ">=15.0.
|
|
64
|
-
"@rowsncolumns/utils": ">=9.2.
|
|
62
|
+
"@rowsncolumns/toolkit": ">=24.4.2",
|
|
63
|
+
"@rowsncolumns/ui": ">=15.0.39",
|
|
64
|
+
"@rowsncolumns/utils": ">=9.2.37"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@rowsncolumns/calculator": ">=7.2.
|
|
68
|
-
"@rowsncolumns/common-types": ">=5.2.
|
|
69
|
-
"@rowsncolumns/dag": ">=7.2.
|
|
70
|
-
"@rowsncolumns/fast-formula-parser": ">=6.2.
|
|
71
|
-
"@rowsncolumns/grid": ">=13.2.
|
|
72
|
-
"@rowsncolumns/icons": ">=7.2.
|
|
67
|
+
"@rowsncolumns/calculator": ">=7.2.30",
|
|
68
|
+
"@rowsncolumns/common-types": ">=5.2.30",
|
|
69
|
+
"@rowsncolumns/dag": ">=7.2.30",
|
|
70
|
+
"@rowsncolumns/fast-formula-parser": ">=6.2.33",
|
|
71
|
+
"@rowsncolumns/grid": ">=13.2.33",
|
|
72
|
+
"@rowsncolumns/icons": ">=7.2.31",
|
|
73
73
|
"@rowsncolumns/spreadsheet": ">=10.2.68",
|
|
74
|
-
"@rowsncolumns/ui": ">=15.0.
|
|
75
|
-
"@rowsncolumns/utils": ">=9.2.
|
|
74
|
+
"@rowsncolumns/ui": ">=15.0.39",
|
|
75
|
+
"@rowsncolumns/utils": ">=9.2.37"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@rowsncolumns/calculation-worker": ">=9.0.
|
|
79
|
-
"@rowsncolumns/date-parser": ">=12.0.
|
|
80
|
-
"@rowsncolumns/functions": ">=14.0.
|
|
81
|
-
"@rowsncolumns/toolkit": ">=24.4.
|
|
78
|
+
"@rowsncolumns/calculation-worker": ">=9.0.30",
|
|
79
|
+
"@rowsncolumns/date-parser": ">=12.0.31",
|
|
80
|
+
"@rowsncolumns/functions": ">=14.0.30",
|
|
81
|
+
"@rowsncolumns/toolkit": ">=24.4.2",
|
|
82
82
|
"formik": "^2.4.6",
|
|
83
83
|
"immer": "^10.1.1",
|
|
84
84
|
"jotai": "^2.12.4",
|