@rowsncolumns/spreadsheet-state 28.0.75 → 29.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/anchored-objects.d.ts +66 -0
- package/dist/cjs/api/anchored-objects.d.ts.map +1 -0
- package/dist/cjs/api/anchored-objects.js +259 -0
- package/dist/cjs/api/copy-paste.d.ts +8 -1
- package/dist/cjs/api/copy-paste.d.ts.map +1 -1
- package/dist/cjs/api/copy-paste.js +4 -2
- package/dist/cjs/api/dependency.d.ts +13 -2
- package/dist/cjs/api/dependency.d.ts.map +1 -1
- package/dist/cjs/api/dependency.js +11 -5
- package/dist/cjs/api/formula.d.ts +61 -4
- package/dist/cjs/api/formula.d.ts.map +1 -1
- package/dist/cjs/api/formula.js +250 -61
- package/dist/cjs/api/immer-utils.d.ts +11 -1
- package/dist/cjs/api/immer-utils.d.ts.map +1 -1
- package/dist/cjs/api/immer-utils.js +17 -1
- package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
- package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
- package/dist/cjs/api/insert-cut-cells.js +60 -0
- package/dist/cjs/api/merges.d.ts +16 -0
- package/dist/cjs/api/merges.d.ts.map +1 -1
- package/dist/cjs/api/merges.js +75 -1
- package/dist/cjs/api/named-range-structural.d.ts +62 -0
- package/dist/cjs/api/named-range-structural.d.ts.map +1 -0
- package/dist/cjs/api/named-range-structural.js +197 -0
- package/dist/cjs/api/range-rule-helpers.d.ts +45 -1
- package/dist/cjs/api/range-rule-helpers.d.ts.map +1 -1
- package/dist/cjs/api/range-rule-helpers.js +159 -6
- package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
- package/dist/cjs/api/structural-formula-update.js +24 -6
- package/dist/cjs/api/structural-guards.d.ts +78 -0
- package/dist/cjs/api/structural-guards.d.ts.map +1 -0
- package/dist/cjs/api/structural-guards.js +202 -0
- package/dist/cjs/api/structural-table-refs.d.ts +94 -0
- package/dist/cjs/api/structural-table-refs.d.ts.map +1 -0
- package/dist/cjs/api/structural-table-refs.js +313 -0
- package/dist/cjs/api/subtotal.d.ts +20 -13
- package/dist/cjs/api/subtotal.d.ts.map +1 -1
- package/dist/cjs/api/subtotal.js +26 -19
- package/dist/cjs/commands.d.ts +9 -0
- package/dist/cjs/commands.d.ts.map +1 -1
- package/dist/cjs/constants.d.ts +25 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +26 -0
- package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation-worker.js +64 -6
- package/dist/cjs/hooks/use-calculation.d.ts +7 -0
- package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation.js +15 -0
- package/dist/cjs/hooks/use-on-calculation-success.d.ts +7 -0
- package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.js +7 -1
- package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
- package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-copy.js +2 -3
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +27 -2
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +27 -2
- package/dist/cjs/hooks/use-on-delete-column.d.ts +13 -4
- package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-column.js +14 -2
- package/dist/cjs/hooks/use-on-delete-row.d.ts +13 -4
- package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-row.js +14 -2
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +27 -2
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +27 -2
- package/dist/cjs/hooks/use-on-insert-column.d.ts +10 -3
- package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-column.js +33 -7
- package/dist/cjs/hooks/use-on-insert-row.d.ts +10 -3
- package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-row.js +32 -7
- package/dist/cjs/hooks/use-on-move-columns.d.ts +2 -1
- package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-columns.js +14 -5
- package/dist/cjs/hooks/use-on-move-rows.d.ts +16 -1
- package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-rows.js +30 -5
- package/dist/cjs/hooks/use-on-move-selection.d.ts +7 -2
- package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-selection.js +14 -1
- package/dist/cjs/hooks/use-on-paste.d.ts +12 -2
- package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-paste.js +56 -8
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +16 -5
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +141 -18
- package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/cjs/hooks/use-structured-reference.js +10 -6
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/interface/calculation-interface.d.ts +9 -0
- package/dist/cjs/interface/calculation-interface.d.ts.map +1 -1
- package/dist/cjs/interface/calculation-interface.js +31 -2
- package/dist/cjs/interface/delete-cells-shift-left.d.ts +8 -1
- package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-left.js +158 -80
- package/dist/cjs/interface/delete-cells-shift-up.d.ts +9 -1
- package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-up.js +155 -73
- package/dist/cjs/interface/delete-column.d.ts +1 -1
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +109 -50
- package/dist/cjs/interface/delete-row.d.ts +1 -1
- package/dist/cjs/interface/delete-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-row.js +105 -46
- package/dist/cjs/interface/insert-cells-shift-down.d.ts +10 -1
- package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-down.js +147 -52
- package/dist/cjs/interface/insert-cells-shift-right.d.ts +10 -1
- package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-right.js +154 -58
- package/dist/cjs/interface/insert-column.d.ts +1 -1
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +80 -26
- package/dist/cjs/interface/insert-row.d.ts +1 -1
- package/dist/cjs/interface/insert-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-row.js +63 -15
- package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/cjs/interface/spreadsheet-interface.js +33 -0
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/anchored-objects.d.ts +66 -0
- package/dist/esm/api/anchored-objects.d.ts.map +1 -0
- package/dist/esm/api/anchored-objects.js +212 -0
- package/dist/esm/api/copy-paste.d.ts +8 -1
- package/dist/esm/api/copy-paste.d.ts.map +1 -1
- package/dist/esm/api/copy-paste.js +4 -2
- package/dist/esm/api/dependency.d.ts +13 -2
- package/dist/esm/api/dependency.d.ts.map +1 -1
- package/dist/esm/api/dependency.js +10 -4
- package/dist/esm/api/formula.d.ts +61 -4
- package/dist/esm/api/formula.d.ts.map +1 -1
- package/dist/esm/api/formula.js +238 -60
- package/dist/esm/api/immer-utils.d.ts +11 -1
- package/dist/esm/api/immer-utils.d.ts.map +1 -1
- package/dist/esm/api/immer-utils.js +16 -0
- package/dist/esm/api/insert-cut-cells.d.ts +35 -0
- package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
- package/dist/esm/api/insert-cut-cells.js +67 -0
- package/dist/esm/api/merges.d.ts +16 -0
- package/dist/esm/api/merges.d.ts.map +1 -1
- package/dist/esm/api/merges.js +60 -0
- package/dist/esm/api/named-range-structural.d.ts +62 -0
- package/dist/esm/api/named-range-structural.d.ts.map +1 -0
- package/dist/esm/api/named-range-structural.js +176 -0
- package/dist/esm/api/range-rule-helpers.d.ts +45 -1
- package/dist/esm/api/range-rule-helpers.d.ts.map +1 -1
- package/dist/esm/api/range-rule-helpers.js +153 -1
- package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
- package/dist/esm/api/structural-formula-update.js +24 -6
- package/dist/esm/api/structural-guards.d.ts +78 -0
- package/dist/esm/api/structural-guards.d.ts.map +1 -0
- package/dist/esm/api/structural-guards.js +186 -0
- package/dist/esm/api/structural-table-refs.d.ts +94 -0
- package/dist/esm/api/structural-table-refs.d.ts.map +1 -0
- package/dist/esm/api/structural-table-refs.js +219 -0
- package/dist/esm/api/subtotal.d.ts +20 -13
- package/dist/esm/api/subtotal.d.ts.map +1 -1
- package/dist/esm/api/subtotal.js +15 -8
- package/dist/esm/commands.d.ts +9 -0
- package/dist/esm/commands.d.ts.map +1 -1
- package/dist/esm/constants.d.ts +25 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +26 -0
- package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation-worker.js +45 -0
- package/dist/esm/hooks/use-calculation.d.ts +7 -0
- package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation.js +15 -0
- package/dist/esm/hooks/use-on-calculation-success.d.ts +7 -0
- package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-calculation-success.js +7 -1
- package/dist/esm/hooks/use-on-copy.d.ts +1 -1
- package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-copy.js +2 -3
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.js +26 -2
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-up.js +26 -2
- package/dist/esm/hooks/use-on-delete-column.d.ts +13 -4
- package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-column.js +14 -2
- package/dist/esm/hooks/use-on-delete-row.d.ts +13 -4
- package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-row.js +14 -2
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-down.js +26 -2
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-right.js +26 -2
- package/dist/esm/hooks/use-on-insert-column.d.ts +10 -3
- package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-column.js +33 -7
- package/dist/esm/hooks/use-on-insert-row.d.ts +10 -3
- package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-row.js +32 -7
- package/dist/esm/hooks/use-on-move-columns.d.ts +2 -1
- package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-columns.js +14 -5
- package/dist/esm/hooks/use-on-move-rows.d.ts +16 -1
- package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-rows.js +30 -5
- package/dist/esm/hooks/use-on-move-selection.d.ts +7 -2
- package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-selection.js +14 -1
- package/dist/esm/hooks/use-on-paste.d.ts +12 -2
- package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-paste.js +41 -2
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +16 -5
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +141 -17
- package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/esm/hooks/use-structured-reference.js +10 -6
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/interface/calculation-interface.d.ts +9 -0
- package/dist/esm/interface/calculation-interface.d.ts.map +1 -1
- package/dist/esm/interface/calculation-interface.js +33 -2
- package/dist/esm/interface/delete-cells-shift-left.d.ts +8 -1
- package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-left.js +135 -59
- package/dist/esm/interface/delete-cells-shift-up.d.ts +9 -1
- package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-up.js +133 -53
- package/dist/esm/interface/delete-column.d.ts +1 -1
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +96 -38
- package/dist/esm/interface/delete-row.d.ts +1 -1
- package/dist/esm/interface/delete-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-row.js +98 -39
- package/dist/esm/interface/insert-cells-shift-down.d.ts +10 -1
- package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-down.js +116 -47
- package/dist/esm/interface/insert-cells-shift-right.d.ts +10 -1
- package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-right.js +120 -51
- package/dist/esm/interface/insert-column.d.ts +1 -1
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +68 -18
- package/dist/esm/interface/insert-row.d.ts +1 -1
- package/dist/esm/interface/insert-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-row.js +60 -14
- package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/esm/interface/spreadsheet-interface.js +29 -0
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +18 -18
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { isNil } from "@rowsncolumns/utils";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
|
+
import { getInsertLinesRefusal } from "../api/structural-guards";
|
|
3
4
|
import { useShowError } from "../atoms/error-state.atom";
|
|
4
5
|
import { insertRow } from "../interface/insert-row";
|
|
5
6
|
import { SHEET_PROTECTION_ERROR_TITLE, useCanEditSheet, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
|
|
6
7
|
export var useOnInsertRow = function (_a) {
|
|
7
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxRowCount = _a.maxRowCount, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, getSheetName = _a.getSheetName, enableInsertRowTimingLogs = _a.enableInsertRowTimingLogs, onCommand = _a.onCommand;
|
|
8
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, maxRowCount = _a.maxRowCount, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, getGraphNodes = _a.getGraphNodes, getGraphNodesInSheet = _a.getGraphNodesInSheet, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges, getSheetName = _a.getSheetName, enableInsertRowTimingLogs = _a.enableInsertRowTimingLogs, sheetData = _a.sheetData, onCommand = _a.onCommand;
|
|
8
9
|
var canEditSheet = useCanEditSheet();
|
|
9
10
|
var canPerformSheetAction = useCanPerformSheetAction();
|
|
10
11
|
var showError = useShowError();
|
|
@@ -25,12 +26,27 @@ export var useOnInsertRow = function (_a) {
|
|
|
25
26
|
});
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
28
|
-
if (!isNil(maxRowCount) && rowCount
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
if (!isNil(maxRowCount) && rowCount + numRows > maxRowCount) {
|
|
30
|
+
// INS-06: at the grid cap, Excel refuses only when a non-blank (or formatted) cell would
|
|
31
|
+
// be pushed off the end; blank trailing rows are simply discarded.
|
|
32
|
+
var refusal = sheetData
|
|
33
|
+
? getInsertLinesRefusal({
|
|
34
|
+
axis: "row",
|
|
35
|
+
referenceIndex: referenceRowIndex,
|
|
36
|
+
count: numRows,
|
|
37
|
+
rows: sheetData[sheetId],
|
|
38
|
+
limit: maxRowCount,
|
|
39
|
+
})
|
|
40
|
+
: rowCount >= maxRowCount
|
|
41
|
+
? {
|
|
42
|
+
title: "New rows cannot be added",
|
|
43
|
+
message: "You have reached the maximum number of rows.",
|
|
44
|
+
}
|
|
45
|
+
: undefined;
|
|
46
|
+
if (refusal) {
|
|
47
|
+
showError({ title: refusal.title, message: refusal.message });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
34
50
|
}
|
|
35
51
|
// Inserts row
|
|
36
52
|
var startMs = now();
|
|
@@ -57,6 +73,10 @@ export var useOnInsertRow = function (_a) {
|
|
|
57
73
|
onChangeDataValidations: onChangeDataValidations,
|
|
58
74
|
onChangeCitations: onChangeCitations,
|
|
59
75
|
onChangePivotTables: onChangePivotTables,
|
|
76
|
+
onChangeNamedRanges: onChangeNamedRanges,
|
|
77
|
+
onChangeEmbeds: onChangeEmbeds,
|
|
78
|
+
onChangeCharts: onChangeCharts,
|
|
79
|
+
onChangeProtectedRanges: onChangeProtectedRanges,
|
|
60
80
|
getSheetName: getSheetName,
|
|
61
81
|
})(sheetId, referenceRowIndex, numRows);
|
|
62
82
|
var elapsedMs = now() - startMs;
|
|
@@ -94,6 +114,10 @@ export var useOnInsertRow = function (_a) {
|
|
|
94
114
|
onChangeConditionalFormats,
|
|
95
115
|
onChangeDataValidations,
|
|
96
116
|
onChangePivotTables,
|
|
117
|
+
onChangeNamedRanges,
|
|
118
|
+
onChangeEmbeds,
|
|
119
|
+
onChangeCharts,
|
|
120
|
+
onChangeProtectedRanges,
|
|
97
121
|
enqueueGraphOperation,
|
|
98
122
|
enqueueCalculation,
|
|
99
123
|
enqueueStructureChange,
|
|
@@ -101,6 +125,7 @@ export var useOnInsertRow = function (_a) {
|
|
|
101
125
|
canPerformSheetAction,
|
|
102
126
|
getSheetName,
|
|
103
127
|
enableInsertRowTimingLogs,
|
|
128
|
+
sheetData,
|
|
104
129
|
onCommand,
|
|
105
130
|
]);
|
|
106
131
|
};
|
|
@@ -2,6 +2,7 @@ import type { CellInterface } from "@rowsncolumns/common-types";
|
|
|
2
2
|
import { type CellData, type Sheet } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { OnCommand } from "../commands";
|
|
4
4
|
import type { useCalculation } from "./use-calculation";
|
|
5
|
+
import { type MoveDimensionOptions } from "./use-on-move-rows";
|
|
5
6
|
import type { useSheetProperties } from "./use-sheet-properties";
|
|
6
7
|
import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
|
|
7
8
|
import type { SpreadsheetPatch } from "./use-undo-redo";
|
|
@@ -23,6 +24,6 @@ type UseOnMoveColumnsProps<T extends CellData, S extends Sheet> = {
|
|
|
23
24
|
getActiveCell: () => CellInterface;
|
|
24
25
|
onCommand?: OnCommand;
|
|
25
26
|
};
|
|
26
|
-
export declare const useOnMoveColumns: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, createHistory, onChangeSheetData, onChangeSheets, onChangeTables, onChangeConditionalFormats, onChangeDataValidations, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, getDependents, getDataRowCount, getActiveCell, onCommand, }: UseOnMoveColumnsProps<T, S>) => (sheetId: number, columns: number[],
|
|
27
|
+
export declare const useOnMoveColumns: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, createHistory, onChangeSheetData, onChangeSheets, onChangeTables, onChangeConditionalFormats, onChangeDataValidations, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, getDependents, getDataRowCount, getActiveCell, onCommand, }: UseOnMoveColumnsProps<T, S>) => (sheetId: number, columns: number[], rawReferenceColumnIndex: number, options?: MoveDimensionOptions) => void;
|
|
27
28
|
export {};
|
|
28
29
|
//# sourceMappingURL=use-on-move-columns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-move-columns.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAWtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,0BAA0B,CAAC,EAAE,mBAAmB,CAC9C,CAAC,EACD,CAAC,CACF,CAAC,4BAA4B,CAAC,CAAC;IAChC,uBAAuB,CAAC,EAAE,mBAAmB,CAC3C,CAAC,EACD,CAAC,CACF,CAAC,yBAAyB,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3E,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,wRAiBnE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"use-on-move-columns.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAWtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,0BAA0B,CAAC,EAAE,mBAAmB,CAC9C,CAAC,EACD,CAAC,CACF,CAAC,4BAA4B,CAAC,CAAC;IAChC,uBAAuB,CAAC,EAAE,mBAAmB,CAC3C,CAAC,EACD,CAAC,CACF,CAAC,yBAAyB,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3E,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,wRAiBnE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,eAIf,MAAM,WACN,MAAM,EAAE,2BACQ,MAAM,YACrB,oBAAoB,SAkZnC,CAAC"}
|
|
@@ -9,10 +9,11 @@ import { moveMergedCells } from "../api/merges";
|
|
|
9
9
|
import { updateRangedRulesOnReorder } from "../api/range-rule-helpers";
|
|
10
10
|
import { shiftTableMovingColumns } from "../api/table";
|
|
11
11
|
import { useCanEditSheet } from "./use-can-edit-cellrange";
|
|
12
|
+
import { resolveMoveReferenceIndex, } from "./use-on-move-rows";
|
|
12
13
|
export var useOnMoveColumns = function (_a) {
|
|
13
14
|
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, createHistory = _a.createHistory, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, getDependents = _a.getDependents, getDataRowCount = _a.getDataRowCount, getActiveCell = _a.getActiveCell, onCommand = _a.onCommand;
|
|
14
15
|
var canEditSheet = useCanEditSheet();
|
|
15
|
-
return useCallback(function (sheetId, columns,
|
|
16
|
+
return useCallback(function (sheetId, columns, rawReferenceColumnIndex, options) {
|
|
16
17
|
var _a;
|
|
17
18
|
if (!canEditSheet(sheetId)) {
|
|
18
19
|
console.debug("This range is protected, users cannot edit this cell range.");
|
|
@@ -21,6 +22,10 @@ export var useOnMoveColumns = function (_a) {
|
|
|
21
22
|
if (!columns.length) {
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
25
|
+
var referenceColumnIndex = resolveMoveReferenceIndex(columns, rawReferenceColumnIndex, options);
|
|
26
|
+
if (referenceColumnIndex === undefined) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
24
29
|
var saveHistory = createHistory();
|
|
25
30
|
var _b = columns, firstColumn = _b[0], _c = columns.length - 1, lastColumn = _b[_c];
|
|
26
31
|
// We need to track this for history. Precedent cells
|
|
@@ -46,11 +51,15 @@ export var useOnMoveColumns = function (_a) {
|
|
|
46
51
|
startRowIndex: 1,
|
|
47
52
|
endRowIndex: dataRowCount,
|
|
48
53
|
};
|
|
49
|
-
//
|
|
50
|
-
//
|
|
54
|
+
// The columns the move displaces (Excel: refs into them shift by ±count). Moving LEFT,
|
|
55
|
+
// columns `referenceColumnIndex..firstColumn-1` slide right; moving RIGHT, columns
|
|
56
|
+
// `lastColumn+1..referenceColumnIndex+count-1` slide left (the block lands at
|
|
57
|
+
// `referenceColumnIndex` in the post-removal frame).
|
|
51
58
|
var shiftedRange = {
|
|
52
|
-
startColumnIndex:
|
|
53
|
-
endColumnIndex:
|
|
59
|
+
startColumnIndex: direction === Direction.Left ? referenceColumnIndex : lastColumn + 1,
|
|
60
|
+
endColumnIndex: direction === Direction.Left
|
|
61
|
+
? firstColumn - 1
|
|
62
|
+
: referenceColumnIndex + count - 1,
|
|
54
63
|
startRowIndex: 1,
|
|
55
64
|
endRowIndex: dataRowCount,
|
|
56
65
|
};
|
|
@@ -25,6 +25,21 @@ type UseOnMoveRowsProps<T extends CellData, S extends Sheet> = {
|
|
|
25
25
|
getActiveCell: () => CellInterface;
|
|
26
26
|
onCommand?: OnCommand;
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Landing semantics for a row/column move. By default `referenceIndex` is the block's FINAL
|
|
30
|
+
* position in the post-removal frame (what the header-drag hook computes). `insertBefore`
|
|
31
|
+
* selects Excel's "Insert Cut Cells" semantics instead: `referenceIndex` is the row/column the
|
|
32
|
+
* block is inserted BEFORE in the PRE-removal numbering, so a downward move lands `count` earlier
|
|
33
|
+
* (cut row 2 → Insert Cut Cells at row 6 lands the row at 5: r1 r3 r4 r5 r2 r6).
|
|
34
|
+
*/
|
|
35
|
+
export type MoveDimensionOptions = {
|
|
36
|
+
insertBefore?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Translate an Insert-Cut-Cells reference (pre-removal numbering) into the hook's post-removal
|
|
40
|
+
* landing index. Returns `undefined` when the reference falls inside the moved block (a no-op).
|
|
41
|
+
*/
|
|
42
|
+
export declare const resolveMoveReferenceIndex: (dims: number[], referenceIndex: number, options?: MoveDimensionOptions) => number | undefined;
|
|
43
|
+
export declare const useOnMoveRows: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, createHistory, onChangeSheetData, onChangeSheets, onChangeTables, onChangeConditionalFormats, onChangeDataValidations, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, getDependents, getNonEmptyColumnCount, getActiveCell, onCommand, }: UseOnMoveRowsProps<T, S>) => (sheetId: number, rows: number[], rawReferenceRowIndex: number, options?: MoveDimensionOptions) => void;
|
|
29
44
|
export {};
|
|
30
45
|
//# sourceMappingURL=use-on-move-rows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-move-rows.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAUtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACtE,0BAA0B,CAAC,EAAE,mBAAmB,CAC9C,CAAC,EACD,CAAC,CACF,CAAC,4BAA4B,CAAC,CAAC;IAChC,uBAAuB,CAAC,EAAE,mBAAmB,CAC3C,CAAC,EACD,CAAC,CACF,CAAC,yBAAyB,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,kBAAkB,CAC1B,CAAC,wBAAwB,CAAC,CAAC;IAC5B,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,+RAiBhE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"use-on-move-rows.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAUtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACtE,0BAA0B,CAAC,EAAE,mBAAmB,CAC9C,CAAC,EACD,CAAC,CACF,CAAC,4BAA4B,CAAC,CAAC;IAChC,uBAAuB,CAAC,EAAE,mBAAmB,CAC3C,CAAC,EACD,CAAC,CACF,CAAC,yBAAyB,CAAC,CAAC;IAC7B,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,kBAAkB,CAC1B,CAAC,wBAAwB,CAAC,CAAC;IAC5B,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,UAAU,oBAAoB,KAC7B,MAAM,GAAG,SAYX,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,+RAiBhE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,eAIZ,MAAM,QACT,MAAM,EAAE,wBACQ,MAAM,YAClB,oBAAoB,SA0VnC,CAAC"}
|
|
@@ -9,10 +9,27 @@ import { moveMergedCells } from "../api/merges";
|
|
|
9
9
|
import { updateRangedRulesOnReorder } from "../api/range-rule-helpers";
|
|
10
10
|
import { shiftTableMovingRows } from "../api/table";
|
|
11
11
|
import { useCanEditSheet } from "./use-can-edit-cellrange";
|
|
12
|
+
/**
|
|
13
|
+
* Translate an Insert-Cut-Cells reference (pre-removal numbering) into the hook's post-removal
|
|
14
|
+
* landing index. Returns `undefined` when the reference falls inside the moved block (a no-op).
|
|
15
|
+
*/
|
|
16
|
+
export var resolveMoveReferenceIndex = function (dims, referenceIndex, options) {
|
|
17
|
+
if (!(options === null || options === void 0 ? void 0 : options.insertBefore)) {
|
|
18
|
+
return referenceIndex;
|
|
19
|
+
}
|
|
20
|
+
var _a = dims, first = _a[0], _b = dims.length - 1, last = _a[_b];
|
|
21
|
+
if (referenceIndex > last) {
|
|
22
|
+
return referenceIndex - dims.length;
|
|
23
|
+
}
|
|
24
|
+
if (referenceIndex > first) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return referenceIndex;
|
|
28
|
+
};
|
|
12
29
|
export var useOnMoveRows = function (_a) {
|
|
13
30
|
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, createHistory = _a.createHistory, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, getDependents = _a.getDependents, getNonEmptyColumnCount = _a.getNonEmptyColumnCount, getActiveCell = _a.getActiveCell, onCommand = _a.onCommand;
|
|
14
31
|
var canEditSheet = useCanEditSheet();
|
|
15
|
-
return useCallback(function (sheetId, rows,
|
|
32
|
+
return useCallback(function (sheetId, rows, rawReferenceRowIndex, options) {
|
|
16
33
|
if (!canEditSheet(sheetId)) {
|
|
17
34
|
console.debug("This range is protected, users cannot edit this cell range.");
|
|
18
35
|
return;
|
|
@@ -20,6 +37,10 @@ export var useOnMoveRows = function (_a) {
|
|
|
20
37
|
if (!rows.length) {
|
|
21
38
|
return;
|
|
22
39
|
}
|
|
40
|
+
var referenceRowIndex = resolveMoveReferenceIndex(rows, rawReferenceRowIndex, options);
|
|
41
|
+
if (referenceRowIndex === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
23
44
|
var saveHistory = createHistory();
|
|
24
45
|
var _a = rows, firstRow = _a[0], _b = rows.length - 1, lastRow = _a[_b];
|
|
25
46
|
// We need to track this for history. Precedent cells
|
|
@@ -129,13 +150,17 @@ export var useOnMoveRows = function (_a) {
|
|
|
129
150
|
}
|
|
130
151
|
finally { if (e_1) throw e_1.error; }
|
|
131
152
|
}
|
|
132
|
-
//
|
|
133
|
-
//
|
|
153
|
+
// The rows the move displaces (Excel: refs into them shift by ±count). Moving UP,
|
|
154
|
+
// rows `referenceRowIndex..firstRow-1` slide down; moving DOWN, rows
|
|
155
|
+
// `lastRow+1..referenceRowIndex+count-1` slide up (the block lands at
|
|
156
|
+
// `referenceRowIndex` in the post-removal frame).
|
|
134
157
|
var shiftedRange = {
|
|
135
158
|
startColumnIndex: 1,
|
|
136
159
|
endColumnIndex: columnCount,
|
|
137
|
-
startRowIndex:
|
|
138
|
-
endRowIndex:
|
|
160
|
+
startRowIndex: direction === Direction.Left ? referenceRowIndex : lastRow + 1,
|
|
161
|
+
endRowIndex: direction === Direction.Left
|
|
162
|
+
? firstRow - 1
|
|
163
|
+
: referenceRowIndex + count - 1,
|
|
139
164
|
};
|
|
140
165
|
try {
|
|
141
166
|
// Update formulas
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CellInterface, SelectionArea } from "@rowsncolumns/common-types";
|
|
1
|
+
import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { CellData, SelectionAttributes, Sheet, TableView } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { OnCommand } from "../commands";
|
|
4
4
|
import type { CalculationOperation, useCalculation } from "./use-calculation";
|
|
@@ -29,7 +29,12 @@ export type UseOnMoveSelectionProps<T extends CellData, S extends Sheet> = {
|
|
|
29
29
|
onChangePivotTables?: UseSpreadsheetProps<T, S>["onChangePivotTables"];
|
|
30
30
|
getDependents: ReturnType<typeof useCalculation>["getDependents"];
|
|
31
31
|
getActiveCell: () => CellInterface;
|
|
32
|
+
/**
|
|
33
|
+
* Merged ranges of a sheet — a drag-move whose destination (or source) covers a merge only
|
|
34
|
+
* partially is refused, like Excel ("We can't do that to a merged cell.").
|
|
35
|
+
*/
|
|
36
|
+
getSheetMerges?: (sheetId: number) => GridRange[] | undefined | null;
|
|
32
37
|
onCommand?: OnCommand;
|
|
33
38
|
};
|
|
34
|
-
export declare const useOnMoveSelection: <T extends CellData, S extends Sheet>({ rowCount, columnCount, tables, locale, cellXfsRegistry, sharedStringRegistry, getDependents, getActiveCell, onChangeTables, onChangeSheets, onChangeNamedRanges, onChangeDataValidations, onChangeConditionalFormats, onChangePivotTables, onChangeSheetData, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, isArrayFormula, getDataValidationById, onCommand, }: UseOnMoveSelectionProps<T, S>) => (sheetId: number, from: SelectionArea<SelectionAttributes>, to: SelectionArea<SelectionAttributes>) => void;
|
|
39
|
+
export declare const useOnMoveSelection: <T extends CellData, S extends Sheet>({ rowCount, columnCount, tables, locale, cellXfsRegistry, sharedStringRegistry, getDependents, getActiveCell, onChangeTables, onChangeSheets, onChangeNamedRanges, onChangeDataValidations, onChangeConditionalFormats, onChangePivotTables, onChangeSheetData, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, isArrayFormula, getDataValidationById, getSheetMerges, onCommand, }: UseOnMoveSelectionProps<T, S>) => (sheetId: number, from: SelectionArea<SelectionAttributes>, to: SelectionArea<SelectionAttributes>) => void;
|
|
35
40
|
//# sourceMappingURL=use-on-move-selection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-move-selection.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-on-move-selection.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,14 +7,17 @@ import { useCallback } from "react";
|
|
|
7
7
|
import { processSideEffectDependentCells } from "../api/dependency";
|
|
8
8
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
9
9
|
import { createSheetDraft } from "../api/immer-utils";
|
|
10
|
+
import { findPartiallyCoveredMerge, MERGED_CELL_MOVE_ERROR } from "../api/merges";
|
|
10
11
|
import { shiftPivotsOnMove } from "../api/pivot-range";
|
|
12
|
+
import { useShowError } from "../atoms/error-state.atom";
|
|
11
13
|
import { SheetCell } from "../sheet-cell";
|
|
12
14
|
import { moveRange } from "./../api/selection";
|
|
13
15
|
import { useCanEditCellRange } from "./use-can-edit-cellrange";
|
|
14
16
|
import { useOnMoveTableColumns } from "./use-on-move-table-columns";
|
|
15
17
|
export var useOnMoveSelection = function (_a) {
|
|
16
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, tables = _a.tables, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDependents = _a.getDependents, getActiveCell = _a.getActiveCell, onChangeTables = _a.onChangeTables, onChangeSheets = _a.onChangeSheets, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangePivotTables = _a.onChangePivotTables, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, isArrayFormula = _a.isArrayFormula, getDataValidationById = _a.getDataValidationById, onCommand = _a.onCommand;
|
|
18
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, tables = _a.tables, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDependents = _a.getDependents, getActiveCell = _a.getActiveCell, onChangeTables = _a.onChangeTables, onChangeSheets = _a.onChangeSheets, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeDataValidations = _a.onChangeDataValidations, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangePivotTables = _a.onChangePivotTables, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, isArrayFormula = _a.isArrayFormula, getDataValidationById = _a.getDataValidationById, getSheetMerges = _a.getSheetMerges, onCommand = _a.onCommand;
|
|
17
19
|
var canEditCellRange = useCanEditCellRange();
|
|
20
|
+
var showError = useShowError();
|
|
18
21
|
var onMoveTableColumns = useOnMoveTableColumns({
|
|
19
22
|
rowCount: rowCount,
|
|
20
23
|
columnCount: columnCount,
|
|
@@ -34,6 +37,14 @@ export var useOnMoveSelection = function (_a) {
|
|
|
34
37
|
console.debug("This range is protected, users cannot edit this cell range.");
|
|
35
38
|
return;
|
|
36
39
|
}
|
|
40
|
+
// Excel refuses a move whose destination or source covers a merged cell only partially
|
|
41
|
+
// (the write would tear the merge); merges wholly inside the block travel with it.
|
|
42
|
+
var merges = getSheetMerges === null || getSheetMerges === void 0 ? void 0 : getSheetMerges(sheetId);
|
|
43
|
+
if (findPartiallyCoveredMerge(to.range, merges) ||
|
|
44
|
+
findPartiallyCoveredMerge(from.range, merges)) {
|
|
45
|
+
showError({ message: MERGED_CELL_MOVE_ERROR });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
37
48
|
// Check if we are moving columns
|
|
38
49
|
// within table
|
|
39
50
|
var _a = __read(getSelectedTableColumnFromSelection(from, tables), 2), sourceTable = _a[0], sourceColumns = _a[1];
|
|
@@ -472,6 +483,8 @@ export var useOnMoveSelection = function (_a) {
|
|
|
472
483
|
canEditCellRange,
|
|
473
484
|
isArrayFormula,
|
|
474
485
|
getDataValidationById,
|
|
486
|
+
getSheetMerges,
|
|
487
|
+
showError,
|
|
475
488
|
onCommand,
|
|
476
489
|
]);
|
|
477
490
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Citation } from "@rowsncolumns/common-types";
|
|
2
|
-
import type { CellInterface, SelectionArea } from "@rowsncolumns/grid";
|
|
2
|
+
import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/grid";
|
|
3
3
|
import type { CellData, DataValidationRuleRecord, SelectionAttributes, Sheet, TableView } from "@rowsncolumns/spreadsheet";
|
|
4
4
|
import type { OnCommand } from "../commands";
|
|
5
5
|
import type { GeneratedNames } from "../generated-names";
|
|
@@ -37,6 +37,16 @@ type UseOnPasteProps<T extends CellData, S extends Sheet> = {
|
|
|
37
37
|
onChangeEmbeds: UseSpreadsheetProps<T, S>["onChangeEmbeds"];
|
|
38
38
|
onRequestFonts: UseSpreadsheetProps<T, S>["onRequestFonts"];
|
|
39
39
|
onChangeDataValidations: UseSpreadsheetProps<T, S>["onChangeDataValidations"];
|
|
40
|
+
/**
|
|
41
|
+
* Defined names wholly inside a CUT block follow it to the paste destination (Excel: `Data`
|
|
42
|
+
* over A1:A3 becomes C1:C3 after cut A1:A3 → paste C1; a partially covered name stays).
|
|
43
|
+
*/
|
|
44
|
+
onChangeNamedRanges?: UseSpreadsheetProps<T, S>["onChangeNamedRanges"];
|
|
45
|
+
/**
|
|
46
|
+
* Merged ranges of a sheet — a cut + paste whose destination (or source) covers a merge only
|
|
47
|
+
* partially is refused, like Excel ("We can't do that to a merged cell.").
|
|
48
|
+
*/
|
|
49
|
+
getSheetMerges?: (sheetId: number) => GridRange[] | undefined | null;
|
|
40
50
|
onChangeSelections: ReturnType<typeof useSheetState>["onChangeSelections"];
|
|
41
51
|
onChangeActiveCell(sheetId: number, cell: CellInterface): void;
|
|
42
52
|
getDependents: ReturnType<typeof useCalculation>["getDependents"];
|
|
@@ -74,6 +84,6 @@ type UseOnPasteProps<T extends CellData, S extends Sheet> = {
|
|
|
74
84
|
onCommand?: OnCommand;
|
|
75
85
|
generatedNames?: GeneratedNames;
|
|
76
86
|
};
|
|
77
|
-
export declare const useOnPaste: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, sheetData, tables: currentTables, maxRowCount, maxColumnCount, isHiddenByFilterRow, onRequestFonts, idCreationStrategy, createHistory, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeSelections, onChangeActiveCell, getDependents, getActiveCell, getUserEnteredValue, onChangeDataValidations, preserveFormatting, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getSheetName, onError, citations, onChangeCitations, sanitizeHtml, onCommand, generatedNames, }: UseOnPasteProps<T, S>) => (e: ClipboardEvent | undefined, sourceSheetId: number | undefined, destinationSheetId: number, copiedSelections: SelectionArea<SelectionAttributes>[] | undefined, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[] | undefined, finalSelections: SelectionArea<SelectionAttributes>[] | undefined, isCutOperation: boolean) => Promise<void>;
|
|
87
|
+
export declare const useOnPaste: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, sheetData, tables: currentTables, maxRowCount, maxColumnCount, isHiddenByFilterRow, onRequestFonts, idCreationStrategy, createHistory, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeSelections, onChangeActiveCell, getDependents, getActiveCell, getUserEnteredValue, onChangeDataValidations, onChangeNamedRanges, getSheetMerges, preserveFormatting, cellXfsRegistry, sharedStringRegistry, getDataValidationById, getSheetName, onError, citations, onChangeCitations, sanitizeHtml, onCommand, generatedNames, }: UseOnPasteProps<T, S>) => (e: ClipboardEvent | undefined, sourceSheetId: number | undefined, destinationSheetId: number, copiedSelections: SelectionArea<SelectionAttributes>[] | undefined, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[] | undefined, finalSelections: SelectionArea<SelectionAttributes>[] | undefined, isCutOperation: boolean) => Promise<void>;
|
|
78
88
|
export {};
|
|
79
89
|
//# sourceMappingURL=use-on-paste.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-paste.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-paste.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"use-on-paste.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-paste.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACV,QAAQ,EACR,wBAAwB,EAExB,mBAAmB,EACnB,KAAK,EACL,SAAS,EACV,MAAM,2BAA2B,CAAC;AAiCnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA6BzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,SAAS,MAAM,EACf,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,SAAS,MAAM,EACf,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,KAC1D,wBAAwB,EAoB1B,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,CACtB,EAAE,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAC/B,wBAAwB,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,mBAAmB,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,qBAAqB,CAAC,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,uBAAuB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC9E;;;OAGG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACvE;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACrE,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/D,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,aAAa,EAAE,MAAM,aAAa,CAAC;IACnC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,mBAAmB,EAAE,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrE;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,0nBAsC7D,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,SAiCf,cAAc,GAAG,SAAS,iBACd,MAAM,GAAG,SAAS,sBACb,MAAM,oBACR,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAAG,SAAS,cACtD,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAAG,SAAS,mBAC3C,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAAG,SAAS,kBACjD,OAAO,kBAqxC5B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator, __read, __rest, __spreadArray, __values } from "tslib";
|
|
2
2
|
import { isStaticNode } from "@rowsncolumns/dag";
|
|
3
|
-
import { areaIntersects, isAreasEqual } from "@rowsncolumns/grid";
|
|
3
|
+
import { areaInsideArea, areaIntersects, isAreasEqual } from "@rowsncolumns/grid";
|
|
4
4
|
import { selectionFromActiveCell } from "@rowsncolumns/grid";
|
|
5
5
|
import { DEFAULT_COLUMN_COUNT, DEFAULT_ROW_COUNT, findActiveTableWithinCell, loadWebFont, MAX_COLUMN_COUNT, MAX_ROW_COUNT, useFocusEmbedOrChart, useGetFinalRowHeight, useRedrawGrid, } from "@rowsncolumns/spreadsheet";
|
|
6
6
|
import { isSelectionACell, useGetEffectiveValuesFromRange, } from "@rowsncolumns/spreadsheet";
|
|
@@ -10,6 +10,9 @@ import { useCallback } from "react";
|
|
|
10
10
|
import { processSideEffectDependentCells } from "../api/dependency";
|
|
11
11
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
12
12
|
import { createSheetDraft } from "../api/immer-utils";
|
|
13
|
+
import { findPartiallyCoveredMerge, MERGED_CELL_MOVE_ERROR } from "../api/merges";
|
|
14
|
+
import { moveRange } from "../api/selection";
|
|
15
|
+
import { useShowError } from "../atoms/error-state.atom";
|
|
13
16
|
import { applyPasteOperation, isBlankClipboardCell, resolvePasteSpecialOptions, } from "../api/paste-special";
|
|
14
17
|
import { findAdjacentTable, findTableColumnIndex } from "../api/table";
|
|
15
18
|
import { addCalculatedColumnsForRowExpansion } from "../interface/change-table-column";
|
|
@@ -35,8 +38,9 @@ export var buildDestinationRowAssignments = function (sheetId, startRowIndex, en
|
|
|
35
38
|
return assignments;
|
|
36
39
|
};
|
|
37
40
|
export var useOnPaste = function (_a) {
|
|
38
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sheetData = _a.sheetData, currentTables = _a.tables, _b = _a.maxRowCount, maxRowCount = _b === void 0 ? MAX_ROW_COUNT : _b, _c = _a.maxColumnCount, maxColumnCount = _c === void 0 ? MAX_COLUMN_COUNT : _c, isHiddenByFilterRow = _a.isHiddenByFilterRow, onRequestFonts = _a.onRequestFonts, idCreationStrategy = _a.idCreationStrategy, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeEmbeds = _a.onChangeEmbeds, onChangeSelections = _a.onChangeSelections, onChangeActiveCell = _a.onChangeActiveCell, getDependents = _a.getDependents, getActiveCell = _a.getActiveCell, getUserEnteredValue = _a.getUserEnteredValue, onChangeDataValidations = _a.onChangeDataValidations, _d = _a.preserveFormatting, preserveFormatting = _d === void 0 ? true : _d, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, getSheetName = _a.getSheetName, onError = _a.onError, citations = _a.citations, onChangeCitations = _a.onChangeCitations, sanitizeHtml = _a.sanitizeHtml, onCommand = _a.onCommand, generatedNames = _a.generatedNames;
|
|
41
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sheetData = _a.sheetData, currentTables = _a.tables, _b = _a.maxRowCount, maxRowCount = _b === void 0 ? MAX_ROW_COUNT : _b, _c = _a.maxColumnCount, maxColumnCount = _c === void 0 ? MAX_COLUMN_COUNT : _c, isHiddenByFilterRow = _a.isHiddenByFilterRow, onRequestFonts = _a.onRequestFonts, idCreationStrategy = _a.idCreationStrategy, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeEmbeds = _a.onChangeEmbeds, onChangeSelections = _a.onChangeSelections, onChangeActiveCell = _a.onChangeActiveCell, getDependents = _a.getDependents, getActiveCell = _a.getActiveCell, getUserEnteredValue = _a.getUserEnteredValue, onChangeDataValidations = _a.onChangeDataValidations, onChangeNamedRanges = _a.onChangeNamedRanges, getSheetMerges = _a.getSheetMerges, _d = _a.preserveFormatting, preserveFormatting = _d === void 0 ? true : _d, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, getSheetName = _a.getSheetName, onError = _a.onError, citations = _a.citations, onChangeCitations = _a.onChangeCitations, sanitizeHtml = _a.sanitizeHtml, onCommand = _a.onCommand, generatedNames = _a.generatedNames;
|
|
39
42
|
var canEditCellRange = useCanEditCellRange();
|
|
43
|
+
var showError = useShowError();
|
|
40
44
|
// Allowed values
|
|
41
45
|
var getEffectiveValuesFromRange = useGetEffectiveValuesFromRange();
|
|
42
46
|
var focusEmbedOrChart = useFocusEmbedOrChart();
|
|
@@ -167,6 +171,16 @@ export var useOnPaste = function (_a) {
|
|
|
167
171
|
console.debug("Protected range, You cannot paste on to protected cells.");
|
|
168
172
|
return [2 /*return*/];
|
|
169
173
|
}
|
|
174
|
+
// A cut is a move: Excel refuses it when the destination (or the source) covers a merged
|
|
175
|
+
// cell only partially — writing into a non-anchor cell of a merge would tear it.
|
|
176
|
+
if (isCutOperation &&
|
|
177
|
+
from &&
|
|
178
|
+
!isNil(sourceSheetId) &&
|
|
179
|
+
(findPartiallyCoveredMerge(to.range, getSheetMerges === null || getSheetMerges === void 0 ? void 0 : getSheetMerges(destinationSheetId)) ||
|
|
180
|
+
findPartiallyCoveredMerge(from.range, getSheetMerges === null || getSheetMerges === void 0 ? void 0 : getSheetMerges(sourceSheetId)))) {
|
|
181
|
+
showError({ message: MERGED_CELL_MOVE_ERROR });
|
|
182
|
+
return [2 /*return*/];
|
|
183
|
+
}
|
|
170
184
|
// Check if pasting a table would overlap with an existing table
|
|
171
185
|
if (tables === null || tables === void 0 ? void 0 : tables.length) {
|
|
172
186
|
existingTable = currentTables === null || currentTables === void 0 ? void 0 : currentTables.find(function (table) {
|
|
@@ -802,6 +816,37 @@ export var useOnPaste = function (_a) {
|
|
|
802
816
|
}
|
|
803
817
|
}
|
|
804
818
|
}
|
|
819
|
+
// Defined names wholly inside the cut block follow it (Excel move semantics); a name the
|
|
820
|
+
// block covers only partially keeps referring to its original area.
|
|
821
|
+
if (isCutOperation && from && !isNil(sourceSheetId)) {
|
|
822
|
+
onChangeNamedRanges === null || onChangeNamedRanges === void 0 ? void 0 : onChangeNamedRanges(function (prevNamedRanges) {
|
|
823
|
+
var _a = __read(produceWithPatches(prevNamedRanges, function (draft) {
|
|
824
|
+
var e_10, _a;
|
|
825
|
+
var _b;
|
|
826
|
+
try {
|
|
827
|
+
for (var draft_1 = __values(draft), draft_1_1 = draft_1.next(); !draft_1_1.done; draft_1_1 = draft_1.next()) {
|
|
828
|
+
var namedRange = draft_1_1.value;
|
|
829
|
+
if (((_b = namedRange.range) === null || _b === void 0 ? void 0 : _b.sheetId) === sourceSheetId &&
|
|
830
|
+
areaInsideArea(namedRange.range, from.range)) {
|
|
831
|
+
namedRange.range = __assign(__assign({}, moveRange(namedRange.range, from.range, to.range)), { sheetId: destinationSheetId });
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
catch (e_10_1) { e_10 = { error: e_10_1 }; }
|
|
836
|
+
finally {
|
|
837
|
+
try {
|
|
838
|
+
if (draft_1_1 && !draft_1_1.done && (_a = draft_1.return)) _a.call(draft_1);
|
|
839
|
+
}
|
|
840
|
+
finally { if (e_10) throw e_10.error; }
|
|
841
|
+
}
|
|
842
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
843
|
+
if (!patches.length) {
|
|
844
|
+
return prevNamedRanges;
|
|
845
|
+
}
|
|
846
|
+
saveHistory({ namedRanges: { patches: patches, inversePatches: inversePatches } });
|
|
847
|
+
return nextState;
|
|
848
|
+
});
|
|
849
|
+
}
|
|
805
850
|
// Embeds
|
|
806
851
|
if (embeds === null || embeds === void 0 ? void 0 : embeds.length) {
|
|
807
852
|
firstEmbedId_1 = embeds[0].embedId;
|
|
@@ -855,7 +900,7 @@ export var useOnPaste = function (_a) {
|
|
|
855
900
|
// For cut operation: Move citations to new position
|
|
856
901
|
onChangeCitations(function (prevCitations) {
|
|
857
902
|
var _a = __read(produceWithPatches(prevCitations, function (draft) {
|
|
858
|
-
var
|
|
903
|
+
var e_11, _a;
|
|
859
904
|
var _loop_3 = function (citationId) {
|
|
860
905
|
var citation = draft.find(function (c) { return c.id === citationId; });
|
|
861
906
|
if (citation) {
|
|
@@ -873,12 +918,12 @@ export var useOnPaste = function (_a) {
|
|
|
873
918
|
_loop_3(citationId);
|
|
874
919
|
}
|
|
875
920
|
}
|
|
876
|
-
catch (
|
|
921
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
877
922
|
finally {
|
|
878
923
|
try {
|
|
879
924
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
880
925
|
}
|
|
881
|
-
finally { if (
|
|
926
|
+
finally { if (e_11) throw e_11.error; }
|
|
882
927
|
}
|
|
883
928
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
884
929
|
saveHistory({
|
|
@@ -933,7 +978,7 @@ export var useOnPaste = function (_a) {
|
|
|
933
978
|
// Update cell citationIds to point to new citations
|
|
934
979
|
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
|
|
935
980
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
936
|
-
var
|
|
981
|
+
var e_12, _a;
|
|
937
982
|
var _b, _c, _d;
|
|
938
983
|
try {
|
|
939
984
|
for (var destinationRows_4 = __values(destinationRows), destinationRows_4_1 = destinationRows_4.next(); !destinationRows_4_1.done; destinationRows_4_1 = destinationRows_4.next()) {
|
|
@@ -949,12 +994,12 @@ export var useOnPaste = function (_a) {
|
|
|
949
994
|
}
|
|
950
995
|
}
|
|
951
996
|
}
|
|
952
|
-
catch (
|
|
997
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
953
998
|
finally {
|
|
954
999
|
try {
|
|
955
1000
|
if (destinationRows_4_1 && !destinationRows_4_1.done && (_a = destinationRows_4.return)) _a.call(destinationRows_4);
|
|
956
1001
|
}
|
|
957
|
-
finally { if (
|
|
1002
|
+
finally { if (e_12) throw e_12.error; }
|
|
958
1003
|
}
|
|
959
1004
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
960
1005
|
saveHistory({
|
|
@@ -1011,5 +1056,8 @@ export var useOnPaste = function (_a) {
|
|
|
1011
1056
|
getFinalRowHeight,
|
|
1012
1057
|
onCommand,
|
|
1013
1058
|
generatedNames,
|
|
1059
|
+
onChangeNamedRanges,
|
|
1060
|
+
getSheetMerges,
|
|
1061
|
+
showError,
|
|
1014
1062
|
]);
|
|
1015
1063
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CalculatorConfig } from "@rowsncolumns/calculator";
|
|
2
|
-
import type {
|
|
3
|
-
import type { BandedDefinition, BandedRange, CanvasGridProps, CellData, ColorMode, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, PivotTable, ProtectedRange, SelectionAttributes, Sheet, SpreadsheetTheme, TableView
|
|
2
|
+
import type { CellFormat, CellInterface, Citation, GridRange, IterativeCalculationOptions, NamedCellStyle, SelectionArea } from "@rowsncolumns/common-types";
|
|
3
|
+
import type { BandedDefinition, BandedRange, CanvasGridProps, CellData, ColorMode, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, PivotTable, ProtectedRange, SelectionAttributes, Sheet, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
4
|
+
import { type FormulaLocaleInput } from "@rowsncolumns/utils";
|
|
4
5
|
import type { Patch } from "immer";
|
|
5
6
|
import { getAutoFillValues as defaultGetAutoFillValues } from "../api/fill";
|
|
6
7
|
import type { OnCommand } from "../commands";
|
|
@@ -252,6 +253,14 @@ export type UseSpreadsheetProps<T extends CellData = CellData, S extends Sheet =
|
|
|
252
253
|
* Auto detected from Intl.DateTimeFormat().resolvedOptions().locale
|
|
253
254
|
*/
|
|
254
255
|
locale?: string;
|
|
256
|
+
/**
|
|
257
|
+
* Formula SYNTAX locale (rowsncolumns/spreadsheet#655): the language whose function names,
|
|
258
|
+
* decimal / argument separators and error values the cell editor and formula bar use. Storage
|
|
259
|
+
* and evaluation stay canonical (English names, `.` and `,`), so this only shapes what the user
|
|
260
|
+
* types and sees. Resolved and returned as `formulaLocale` — pass it to `CanvasGrid`. Defaults to
|
|
261
|
+
* `locale`; `"en"` keeps English syntax; a `FormulaLocaleDefinition` adds or overrides names.
|
|
262
|
+
*/
|
|
263
|
+
formulaLocale?: FormulaLocaleInput;
|
|
255
264
|
/**
|
|
256
265
|
* Formatters used to customize/localize auto-generated names, e.g. new
|
|
257
266
|
* sheet titles ("Sheet1"), duplicated sheet titles ("Copy of Sheet1"),
|
|
@@ -379,7 +388,7 @@ export declare const deriveBuiltInTableBanding: (table: TableView) => BandedDefi
|
|
|
379
388
|
* @param param0
|
|
380
389
|
* @returns
|
|
381
390
|
*/
|
|
382
|
-
export declare const useSpreadsheetState: <T extends CellData = CellData, S extends Sheet = Sheet>({ sheets, onChangeSheets, theme, functions, onDemandFormulaPattern, enableLazyCalculation, conditionalFormats, dataValidations, tables, namedRanges, enableExcelImportHistory, enableExcelfileDragDrop, onChangeTables, onChangeNamedRanges, onChangeCharts, onChangeEmbeds, onChangeProtectedRanges, onChangeConditionalFormats, onChangeDataValidations, onChangeBandedRanges, onChangePivotTables, sheetData, onChangeSheetData, onChangeDependencyGraph, onChangeHistory, onCommand: onCommandProp, onChangeTheme, namedCellStyles, onChangeNamedCellStyles, onError, getAutoFillValues: rawGetAutoFillValues, customAutofillLists, getEffectiveStructuredValue, darkThemeClassName, colorMode, fonts, enableDragnDrop, enabledUndoRedo, locale, generatedNames: generatedNamesProp, enableAtFormula, preserveFormattingOnPaste, recalculateOnOpen, protectFormulas, maxRowCount, maxColumnCount, maxSheetCount, idCreationStrategy, fileSizeLimit, cellXfs, cellStyles, onChangeCellXfs, sharedStrings, onChangeSharedStrings, onRequestFonts, onChangeSlicers, citations, onChangeCitations, createCalculationWorker, calculationMode, iterativeCalculation, onIterativeCalculationEnabled, onStreamStart, onStreamProgress, onStreamEnd, onConfirm, onPrompt, sanitizeHtml, }: UseSpreadsheetProps<T, S>) => {
|
|
391
|
+
export declare const useSpreadsheetState: <T extends CellData = CellData, S extends Sheet = Sheet>({ sheets, onChangeSheets, theme, functions, onDemandFormulaPattern, enableLazyCalculation, conditionalFormats, dataValidations, tables, namedRanges, enableExcelImportHistory, enableExcelfileDragDrop, onChangeTables, onChangeNamedRanges, onChangeCharts, onChangeEmbeds, onChangeProtectedRanges, onChangeConditionalFormats, onChangeDataValidations, onChangeBandedRanges, onChangePivotTables, sheetData, onChangeSheetData, onChangeDependencyGraph, onChangeHistory, onCommand: onCommandProp, onChangeTheme, namedCellStyles, onChangeNamedCellStyles, onError, getAutoFillValues: rawGetAutoFillValues, customAutofillLists, getEffectiveStructuredValue, darkThemeClassName, colorMode, fonts, enableDragnDrop, enabledUndoRedo, locale, formulaLocale: formulaLocaleProp, generatedNames: generatedNamesProp, enableAtFormula, preserveFormattingOnPaste, recalculateOnOpen, protectFormulas, maxRowCount, maxColumnCount, maxSheetCount, idCreationStrategy, fileSizeLimit, cellXfs, cellStyles, onChangeCellXfs, sharedStrings, onChangeSharedStrings, onRequestFonts, onChangeSlicers, citations, onChangeCitations, createCalculationWorker, calculationMode, iterativeCalculation, onIterativeCalculationEnabled, onStreamStart, onStreamProgress, onStreamEnd, onConfirm, onPrompt, sanitizeHtml, }: UseSpreadsheetProps<T, S>) => {
|
|
383
392
|
namedCellStyles: NamedCellStyle[] | undefined;
|
|
384
393
|
activeCellBySheetId: Record<number, import("@rowsncolumns/grid").CellInterface>;
|
|
385
394
|
selectionsBySheetId: Record<number, import("@rowsncolumns/grid").SelectionArea<SelectionAttributes>[]>;
|
|
@@ -524,9 +533,10 @@ export declare const useSpreadsheetState: <T extends CellData = CellData, S exte
|
|
|
524
533
|
onInsertCellsShiftDown: (sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, selections: import("@rowsncolumns/grid").SelectionArea<SelectionAttributes>[]) => void;
|
|
525
534
|
onInsertRow: (sheetId: number, referenceRowIndex: number, numRows?: number) => void;
|
|
526
535
|
onInsertColumn: (sheetId: number, referenceColumnIndex: number, numColumns?: number) => void;
|
|
527
|
-
onMoveColumns: (sheetId: number, columns: number[],
|
|
528
|
-
onMoveRows: (sheetId: number, rows: number[],
|
|
536
|
+
onMoveColumns: (sheetId: number, columns: number[], rawReferenceColumnIndex: number, options?: import("./use-on-move-rows").MoveDimensionOptions) => void;
|
|
537
|
+
onMoveRows: (sheetId: number, rows: number[], rawReferenceRowIndex: number, options?: import("./use-on-move-rows").MoveDimensionOptions) => void;
|
|
529
538
|
onMoveSelection: (sheetId: number, from: SelectionArea<SelectionAttributes>, to: SelectionArea<SelectionAttributes>) => void;
|
|
539
|
+
onInsertCutCells: (sheetId: number, from: SelectionArea<SelectionAttributes>, to: SelectionArea<SelectionAttributes>) => void;
|
|
530
540
|
onSortColumn: (sheetId: number, sortedColumnIndex: number, sortOrder: import("@rowsncolumns/common-types").SortOrder, options?: import("./use-on-sort-column").SortColumnOptions, additionalLevels?: import("./use-on-sort-column").SortColumnLevel[]) => void;
|
|
531
541
|
onSortTable: import("./use-on-sort-table").OnSortTable;
|
|
532
542
|
onFilterTable: (sheetId: number, filter: TableView | import("@rowsncolumns/spreadsheet").FilterView, columnIndex: number, conditionType: import("@rowsncolumns/common-types").ConditionType | undefined, conditionValue: import("@rowsncolumns/common-types").ConditionValue[] | undefined, visibleValues: string[] | undefined | null, extras?: import("./use-on-filter-table").FilterTableExtras) => Promise<void>;
|
|
@@ -632,6 +642,7 @@ export declare const useSpreadsheetState: <T extends CellData = CellData, S exte
|
|
|
632
642
|
onTracePrecedents: (sheetId: number, cell: CellInterface) => void;
|
|
633
643
|
onClearHistory: () => void;
|
|
634
644
|
onChangeLocale: (newLocale: string, oldLocale?: string) => void;
|
|
645
|
+
formulaLocale: import("@rowsncolumns/utils").FormulaLocale;
|
|
635
646
|
onInsertComment: (sheetId: number, rowIndex: number, columnIndex: number, commentThreadId: string | number | undefined) => void;
|
|
636
647
|
onRemoveComment: (sheetId: number, rowIndex: number, columnIndex: number) => void;
|
|
637
648
|
onCreateCitation: (sheetId: number, rowIndex: number, columnIndex: number, citation: Citation) => void;
|