@rowsncolumns/spreadsheet-state 28.0.75 → 28.0.76
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/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/merges.d.ts +8 -0
- package/dist/cjs/api/merges.d.ts.map +1 -1
- package/dist/cjs/api/merges.js +64 -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/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-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-spreadsheet-state.d.ts +2 -2
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +61 -15
- 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 +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -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 +90 -31
- 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 +85 -26
- 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 +46 -8
- 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 +47 -10
- 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/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/merges.d.ts +8 -0
- package/dist/esm/api/merges.d.ts.map +1 -1
- package/dist/esm/api/merges.js +51 -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/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-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-spreadsheet-state.d.ts +2 -2
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +61 -15
- 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 +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -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 +80 -11
- 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 +81 -11
- 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 +46 -8
- 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 +47 -10
- 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 +16 -16
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { __assign, __read, __spreadArray
|
|
1
|
+
import { __assign, __read, __spreadArray } from "tslib";
|
|
2
2
|
import { Direction } from "@rowsncolumns/common-types";
|
|
3
3
|
import { produceWithPatches } from "immer";
|
|
4
|
+
import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
|
|
4
5
|
import { shrinkMergesOnRowDelete } from "../api/merges";
|
|
6
|
+
import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
|
|
5
7
|
import { shiftPivotsOnDelete } from "../api/pivot-range";
|
|
6
|
-
import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
|
|
7
8
|
import { updateSheetRangeOnDelete } from "../api/range";
|
|
9
|
+
import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
|
|
8
10
|
import { moveFilterView } from "../api/selection";
|
|
9
11
|
import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
|
|
12
|
+
import { breakStructuredRefsForRemovedTableParts, collectRemovedTableParts, removeSpillsOfDeletedAnchors, } from "../api/structural-table-refs";
|
|
10
13
|
export var deleteRow = function (_a) {
|
|
11
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, 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, onChangeActiveCell = _a.onChangeActiveCell, onChangeSelections = _a.onChangeSelections, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables;
|
|
14
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getSheetName = _a.getSheetName, 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, onChangeActiveCell = _a.onChangeActiveCell, onChangeSelections = _a.onChangeSelections, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onChangePivotTables = _a.onChangePivotTables, tables = _a.tables, getArrayRange = _a.getArrayRange, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeEmbeds = _a.onChangeEmbeds, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges;
|
|
12
15
|
return function (sheetId, rowIndexes) {
|
|
13
16
|
if (!rowIndexes.length)
|
|
14
17
|
return;
|
|
@@ -84,7 +87,7 @@ export var deleteRow = function (_a) {
|
|
|
84
87
|
// Data validations
|
|
85
88
|
onChangeDataValidations === null || onChangeDataValidations === void 0 ? void 0 : onChangeDataValidations(function (prevValidations) {
|
|
86
89
|
var _a = __read(produceWithPatches(prevValidations, function (draft) {
|
|
87
|
-
updateRangedRulesOnStructuralChange(draft, "delete", "row", minRowIndex, count, sheetId);
|
|
90
|
+
updateRangedRulesOnStructuralChange(draft, "delete", "row", minRowIndex, count, sheetId, { getSheetName: getSheetName });
|
|
88
91
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
89
92
|
saveHistory({ dataValidations: { patches: patches, inversePatches: inversePatches } });
|
|
90
93
|
return nextState;
|
|
@@ -92,11 +95,20 @@ export var deleteRow = function (_a) {
|
|
|
92
95
|
// Conditional formats
|
|
93
96
|
onChangeConditionalFormats === null || onChangeConditionalFormats === void 0 ? void 0 : onChangeConditionalFormats(function (prevConditionalFormats) {
|
|
94
97
|
var _a = __read(produceWithPatches(prevConditionalFormats, function (draft) {
|
|
95
|
-
updateRangedRulesOnStructuralChange(draft, "delete", "row", minRowIndex, count, sheetId);
|
|
98
|
+
updateRangedRulesOnStructuralChange(draft, "delete", "row", minRowIndex, count, sheetId, { getSheetName: getSheetName });
|
|
96
99
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
97
100
|
saveHistory({ conditionalFormats: { patches: patches, inversePatches: inversePatches } });
|
|
98
101
|
return nextState;
|
|
99
102
|
});
|
|
103
|
+
// Defined names: shift back / shrink; a name whose whole range is
|
|
104
|
+
// deleted is kept as `#REF!` so its users evaluate `#REF!`, like Excel.
|
|
105
|
+
onChangeNamedRanges === null || onChangeNamedRanges === void 0 ? void 0 : onChangeNamedRanges(function (prevNamedRanges) {
|
|
106
|
+
var _a = __read(produceWithPatches(prevNamedRanges, function (draft) {
|
|
107
|
+
updateNamedRangesOnStructuralChange(draft, "row", "delete", minRowIndex, count, sheetId);
|
|
108
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
109
|
+
saveHistory({ namedRanges: { patches: patches, inversePatches: inversePatches } });
|
|
110
|
+
return nextState;
|
|
111
|
+
});
|
|
100
112
|
// Shift pivot tables: ranges shrink/shift; targetPosition anchors to
|
|
101
113
|
// the start of the deletion when its row falls inside the deletion.
|
|
102
114
|
onChangePivotTables === null || onChangePivotTables === void 0 ? void 0 : onChangePivotTables(function (prevPivots) {
|
|
@@ -129,11 +141,35 @@ export var deleteRow = function (_a) {
|
|
|
129
141
|
saveHistory({ citations: { patches: patches, inversePatches: inversePatches } });
|
|
130
142
|
return nextState;
|
|
131
143
|
});
|
|
144
|
+
// Anchored objects (Excel ANC rules): floating charts / embeds move with
|
|
145
|
+
// their anchor cell, chart series ranges and AllowEditRange rectangles
|
|
146
|
+
// shift like references. Frozen panes are a positional viewport split
|
|
147
|
+
// and are deliberately NOT touched here.
|
|
148
|
+
onChangeEmbeds === null || onChangeEmbeds === void 0 ? void 0 : onChangeEmbeds(function (prevEmbeds) {
|
|
149
|
+
var _a = __read(produceWithPatches(prevEmbeds, function (draft) {
|
|
150
|
+
shiftEmbedsOnStructuralChange(draft, sheetId, "row", "delete", minRowIndex, count);
|
|
151
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
152
|
+
saveHistory({ embeds: { patches: patches, inversePatches: inversePatches } });
|
|
153
|
+
return nextState;
|
|
154
|
+
});
|
|
155
|
+
onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
|
|
156
|
+
var _a = __read(produceWithPatches(prevCharts, function (draft) {
|
|
157
|
+
shiftChartsOnStructuralChange(draft, sheetId, "row", "delete", minRowIndex, count);
|
|
158
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
159
|
+
saveHistory({ charts: { patches: patches, inversePatches: inversePatches } });
|
|
160
|
+
return nextState;
|
|
161
|
+
});
|
|
162
|
+
onChangeProtectedRanges === null || onChangeProtectedRanges === void 0 ? void 0 : onChangeProtectedRanges(function (prevProtectedRanges) {
|
|
163
|
+
var _a = __read(produceWithPatches(prevProtectedRanges, function (draft) {
|
|
164
|
+
shiftProtectedRangesOnStructuralChange(draft, sheetId, "row", "delete", minRowIndex, count);
|
|
165
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
166
|
+
saveHistory({ protectedRanges: { patches: patches, inversePatches: inversePatches } });
|
|
167
|
+
return nextState;
|
|
168
|
+
});
|
|
132
169
|
// Sheet metadata
|
|
133
170
|
onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
|
|
134
171
|
var _a = __read(produceWithPatches(prevSheets, function (draft) {
|
|
135
|
-
var
|
|
136
|
-
var _b;
|
|
172
|
+
var _a;
|
|
137
173
|
var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
138
174
|
if (!sheet)
|
|
139
175
|
return;
|
|
@@ -141,7 +177,7 @@ export var deleteRow = function (_a) {
|
|
|
141
177
|
sheet.rowMetadata.splice(minRowIndex, count);
|
|
142
178
|
}
|
|
143
179
|
if (sheet.basicFilter) {
|
|
144
|
-
var
|
|
180
|
+
var _b = sheet.basicFilter.range, startRowIndex = _b.startRowIndex, endRowIndex = _b.endRowIndex;
|
|
145
181
|
if (minRowIndex < startRowIndex) {
|
|
146
182
|
moveFilterView(sheet.basicFilter, count, Direction.Up);
|
|
147
183
|
}
|
|
@@ -154,35 +190,58 @@ export var deleteRow = function (_a) {
|
|
|
154
190
|
delete sheet.basicFilter;
|
|
155
191
|
}
|
|
156
192
|
}
|
|
157
|
-
if (sheet.frozenRowCount) {
|
|
158
|
-
try {
|
|
159
|
-
for (var sortedRowIndexes_1 = __values(sortedRowIndexes), sortedRowIndexes_1_1 = sortedRowIndexes_1.next(); !sortedRowIndexes_1_1.done; sortedRowIndexes_1_1 = sortedRowIndexes_1.next()) {
|
|
160
|
-
var rowIndex = sortedRowIndexes_1_1.value;
|
|
161
|
-
if (rowIndex <= sheet.frozenRowCount) {
|
|
162
|
-
sheet.frozenRowCount--;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
167
|
-
finally {
|
|
168
|
-
try {
|
|
169
|
-
if (sortedRowIndexes_1_1 && !sortedRowIndexes_1_1.done && (_a = sortedRowIndexes_1.return)) _a.call(sortedRowIndexes_1);
|
|
170
|
-
}
|
|
171
|
-
finally { if (e_1) throw e_1.error; }
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
193
|
if (sheet.merges) {
|
|
175
194
|
sheet.merges = shrinkMergesOnRowDelete(sheet.merges, minRowIndex, count);
|
|
176
195
|
}
|
|
177
|
-
|
|
196
|
+
// `_xlnm.Print_Area` / `_xlnm.Print_Titles` follow the defined-name rule.
|
|
197
|
+
if (sheet.printSettings) {
|
|
198
|
+
updatePrintSettingsOnStructuralChange(sheet.printSettings, "row", "delete", minRowIndex, count);
|
|
199
|
+
}
|
|
200
|
+
sheet.rowCount = Math.max(1, ((_a = sheet.rowCount) !== null && _a !== void 0 ? _a : rowCount) - count);
|
|
201
|
+
// Frozen panes are positional: the split stays where it is, only
|
|
202
|
+
// clamped so the freeze never exceeds the shrunk sheet.
|
|
203
|
+
if (sheet.frozenRowCount && sheet.frozenRowCount > sheet.rowCount) {
|
|
204
|
+
sheet.frozenRowCount = sheet.rowCount;
|
|
205
|
+
}
|
|
178
206
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
179
207
|
saveHistory({ sheets: { patches: patches, inversePatches: inversePatches } });
|
|
180
208
|
return nextState;
|
|
181
209
|
});
|
|
210
|
+
// Tables whose header row goes (dropped above): their structured refs
|
|
211
|
+
// break to `#REF!`, computed from the PRE-edit definitions.
|
|
212
|
+
var removedTableParts = collectRemovedTableParts(tables, sheetId, "row", minRowIndex, maxRowIndex);
|
|
182
213
|
// Sheet data: three-pass formula update, then splice the rows out.
|
|
183
214
|
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
|
|
184
215
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
185
216
|
var _a;
|
|
217
|
+
// A dynamic array whose anchor row is deleted takes its spill with
|
|
218
|
+
// it — drop the projected cells before the rows close up.
|
|
219
|
+
removeSpillsOfDeletedAnchors({
|
|
220
|
+
draft: draft,
|
|
221
|
+
sheetId: sheetId,
|
|
222
|
+
axis: "row",
|
|
223
|
+
minIndex: minRowIndex,
|
|
224
|
+
maxIndex: maxRowIndex,
|
|
225
|
+
getArrayRange: getArrayRange,
|
|
226
|
+
locale: locale,
|
|
227
|
+
cellXfsRegistry: cellXfsRegistry,
|
|
228
|
+
sharedStringRegistry: sharedStringRegistry,
|
|
229
|
+
});
|
|
230
|
+
breakStructuredRefsForRemovedTableParts({
|
|
231
|
+
draft: draft,
|
|
232
|
+
sheetId: sheetId,
|
|
233
|
+
axis: "row",
|
|
234
|
+
referenceIndex: minRowIndex,
|
|
235
|
+
count: count,
|
|
236
|
+
removed: removedTableParts,
|
|
237
|
+
getGraphNodes: getGraphNodes,
|
|
238
|
+
enqueueCalculation: enqueueCalculation,
|
|
239
|
+
enqueueGraphOperation: enqueueGraphOperation,
|
|
240
|
+
recalcCells: recalcCells,
|
|
241
|
+
locale: locale,
|
|
242
|
+
cellXfsRegistry: cellXfsRegistry,
|
|
243
|
+
sharedStringRegistry: sharedStringRegistry,
|
|
244
|
+
});
|
|
186
245
|
updateFormulasForStructuralChange({
|
|
187
246
|
draft: draft,
|
|
188
247
|
axis: "row",
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { CellData, CellInterface, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { SelectionAttributes, Sheet } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { UseOnInsertCellsShiftDown } from "../hooks/use-on-insert-cells-shift-down";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Insert cells ▸ Shift cells down (SHF-01, SHF-06, SHF-07, SHF-08, FMT-03). Only the selection's
|
|
6
|
+
* columns move: every cell at or below the selection's first row slides down by the selection's
|
|
7
|
+
* height. References that target a shifted cell follow it; a range that lies entirely inside the
|
|
8
|
+
* shifted columns and straddles the insertion row grows by the inserted height (SHF-08); a wider
|
|
9
|
+
* range keeps its address (SHF-07). The vacated cells take the formatting of the cell above the
|
|
10
|
+
* insertion (FMT-03). Refusals (torn merge/table/array, off-sheet push) are decided by the hook via
|
|
11
|
+
* `getShiftCellsRefusal` before this runs.
|
|
12
|
+
*/
|
|
13
|
+
export declare const insertCellsShiftDown: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }: UseOnInsertCellsShiftDown<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
|
|
5
14
|
//# sourceMappingURL=insert-cells-shift-down.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-cells-shift-down.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"insert-cells-shift-down.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAe5E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAIzF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8RAkBvE,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,MAE9B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAoQnD,CAAC"}
|
|
@@ -1,39 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { selectionFromActiveCell } from "@rowsncolumns/utils";
|
|
1
|
+
import { __read, __spreadArray, __values } from "tslib";
|
|
3
2
|
import { produceWithPatches } from "immer";
|
|
4
|
-
import { processSideEffectDependentCells } from "../api/dependency";
|
|
3
|
+
import { collectUniqueDependentsForRange, processSideEffectDependentCells, } from "../api/dependency";
|
|
4
|
+
import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
|
|
5
5
|
import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
|
|
6
|
-
import {
|
|
6
|
+
import { shiftMergesInBand } from "../api/merges";
|
|
7
|
+
import { isRangeInsideBand, resolveShiftSelection, shiftBand, } from "../api/structural-guards";
|
|
8
|
+
import { SheetCell } from "../sheet-cell";
|
|
9
|
+
/**
|
|
10
|
+
* Insert cells ▸ Shift cells down (SHF-01, SHF-06, SHF-07, SHF-08, FMT-03). Only the selection's
|
|
11
|
+
* columns move: every cell at or below the selection's first row slides down by the selection's
|
|
12
|
+
* height. References that target a shifted cell follow it; a range that lies entirely inside the
|
|
13
|
+
* shifted columns and straddles the insertion row grows by the inserted height (SHF-08); a wider
|
|
14
|
+
* range keeps its address (SHF-07). The vacated cells take the formatting of the cell above the
|
|
15
|
+
* insertion (FMT-03). Refusals (torn merge/table/array, off-sheet push) are decided by the hook via
|
|
16
|
+
* `getShiftCellsRefusal` before this runs.
|
|
17
|
+
*/
|
|
7
18
|
export var insertCellsShiftDown = function (_a) {
|
|
8
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeCitations = _a.onChangeCitations;
|
|
19
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getActiveCell = _a.getActiveCell, getSelections = _a.getSelections, getDependents = _a.getDependents, getSheetName = _a.getSheetName, createHistory = _a.createHistory, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCitations = _a.onChangeCitations;
|
|
9
20
|
return function (sheetId, activeCell, selections) {
|
|
21
|
+
var _a;
|
|
10
22
|
var saveHistory = createHistory();
|
|
11
23
|
// We need to track this for history. Precedent cells
|
|
12
24
|
var recalcCells = new Map();
|
|
13
|
-
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var selection = finalSelections[finalSelections.length - 1];
|
|
19
|
-
var count = selection.range.endRowIndex - selection.range.startRowIndex + 1;
|
|
25
|
+
var selection = resolveShiftSelection(activeCell, selections);
|
|
26
|
+
var _b = selection.range, r1 = _b.startRowIndex, r2 = _b.endRowIndex, c1 = _b.startColumnIndex, c2 = _b.endColumnIndex;
|
|
27
|
+
var count = r2 - r1 + 1;
|
|
28
|
+
var band = shiftBand("down", selection.range);
|
|
29
|
+
var sheetName = (_a = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(sheetId)) !== null && _a !== void 0 ? _a : "";
|
|
20
30
|
enqueueStructureChange === null || enqueueStructureChange === void 0 ? void 0 : enqueueStructureChange({
|
|
21
31
|
kind: "insert-cells-shift-down",
|
|
22
32
|
sheetId: sheetId,
|
|
23
|
-
startRowIndex:
|
|
24
|
-
endRowIndex:
|
|
25
|
-
startColumnIndex:
|
|
26
|
-
endColumnIndex:
|
|
33
|
+
startRowIndex: r1,
|
|
34
|
+
endRowIndex: r2,
|
|
35
|
+
startColumnIndex: c1,
|
|
36
|
+
endColumnIndex: c2,
|
|
27
37
|
rowCount: rowCount,
|
|
28
38
|
});
|
|
29
|
-
// Update sheets
|
|
39
|
+
// Update sheets — merges wholly inside the shifted columns ride down with their cells.
|
|
30
40
|
onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
|
|
31
41
|
var _a = __read(produceWithPatches(prevSheets, function (draft) {
|
|
32
42
|
var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
33
|
-
if (sheet) {
|
|
34
|
-
|
|
35
|
-
sheet.merges = moveMergedCells(sheet.merges, "row-insert", rowIndex);
|
|
36
|
-
}
|
|
43
|
+
if (sheet === null || sheet === void 0 ? void 0 : sheet.merges) {
|
|
44
|
+
sheet.merges = shiftMergesInBand(sheet.merges, "row", r1, count, true, c1, c2);
|
|
37
45
|
}
|
|
38
46
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
39
47
|
// Save history
|
|
@@ -42,40 +50,61 @@ export var insertCellsShiftDown = function (_a) {
|
|
|
42
50
|
});
|
|
43
51
|
return nextState;
|
|
44
52
|
});
|
|
53
|
+
// Tables whose columns the band covers entirely move with it (a partial cover was refused).
|
|
54
|
+
onChangeTables === null || onChangeTables === void 0 ? void 0 : onChangeTables(function (prevTables) {
|
|
55
|
+
var _a = __read(produceWithPatches(prevTables, function (draft) {
|
|
56
|
+
var e_1, _a;
|
|
57
|
+
try {
|
|
58
|
+
for (var draft_1 = __values(draft), draft_1_1 = draft_1.next(); !draft_1_1.done; draft_1_1 = draft_1.next()) {
|
|
59
|
+
var table = draft_1_1.value;
|
|
60
|
+
if (table.sheetId !== sheetId ||
|
|
61
|
+
!isRangeInsideBand(table.range, band)) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
table.range.startRowIndex += count;
|
|
65
|
+
table.range.endRowIndex += count;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
69
|
+
finally {
|
|
70
|
+
try {
|
|
71
|
+
if (draft_1_1 && !draft_1_1.done && (_a = draft_1.return)) _a.call(draft_1);
|
|
72
|
+
}
|
|
73
|
+
finally { if (e_1) throw e_1.error; }
|
|
74
|
+
}
|
|
75
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
76
|
+
saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
|
|
77
|
+
return nextState;
|
|
78
|
+
});
|
|
45
79
|
// Update citations - shift if in affected columns and after insertion row
|
|
46
80
|
onChangeCitations === null || onChangeCitations === void 0 ? void 0 : onChangeCitations(function (prevCitations) {
|
|
47
81
|
var _a = __read(produceWithPatches(prevCitations, function (draft) {
|
|
48
|
-
var
|
|
49
|
-
var affectedColStart = selection.range.startColumnIndex;
|
|
50
|
-
var affectedColEnd = selection.range.endColumnIndex;
|
|
51
|
-
var insertRowStart = selection.range.startRowIndex;
|
|
52
|
-
var shiftAmount = selection.range.endRowIndex - selection.range.startRowIndex + 1;
|
|
82
|
+
var e_2, _a;
|
|
53
83
|
try {
|
|
54
|
-
for (var
|
|
55
|
-
var citation =
|
|
84
|
+
for (var draft_2 = __values(draft), draft_2_1 = draft_2.next(); !draft_2_1.done; draft_2_1 = draft_2.next()) {
|
|
85
|
+
var citation = draft_2_1.value;
|
|
56
86
|
// Skip citations on other sheets
|
|
57
87
|
if (citation.range.sheetId !== sheetId) {
|
|
58
88
|
continue;
|
|
59
89
|
}
|
|
60
90
|
// Check if citation overlaps with affected columns
|
|
61
|
-
var
|
|
62
|
-
|
|
63
|
-
var colsOverlap = !(citationColEnd < affectedColStart || citationColStart > affectedColEnd);
|
|
91
|
+
var colsOverlap = !(citation.range.endColumnIndex < c1 ||
|
|
92
|
+
citation.range.startColumnIndex > c2);
|
|
64
93
|
if (colsOverlap) {
|
|
65
94
|
// If citation starts at or after the insertion row, shift it down
|
|
66
|
-
if (citation.range.startRowIndex >=
|
|
67
|
-
citation.range.startRowIndex +=
|
|
68
|
-
citation.range.endRowIndex +=
|
|
95
|
+
if (citation.range.startRowIndex >= r1) {
|
|
96
|
+
citation.range.startRowIndex += count;
|
|
97
|
+
citation.range.endRowIndex += count;
|
|
69
98
|
}
|
|
70
99
|
}
|
|
71
100
|
}
|
|
72
101
|
}
|
|
73
|
-
catch (
|
|
102
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
74
103
|
finally {
|
|
75
104
|
try {
|
|
76
|
-
if (
|
|
105
|
+
if (draft_2_1 && !draft_2_1.done && (_a = draft_2.return)) _a.call(draft_2);
|
|
77
106
|
}
|
|
78
|
-
finally { if (
|
|
107
|
+
finally { if (e_2) throw e_2.error; }
|
|
79
108
|
}
|
|
80
109
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
81
110
|
saveHistory({
|
|
@@ -86,15 +115,34 @@ export var insertCellsShiftDown = function (_a) {
|
|
|
86
115
|
// Sheet data
|
|
87
116
|
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
|
|
88
117
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
89
|
-
var
|
|
118
|
+
var e_3, _a;
|
|
119
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
90
120
|
var movedKeys = new Set();
|
|
91
|
-
var totalRows = (
|
|
92
|
-
|
|
121
|
+
var totalRows = Math.max((_c = (_b = draft[sheetId]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, r2 + 1);
|
|
122
|
+
// Everything at or below the insertion row in the band's columns moves down by `count`.
|
|
123
|
+
var sourceRange = {
|
|
124
|
+
startRowIndex: r1,
|
|
125
|
+
endRowIndex: totalRows + count,
|
|
126
|
+
startColumnIndex: c1,
|
|
127
|
+
endColumnIndex: c2,
|
|
128
|
+
};
|
|
129
|
+
// Formulas that read a moving cell — captured before the graph goes stale.
|
|
130
|
+
var dependents = collectUniqueDependentsForRange({
|
|
131
|
+
draft: draft,
|
|
132
|
+
sheetId: sheetId,
|
|
133
|
+
sourceRange: {
|
|
134
|
+
startRowIndex: r1,
|
|
135
|
+
endRowIndex: totalRows,
|
|
136
|
+
startColumnIndex: c1,
|
|
137
|
+
endColumnIndex: c2,
|
|
138
|
+
},
|
|
139
|
+
getDependents: getDependents,
|
|
140
|
+
});
|
|
141
|
+
for (var rowIndex = totalRows; rowIndex >= r1; rowIndex--) {
|
|
93
142
|
// We have a for loop
|
|
94
143
|
// to cater for table expansion
|
|
95
144
|
// which will push multiple columns down
|
|
96
|
-
for (var columnIndex =
|
|
97
|
-
var sourceRange = __assign(__assign({}, selection.range), { endRowIndex: selection.range.endRowIndex + count });
|
|
145
|
+
for (var columnIndex = c1; columnIndex <= c2; columnIndex++) {
|
|
98
146
|
// Process dependents
|
|
99
147
|
processSideEffectDependentCells({
|
|
100
148
|
draft: draft,
|
|
@@ -105,6 +153,7 @@ export var insertCellsShiftDown = function (_a) {
|
|
|
105
153
|
enqueueGraphOperation: enqueueGraphOperation,
|
|
106
154
|
enqueueCalculation: enqueueCalculation,
|
|
107
155
|
getDependents: getDependents,
|
|
156
|
+
getSheetName: getSheetName,
|
|
108
157
|
recalcCells: recalcCells,
|
|
109
158
|
rowDelta: count,
|
|
110
159
|
sourceRange: sourceRange,
|
|
@@ -115,26 +164,72 @@ export var insertCellsShiftDown = function (_a) {
|
|
|
115
164
|
cellXfsRegistry: cellXfsRegistry,
|
|
116
165
|
sharedStringRegistry: sharedStringRegistry,
|
|
117
166
|
});
|
|
118
|
-
|
|
119
|
-
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// SHF-08: a range living entirely inside the band's columns that straddles the insertion
|
|
170
|
+
// row grows by the inserted height (Excel's "insert inside a range expands it"). Runs on
|
|
171
|
+
// the pre-shift positions; the value shift below carries in-band dependents down.
|
|
172
|
+
var sheetCell = new SheetCell();
|
|
173
|
+
try {
|
|
174
|
+
for (var _k = __values(dependents.values()), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
175
|
+
var pos = _l.value;
|
|
176
|
+
if (pos.sheetId !== sheetId)
|
|
120
177
|
continue;
|
|
121
|
-
|
|
178
|
+
var currentSheet = createSheetDraft(draft, sheetId, pos.rowIndex);
|
|
179
|
+
var cellData = (_e = (_d = currentSheet[pos.rowIndex]) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e[pos.columnIndex];
|
|
180
|
+
sheetCell.assign(sheetId, { rowIndex: pos.rowIndex, columnIndex: pos.columnIndex }, cellData, { locale: locale, cellXfsRegistry: cellXfsRegistry, sharedStringRegistry: sharedStringRegistry });
|
|
181
|
+
var formulaValue = sheetCell.formula;
|
|
182
|
+
if (!formulaValue)
|
|
183
|
+
continue;
|
|
184
|
+
var expanded = expandRangesInFormula(formulaValue, r1, count, "row", sheetName, { bandSpan: { startIndex: c1, endIndex: c2 } });
|
|
185
|
+
if (!expanded || expanded === formulaValue)
|
|
186
|
+
continue;
|
|
187
|
+
sheetCell.setFormulaValue(expanded, false);
|
|
188
|
+
currentSheet[pos.rowIndex].values[pos.columnIndex] =
|
|
189
|
+
sheetCell.getCellData();
|
|
190
|
+
var movesWithBand = pos.rowIndex >= r1 && pos.columnIndex >= c1 && pos.columnIndex <= c2;
|
|
191
|
+
var finalPosition = {
|
|
192
|
+
sheetId: sheetId,
|
|
193
|
+
rowIndex: movesWithBand ? pos.rowIndex + count : pos.rowIndex,
|
|
194
|
+
columnIndex: pos.columnIndex,
|
|
195
|
+
};
|
|
196
|
+
var enqueueOperation = sheetCell.ephemeral()
|
|
197
|
+
? enqueueCalculation
|
|
198
|
+
: enqueueGraphOperation;
|
|
199
|
+
enqueueOperation === null || enqueueOperation === void 0 ? void 0 : enqueueOperation({ type: "add", position: finalPosition });
|
|
200
|
+
enqueueCalculation === null || enqueueCalculation === void 0 ? void 0 : enqueueCalculation({
|
|
201
|
+
type: "dirty",
|
|
202
|
+
position: finalPosition,
|
|
203
|
+
force: true,
|
|
204
|
+
});
|
|
205
|
+
recalcCells.set(createSheetCellIdentifier(sheetId, finalPosition.rowIndex, finalPosition.columnIndex), finalPosition);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
209
|
+
finally {
|
|
210
|
+
try {
|
|
211
|
+
if (_l && !_l.done && (_a = _k.return)) _a.call(_k);
|
|
122
212
|
}
|
|
213
|
+
finally { if (e_3) throw e_3.error; }
|
|
123
214
|
}
|
|
124
215
|
// Update values
|
|
125
|
-
for (var rowIndex = totalRows + count; rowIndex >
|
|
216
|
+
for (var rowIndex = totalRows + count; rowIndex > r1; rowIndex--) {
|
|
126
217
|
var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
127
|
-
for (var columnIndex =
|
|
128
|
-
var previousValue = (
|
|
218
|
+
for (var columnIndex = c2; columnIndex >= c1; columnIndex--) {
|
|
219
|
+
var previousValue = (_g = (_f = currentSheet[rowIndex - count]) === null || _f === void 0 ? void 0 : _f.values) === null || _g === void 0 ? void 0 : _g[columnIndex];
|
|
129
220
|
currentSheet[rowIndex].values[columnIndex] = previousValue;
|
|
130
221
|
}
|
|
131
222
|
}
|
|
132
|
-
//
|
|
133
|
-
|
|
223
|
+
// FMT-03: the inserted cells take the formatting of the cell directly ABOVE the
|
|
224
|
+
// insertion; at row 1 there is none, so they keep the displaced cell's formatting.
|
|
225
|
+
for (var rowIndex = r1; rowIndex <= r2; rowIndex++) {
|
|
134
226
|
var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
135
|
-
for (var columnIndex =
|
|
227
|
+
for (var columnIndex = c2; columnIndex >= c1; columnIndex--) {
|
|
228
|
+
var formatSource = r1 > 1
|
|
229
|
+
? (_j = (_h = currentSheet[r1 - 1]) === null || _h === void 0 ? void 0 : _h.values) === null || _j === void 0 ? void 0 : _j[columnIndex]
|
|
230
|
+
: currentSheet[rowIndex].values[columnIndex];
|
|
136
231
|
currentSheet[rowIndex].values[columnIndex] =
|
|
137
|
-
cloneCellWithFormatting(
|
|
232
|
+
cloneCellWithFormatting(formatSource);
|
|
138
233
|
}
|
|
139
234
|
}
|
|
140
235
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { CellData, CellInterface, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { SelectionAttributes, Sheet } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { UseOnInsertCellsShiftRight } from "../hooks/use-on-insert-cells-shift-right";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Insert cells ▸ Shift cells right (SHF-02, FMT-04) — the horizontal twin of
|
|
6
|
+
* `insertCellsShiftDown`: only the selection's rows move, every cell at or right of the selection's
|
|
7
|
+
* first column slides right by the selection's width. References follow shifted cells; a range
|
|
8
|
+
* entirely inside the shifted rows that straddles the insertion column widens (SHF-08 analog);
|
|
9
|
+
* the vacated cells take the formatting of the cell to the LEFT of the insertion (FMT-04). Refusals
|
|
10
|
+
* (torn merge/table/array, a non-blank cell pushed past `columnCount` — SHF-10) are decided by the
|
|
11
|
+
* hook before this runs.
|
|
12
|
+
*/
|
|
13
|
+
export declare const insertCellsShiftRight: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }: UseOnInsertCellsShiftRight<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
|
|
5
14
|
//# sourceMappingURL=insert-cells-shift-right.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-cells-shift-right.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-right.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"insert-cells-shift-right.d.ts","sourceRoot":"","sources":["../../../interface/insert-cells-shift-right.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAgB5E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAI3F;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8RAkBxE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,MAE/B,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAqQnD,CAAC"}
|