@rowsncolumns/spreadsheet-state 29.1.3 → 29.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/cjs/api/circular-reference.d.ts +31 -0
  2. package/dist/cjs/api/circular-reference.d.ts.map +1 -0
  3. package/dist/cjs/api/circular-reference.js +85 -0
  4. package/dist/cjs/api/copy-paste.d.ts +6 -0
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +24 -15
  7. package/dist/cjs/api/datatype.d.ts +2 -0
  8. package/dist/cjs/api/datatype.d.ts.map +1 -1
  9. package/dist/cjs/api/datatype.js +50 -27
  10. package/dist/cjs/api/decimals.d.ts +10 -0
  11. package/dist/cjs/api/decimals.d.ts.map +1 -1
  12. package/dist/cjs/api/decimals.js +34 -11
  13. package/dist/cjs/api/dependency.d.ts +19 -1
  14. package/dist/cjs/api/dependency.d.ts.map +1 -1
  15. package/dist/cjs/api/dependency.js +30 -14
  16. package/dist/cjs/api/filter-condition.d.ts +58 -0
  17. package/dist/cjs/api/filter-condition.d.ts.map +1 -0
  18. package/dist/cjs/api/filter-condition.js +157 -0
  19. package/dist/cjs/api/formula.d.ts.map +1 -1
  20. package/dist/cjs/api/formula.js +9 -7
  21. package/dist/cjs/api/image-embed.d.ts +41 -0
  22. package/dist/cjs/api/image-embed.d.ts.map +1 -0
  23. package/dist/cjs/api/image-embed.js +55 -0
  24. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  25. package/dist/cjs/api/immer-utils.js +43 -15
  26. package/dist/cjs/api/named-range-structural.d.ts +29 -3
  27. package/dist/cjs/api/named-range-structural.d.ts.map +1 -1
  28. package/dist/cjs/api/named-range-structural.js +36 -11
  29. package/dist/cjs/api/parse-html.d.ts.map +1 -1
  30. package/dist/cjs/api/parse-html.js +11 -5
  31. package/dist/cjs/api/structural-formula-update.d.ts +20 -1
  32. package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
  33. package/dist/cjs/api/structural-formula-update.js +264 -90
  34. package/dist/cjs/api/structural-guards.d.ts +11 -0
  35. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  36. package/dist/cjs/api/structural-guards.js +45 -1
  37. package/dist/cjs/api/structural-table-refs.d.ts +15 -2
  38. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  39. package/dist/cjs/api/structural-table-refs.js +79 -35
  40. package/dist/cjs/commands.d.ts +17 -3
  41. package/dist/cjs/commands.d.ts.map +1 -1
  42. package/dist/cjs/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
  43. package/dist/cjs/components/editors/conditional-format-rule-editor.js +19 -7
  44. package/dist/cjs/constants.d.ts +4 -1
  45. package/dist/cjs/constants.d.ts.map +1 -1
  46. package/dist/cjs/constants.js +4 -0
  47. package/dist/cjs/helpers/sheet-title.d.ts +2 -1
  48. package/dist/cjs/helpers/sheet-title.d.ts.map +1 -1
  49. package/dist/cjs/helpers/sheet-title.js +3 -1
  50. package/dist/cjs/hooks/use-can-edit-cellrange.d.ts +1 -1
  51. package/dist/cjs/hooks/use-can-edit-cellrange.d.ts.map +1 -1
  52. package/dist/cjs/hooks/use-can-edit-cellrange.js +1 -1
  53. package/dist/cjs/hooks/use-on-calculation-success.d.ts +5 -1
  54. package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
  55. package/dist/cjs/hooks/use-on-calculation-success.js +20 -3
  56. package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
  57. package/dist/cjs/hooks/use-on-copy.js +23 -25
  58. package/dist/cjs/hooks/use-on-create-sheet.d.ts.map +1 -1
  59. package/dist/cjs/hooks/use-on-create-sheet.js +11 -1
  60. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  61. package/dist/cjs/hooks/use-on-delete.js +15 -3
  62. package/dist/cjs/hooks/use-on-drag-n-drop.d.ts +5 -0
  63. package/dist/cjs/hooks/use-on-drag-n-drop.d.ts.map +1 -1
  64. package/dist/cjs/hooks/use-on-drag-n-drop.js +6 -5
  65. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  66. package/dist/cjs/hooks/use-on-filter-table.js +6 -1
  67. package/dist/cjs/hooks/use-on-find-replace.d.ts.map +1 -1
  68. package/dist/cjs/hooks/use-on-find-replace.js +111 -23
  69. package/dist/cjs/hooks/use-on-insert-image.d.ts.map +1 -1
  70. package/dist/cjs/hooks/use-on-insert-image.js +20 -33
  71. package/dist/cjs/hooks/use-on-paste.d.ts +2 -1
  72. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-on-paste.js +53 -24
  74. package/dist/cjs/hooks/use-on-rename-sheet.d.ts +3 -1
  75. package/dist/cjs/hooks/use-on-rename-sheet.d.ts.map +1 -1
  76. package/dist/cjs/hooks/use-on-rename-sheet.js +19 -9
  77. package/dist/cjs/hooks/use-on-sort-column.d.ts +7 -1
  78. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  79. package/dist/cjs/hooks/use-on-sort-column.js +25 -8
  80. package/dist/cjs/hooks/use-on-sort-range.d.ts +16 -2
  81. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-on-sort-range.js +72 -40
  83. package/dist/cjs/hooks/use-on-sort-table.d.ts +7 -2
  84. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  85. package/dist/cjs/hooks/use-on-sort-table.js +25 -4
  86. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +5 -3
  87. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-spreadsheet-state.js +7 -0
  89. package/dist/cjs/hooks/utils/sort-rows.d.ts +15 -0
  90. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  91. package/dist/cjs/hooks/utils/sort-rows.js +16 -0
  92. package/dist/cjs/index.d.ts +3 -0
  93. package/dist/cjs/index.d.ts.map +1 -1
  94. package/dist/cjs/index.js +3 -0
  95. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  96. package/dist/cjs/interface/delete-column.js +254 -101
  97. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  98. package/dist/cjs/interface/delete-row.js +233 -81
  99. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  100. package/dist/cjs/interface/duplicate-sheet.js +4 -9
  101. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  102. package/dist/cjs/interface/insert-column.js +1 -1
  103. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  104. package/dist/cjs/interface/insert-row.js +1 -1
  105. package/dist/cjs/interface/new-sheet.d.ts.map +1 -1
  106. package/dist/cjs/interface/new-sheet.js +6 -13
  107. package/dist/cjs/sheet-cell.d.ts +9 -0
  108. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  109. package/dist/cjs/sheet-cell.js +46 -9
  110. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  111. package/dist/esm/api/circular-reference.d.ts +31 -0
  112. package/dist/esm/api/circular-reference.d.ts.map +1 -0
  113. package/dist/esm/api/circular-reference.js +55 -0
  114. package/dist/esm/api/copy-paste.d.ts +6 -0
  115. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  116. package/dist/esm/api/copy-paste.js +26 -14
  117. package/dist/esm/api/datatype.d.ts +2 -0
  118. package/dist/esm/api/datatype.d.ts.map +1 -1
  119. package/dist/esm/api/datatype.js +50 -27
  120. package/dist/esm/api/decimals.d.ts +10 -0
  121. package/dist/esm/api/decimals.d.ts.map +1 -1
  122. package/dist/esm/api/decimals.js +31 -10
  123. package/dist/esm/api/dependency.d.ts +19 -1
  124. package/dist/esm/api/dependency.d.ts.map +1 -1
  125. package/dist/esm/api/dependency.js +15 -10
  126. package/dist/esm/api/filter-condition.d.ts +58 -0
  127. package/dist/esm/api/filter-condition.d.ts.map +1 -0
  128. package/dist/esm/api/filter-condition.js +146 -0
  129. package/dist/esm/api/formula.d.ts.map +1 -1
  130. package/dist/esm/api/formula.js +9 -7
  131. package/dist/esm/api/image-embed.d.ts +41 -0
  132. package/dist/esm/api/image-embed.d.ts.map +1 -0
  133. package/dist/esm/api/image-embed.js +52 -0
  134. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  135. package/dist/esm/api/immer-utils.js +43 -14
  136. package/dist/esm/api/named-range-structural.d.ts +29 -3
  137. package/dist/esm/api/named-range-structural.d.ts.map +1 -1
  138. package/dist/esm/api/named-range-structural.js +35 -11
  139. package/dist/esm/api/parse-html.d.ts.map +1 -1
  140. package/dist/esm/api/parse-html.js +14 -5
  141. package/dist/esm/api/structural-formula-update.d.ts +20 -1
  142. package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
  143. package/dist/esm/api/structural-formula-update.js +151 -55
  144. package/dist/esm/api/structural-guards.d.ts +11 -0
  145. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  146. package/dist/esm/api/structural-guards.js +31 -0
  147. package/dist/esm/api/structural-table-refs.d.ts +15 -2
  148. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  149. package/dist/esm/api/structural-table-refs.js +49 -18
  150. package/dist/esm/commands.d.ts +17 -3
  151. package/dist/esm/commands.d.ts.map +1 -1
  152. package/dist/esm/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
  153. package/dist/esm/components/editors/conditional-format-rule-editor.js +18 -7
  154. package/dist/esm/constants.d.ts +4 -1
  155. package/dist/esm/constants.d.ts.map +1 -1
  156. package/dist/esm/constants.js +4 -0
  157. package/dist/esm/helpers/sheet-title.d.ts +2 -1
  158. package/dist/esm/helpers/sheet-title.d.ts.map +1 -1
  159. package/dist/esm/helpers/sheet-title.js +3 -1
  160. package/dist/esm/hooks/use-can-edit-cellrange.d.ts +1 -1
  161. package/dist/esm/hooks/use-can-edit-cellrange.d.ts.map +1 -1
  162. package/dist/esm/hooks/use-can-edit-cellrange.js +1 -1
  163. package/dist/esm/hooks/use-on-calculation-success.d.ts +5 -1
  164. package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
  165. package/dist/esm/hooks/use-on-calculation-success.js +19 -3
  166. package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
  167. package/dist/esm/hooks/use-on-copy.js +17 -17
  168. package/dist/esm/hooks/use-on-create-sheet.d.ts.map +1 -1
  169. package/dist/esm/hooks/use-on-create-sheet.js +11 -1
  170. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  171. package/dist/esm/hooks/use-on-delete.js +15 -3
  172. package/dist/esm/hooks/use-on-drag-n-drop.d.ts +5 -0
  173. package/dist/esm/hooks/use-on-drag-n-drop.d.ts.map +1 -1
  174. package/dist/esm/hooks/use-on-drag-n-drop.js +7 -4
  175. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  176. package/dist/esm/hooks/use-on-filter-table.js +13 -2
  177. package/dist/esm/hooks/use-on-find-replace.d.ts.map +1 -1
  178. package/dist/esm/hooks/use-on-find-replace.js +111 -23
  179. package/dist/esm/hooks/use-on-insert-image.d.ts.map +1 -1
  180. package/dist/esm/hooks/use-on-insert-image.js +15 -25
  181. package/dist/esm/hooks/use-on-paste.d.ts +2 -1
  182. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  183. package/dist/esm/hooks/use-on-paste.js +46 -15
  184. package/dist/esm/hooks/use-on-rename-sheet.d.ts +3 -1
  185. package/dist/esm/hooks/use-on-rename-sheet.d.ts.map +1 -1
  186. package/dist/esm/hooks/use-on-rename-sheet.js +19 -9
  187. package/dist/esm/hooks/use-on-sort-column.d.ts +7 -1
  188. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  189. package/dist/esm/hooks/use-on-sort-column.js +18 -1
  190. package/dist/esm/hooks/use-on-sort-range.d.ts +16 -2
  191. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  192. package/dist/esm/hooks/use-on-sort-range.js +30 -3
  193. package/dist/esm/hooks/use-on-sort-table.d.ts +7 -2
  194. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  195. package/dist/esm/hooks/use-on-sort-table.js +25 -4
  196. package/dist/esm/hooks/use-spreadsheet-state.d.ts +5 -3
  197. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  198. package/dist/esm/hooks/use-spreadsheet-state.js +7 -0
  199. package/dist/esm/hooks/utils/sort-rows.d.ts +15 -0
  200. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  201. package/dist/esm/hooks/utils/sort-rows.js +15 -0
  202. package/dist/esm/index.d.ts +3 -0
  203. package/dist/esm/index.d.ts.map +1 -1
  204. package/dist/esm/index.js +3 -0
  205. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  206. package/dist/esm/interface/delete-column.js +111 -80
  207. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  208. package/dist/esm/interface/delete-row.js +91 -59
  209. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  210. package/dist/esm/interface/duplicate-sheet.js +4 -9
  211. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  212. package/dist/esm/interface/insert-column.js +1 -1
  213. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  214. package/dist/esm/interface/insert-row.js +1 -1
  215. package/dist/esm/interface/new-sheet.d.ts.map +1 -1
  216. package/dist/esm/interface/new-sheet.js +6 -13
  217. package/dist/esm/sheet-cell.d.ts +9 -0
  218. package/dist/esm/sheet-cell.d.ts.map +1 -1
  219. package/dist/esm/sheet-cell.js +46 -7
  220. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  221. package/package.json +15 -15
@@ -7,17 +7,24 @@ import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralCha
7
7
  import { shiftPivotsOnDelete } from "../api/pivot-range";
8
8
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
9
9
  import { moveFilterView } from "../api/selection";
10
- import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
10
+ import { contiguousRuns, updateFormulasForStructuralChange, } from "../api/structural-formula-update";
11
11
  import { breakStructuredRefsForRemovedTableParts, collectRemovedTableParts, removeSpillsOfDeletedAnchors, } from "../api/structural-table-refs";
12
12
  export var deleteColumn = function (_a) {
13
13
  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, onChangeSlicers = _a.onChangeSlicers, onChangeCharts = _a.onChangeCharts, onChangeProtectedRanges = _a.onChangeProtectedRanges;
14
14
  return function (sheetId, columnIndexes) {
15
15
  if (!columnIndexes.length)
16
16
  return;
17
- var sortedColumnIndexes = __spreadArray([], __read(columnIndexes), false).sort(function (a, b) { return a - b; });
17
+ var sortedColumnIndexes = __spreadArray([], __read(new Set(columnIndexes)), false).sort(function (a, b) { return a - b; });
18
18
  var minColumnIndex = sortedColumnIndexes[0];
19
19
  var maxColumnIndex = sortedColumnIndexes[sortedColumnIndexes.length - 1];
20
20
  var count = sortedColumnIndexes.length;
21
+ // A Ctrl-selected delete (columns B and D) is several contiguous bands;
22
+ // band-shaped updates run once per band, LAST band first (see `deleteRow`).
23
+ var runs = contiguousRuns(sortedColumnIndexes);
24
+ var runsDescending = __spreadArray([], __read(runs), false).reverse();
25
+ var isDeleted = function (columnIndex) {
26
+ return sortedColumnIndexes.includes(columnIndex);
27
+ };
21
28
  var saveHistory = createHistory();
22
29
  enqueueStructureChange === null || enqueueStructureChange === void 0 ? void 0 : enqueueStructureChange({
23
30
  kind: "delete-column",
@@ -75,8 +82,13 @@ export var deleteColumn = function (_a) {
75
82
  }
76
83
  if (minColumnIndex > endColumnIndex)
77
84
  continue;
78
- if (minColumnIndex <= startColumnIndex &&
79
- maxColumnIndex >= endColumnIndex) {
85
+ // The table's own columns that go — every one of them removes the table.
86
+ var removedOffsets = [];
87
+ for (var column = startColumnIndex; column <= endColumnIndex; column++) {
88
+ if (isDeleted(column))
89
+ removedOffsets.push(column - startColumnIndex);
90
+ }
91
+ if (removedOffsets.length === endColumnIndex - startColumnIndex + 1) {
80
92
  draft.splice(idx, 1);
81
93
  continue;
82
94
  }
@@ -84,9 +96,7 @@ export var deleteColumn = function (_a) {
84
96
  try {
85
97
  for (var _e = (e_1 = void 0, __values(table.filterSpecs)), _f = _e.next(); !_f.done; _f = _e.next()) {
86
98
  var spec = _f.value;
87
- if (spec.columnIndex >= minColumnIndex) {
88
- spec.columnIndex -= count;
89
- }
99
+ spec.columnIndex -= deletedBefore(spec.columnIndex);
90
100
  }
91
101
  }
92
102
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -101,9 +111,7 @@ export var deleteColumn = function (_a) {
101
111
  try {
102
112
  for (var _g = (e_2 = void 0, __values(table.sortSpecs)), _h = _g.next(); !_h.done; _h = _g.next()) {
103
113
  var spec = _h.value;
104
- if (spec.dimensionIndex >= minColumnIndex) {
105
- spec.dimensionIndex -= count;
106
- }
114
+ spec.dimensionIndex -= deletedBefore(spec.dimensionIndex);
107
115
  }
108
116
  }
109
117
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
@@ -114,15 +122,17 @@ export var deleteColumn = function (_a) {
114
122
  finally { if (e_2) throw e_2.error; }
115
123
  }
116
124
  }
117
- var overlapStart = Math.max(minColumnIndex, startColumnIndex);
118
- var overlapEnd = Math.min(maxColumnIndex, endColumnIndex);
119
- var removed = overlapEnd - overlapStart + 1;
120
- (_c = table.columns) === null || _c === void 0 ? void 0 : _c.splice(overlapStart - startColumnIndex, removed);
121
- table.range.startColumnIndex = Math.min(startColumnIndex, minColumnIndex);
125
+ for (var i = removedOffsets.length - 1; i >= 0; i--) {
126
+ (_c = table.columns) === null || _c === void 0 ? void 0 : _c.splice(removedOffsets[i], 1);
127
+ }
128
+ // The table moves left by the columns deleted before it (a deleted
129
+ // leading column is one of its own, so it counts as removed, not moved).
130
+ table.range.startColumnIndex =
131
+ startColumnIndex - deletedBefore(startColumnIndex);
122
132
  table.range.endColumnIndex =
123
133
  table.range.startColumnIndex +
124
134
  (endColumnIndex - startColumnIndex) -
125
- removed;
135
+ removedOffsets.length;
126
136
  }
127
137
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
128
138
  saveHistory({ tables: { patches: patches, inversePatches: inversePatches } });
@@ -131,7 +141,20 @@ export var deleteColumn = function (_a) {
131
141
  // Data validations
132
142
  onChangeDataValidations === null || onChangeDataValidations === void 0 ? void 0 : onChangeDataValidations(function (prevValidations) {
133
143
  var _a = __read(produceWithPatches(prevValidations, function (draft) {
134
- updateRangedRulesOnStructuralChange(draft, "delete", "column", minColumnIndex, count, sheetId, { getSheetName: getSheetName });
144
+ var e_3, _a;
145
+ try {
146
+ for (var runsDescending_1 = __values(runsDescending), runsDescending_1_1 = runsDescending_1.next(); !runsDescending_1_1.done; runsDescending_1_1 = runsDescending_1.next()) {
147
+ var run = runsDescending_1_1.value;
148
+ updateRangedRulesOnStructuralChange(draft, "delete", "column", run.start, run.count, sheetId, { getSheetName: getSheetName });
149
+ }
150
+ }
151
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
152
+ finally {
153
+ try {
154
+ if (runsDescending_1_1 && !runsDescending_1_1.done && (_a = runsDescending_1.return)) _a.call(runsDescending_1);
155
+ }
156
+ finally { if (e_3) throw e_3.error; }
157
+ }
135
158
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
136
159
  saveHistory({ dataValidations: { patches: patches, inversePatches: inversePatches } });
137
160
  return nextState;
@@ -139,7 +162,20 @@ export var deleteColumn = function (_a) {
139
162
  // Conditional formats
140
163
  onChangeConditionalFormats === null || onChangeConditionalFormats === void 0 ? void 0 : onChangeConditionalFormats(function (prevConditionalFormats) {
141
164
  var _a = __read(produceWithPatches(prevConditionalFormats, function (draft) {
142
- updateRangedRulesOnStructuralChange(draft, "delete", "column", minColumnIndex, count, sheetId, { getSheetName: getSheetName });
165
+ var e_4, _a;
166
+ try {
167
+ for (var runsDescending_2 = __values(runsDescending), runsDescending_2_1 = runsDescending_2.next(); !runsDescending_2_1.done; runsDescending_2_1 = runsDescending_2.next()) {
168
+ var run = runsDescending_2_1.value;
169
+ updateRangedRulesOnStructuralChange(draft, "delete", "column", run.start, run.count, sheetId, { getSheetName: getSheetName });
170
+ }
171
+ }
172
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
173
+ finally {
174
+ try {
175
+ if (runsDescending_2_1 && !runsDescending_2_1.done && (_a = runsDescending_2.return)) _a.call(runsDescending_2);
176
+ }
177
+ finally { if (e_4) throw e_4.error; }
178
+ }
143
179
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
144
180
  saveHistory({ conditionalFormats: { patches: patches, inversePatches: inversePatches } });
145
181
  return nextState;
@@ -148,7 +184,20 @@ export var deleteColumn = function (_a) {
148
184
  // deleted is kept as `#REF!` so its users evaluate `#REF!`, like Excel.
149
185
  onChangeNamedRanges === null || onChangeNamedRanges === void 0 ? void 0 : onChangeNamedRanges(function (prevNamedRanges) {
150
186
  var _a = __read(produceWithPatches(prevNamedRanges, function (draft) {
151
- updateNamedRangesOnStructuralChange(draft, "column", "delete", minColumnIndex, count, sheetId);
187
+ var e_5, _a;
188
+ try {
189
+ for (var runsDescending_3 = __values(runsDescending), runsDescending_3_1 = runsDescending_3.next(); !runsDescending_3_1.done; runsDescending_3_1 = runsDescending_3.next()) {
190
+ var run = runsDescending_3_1.value;
191
+ updateNamedRangesOnStructuralChange(draft, "column", "delete", run.start, run.count, sheetId, { length: columnCount });
192
+ }
193
+ }
194
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
195
+ finally {
196
+ try {
197
+ if (runsDescending_3_1 && !runsDescending_3_1.done && (_a = runsDescending_3.return)) _a.call(runsDescending_3);
198
+ }
199
+ finally { if (e_5) throw e_5.error; }
200
+ }
152
201
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
153
202
  saveHistory({ namedRanges: { patches: patches, inversePatches: inversePatches } });
154
203
  return nextState;
@@ -156,7 +205,20 @@ export var deleteColumn = function (_a) {
156
205
  // Shift pivot tables.
157
206
  onChangePivotTables === null || onChangePivotTables === void 0 ? void 0 : onChangePivotTables(function (prevPivots) {
158
207
  var _a = __read(produceWithPatches(prevPivots, function (draft) {
159
- shiftPivotsOnDelete(draft, sheetId, "column", minColumnIndex, count);
208
+ var e_6, _a;
209
+ try {
210
+ for (var runsDescending_4 = __values(runsDescending), runsDescending_4_1 = runsDescending_4.next(); !runsDescending_4_1.done; runsDescending_4_1 = runsDescending_4.next()) {
211
+ var run = runsDescending_4_1.value;
212
+ shiftPivotsOnDelete(draft, sheetId, "column", run.start, run.count);
213
+ }
214
+ }
215
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
216
+ finally {
217
+ try {
218
+ if (runsDescending_4_1 && !runsDescending_4_1.done && (_a = runsDescending_4.return)) _a.call(runsDescending_4);
219
+ }
220
+ finally { if (e_6) throw e_6.error; }
221
+ }
160
222
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
161
223
  saveHistory({ pivotTables: { patches: patches, inversePatches: inversePatches } });
162
224
  return nextState;
@@ -165,25 +227,38 @@ export var deleteColumn = function (_a) {
165
227
  onChangeCitations === null || onChangeCitations === void 0 ? void 0 : onChangeCitations(function (prevCitations) {
166
228
  var updatedAt = new Date().toISOString();
167
229
  var _a = __read(produceWithPatches(prevCitations, function (draft) {
168
- var deleteEnd = minColumnIndex + count - 1;
169
- for (var idx = draft.length - 1; idx >= 0; idx--) {
170
- var citation = draft[idx];
171
- if (citation.range.sheetId !== sheetId)
172
- continue;
173
- var citationStart = citation.range.startColumnIndex;
174
- var citationEnd = citation.range.endColumnIndex;
175
- if (citationStart <= deleteEnd && citationEnd >= minColumnIndex) {
176
- // Soft-delete: keep the record for provenance / undo, hide it from the UI
177
- if (citation.active !== false) {
178
- citation.active = false;
179
- citation.updated_at = updatedAt;
230
+ var e_7, _a;
231
+ try {
232
+ for (var runsDescending_5 = __values(runsDescending), runsDescending_5_1 = runsDescending_5.next(); !runsDescending_5_1.done; runsDescending_5_1 = runsDescending_5.next()) {
233
+ var run = runsDescending_5_1.value;
234
+ var deleteEnd = run.start + run.count - 1;
235
+ for (var idx = draft.length - 1; idx >= 0; idx--) {
236
+ var citation = draft[idx];
237
+ if (citation.range.sheetId !== sheetId)
238
+ continue;
239
+ var citationStart = citation.range.startColumnIndex;
240
+ var citationEnd = citation.range.endColumnIndex;
241
+ if (citationStart <= deleteEnd && citationEnd >= run.start) {
242
+ // Soft-delete: keep the record for provenance / undo, hide it from the UI
243
+ if (citation.active !== false) {
244
+ citation.active = false;
245
+ citation.updated_at = updatedAt;
246
+ }
247
+ }
248
+ else if (citationStart > deleteEnd) {
249
+ citation.range.startColumnIndex -= run.count;
250
+ citation.range.endColumnIndex -= run.count;
251
+ refreshCitationAnchor(citation);
252
+ }
180
253
  }
181
254
  }
182
- else if (citationStart > deleteEnd) {
183
- citation.range.startColumnIndex -= count;
184
- citation.range.endColumnIndex -= count;
185
- refreshCitationAnchor(citation);
255
+ }
256
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
257
+ finally {
258
+ try {
259
+ if (runsDescending_5_1 && !runsDescending_5_1.done && (_a = runsDescending_5.return)) _a.call(runsDescending_5);
186
260
  }
261
+ finally { if (e_7) throw e_7.error; }
187
262
  }
188
263
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
189
264
  saveHistory({ citations: { patches: patches, inversePatches: inversePatches } });
@@ -195,28 +270,80 @@ export var deleteColumn = function (_a) {
195
270
  // and are deliberately NOT touched here.
196
271
  onChangeEmbeds === null || onChangeEmbeds === void 0 ? void 0 : onChangeEmbeds(function (prevEmbeds) {
197
272
  var _a = __read(produceWithPatches(prevEmbeds, function (draft) {
198
- shiftEmbedsOnStructuralChange(draft, sheetId, "column", "delete", minColumnIndex, count);
273
+ var e_8, _a;
274
+ try {
275
+ for (var runsDescending_6 = __values(runsDescending), runsDescending_6_1 = runsDescending_6.next(); !runsDescending_6_1.done; runsDescending_6_1 = runsDescending_6.next()) {
276
+ var run = runsDescending_6_1.value;
277
+ shiftEmbedsOnStructuralChange(draft, sheetId, "column", "delete", run.start, run.count);
278
+ }
279
+ }
280
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
281
+ finally {
282
+ try {
283
+ if (runsDescending_6_1 && !runsDescending_6_1.done && (_a = runsDescending_6.return)) _a.call(runsDescending_6);
284
+ }
285
+ finally { if (e_8) throw e_8.error; }
286
+ }
199
287
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
200
288
  saveHistory({ embeds: { patches: patches, inversePatches: inversePatches } });
201
289
  return nextState;
202
290
  });
203
291
  onChangeSlicers === null || onChangeSlicers === void 0 ? void 0 : onChangeSlicers(function (prevSlicers) {
204
292
  var _a = __read(produceWithPatches(prevSlicers, function (draft) {
205
- shiftSlicersOnStructuralChange(draft, sheetId, "column", "delete", minColumnIndex, count);
293
+ var e_9, _a;
294
+ try {
295
+ for (var runsDescending_7 = __values(runsDescending), runsDescending_7_1 = runsDescending_7.next(); !runsDescending_7_1.done; runsDescending_7_1 = runsDescending_7.next()) {
296
+ var run = runsDescending_7_1.value;
297
+ shiftSlicersOnStructuralChange(draft, sheetId, "column", "delete", run.start, run.count);
298
+ }
299
+ }
300
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
301
+ finally {
302
+ try {
303
+ if (runsDescending_7_1 && !runsDescending_7_1.done && (_a = runsDescending_7.return)) _a.call(runsDescending_7);
304
+ }
305
+ finally { if (e_9) throw e_9.error; }
306
+ }
206
307
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
207
308
  saveHistory({ slicers: { patches: patches, inversePatches: inversePatches } });
208
309
  return nextState;
209
310
  });
210
311
  onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
211
312
  var _a = __read(produceWithPatches(prevCharts, function (draft) {
212
- shiftChartsOnStructuralChange(draft, sheetId, "column", "delete", minColumnIndex, count);
313
+ var e_10, _a;
314
+ try {
315
+ for (var runsDescending_8 = __values(runsDescending), runsDescending_8_1 = runsDescending_8.next(); !runsDescending_8_1.done; runsDescending_8_1 = runsDescending_8.next()) {
316
+ var run = runsDescending_8_1.value;
317
+ shiftChartsOnStructuralChange(draft, sheetId, "column", "delete", run.start, run.count);
318
+ }
319
+ }
320
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
321
+ finally {
322
+ try {
323
+ if (runsDescending_8_1 && !runsDescending_8_1.done && (_a = runsDescending_8.return)) _a.call(runsDescending_8);
324
+ }
325
+ finally { if (e_10) throw e_10.error; }
326
+ }
213
327
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
214
328
  saveHistory({ charts: { patches: patches, inversePatches: inversePatches } });
215
329
  return nextState;
216
330
  });
217
331
  onChangeProtectedRanges === null || onChangeProtectedRanges === void 0 ? void 0 : onChangeProtectedRanges(function (prevProtectedRanges) {
218
332
  var _a = __read(produceWithPatches(prevProtectedRanges, function (draft) {
219
- shiftProtectedRangesOnStructuralChange(draft, sheetId, "column", "delete", minColumnIndex, count);
333
+ var e_11, _a;
334
+ try {
335
+ for (var runsDescending_9 = __values(runsDescending), runsDescending_9_1 = runsDescending_9.next(); !runsDescending_9_1.done; runsDescending_9_1 = runsDescending_9.next()) {
336
+ var run = runsDescending_9_1.value;
337
+ shiftProtectedRangesOnStructuralChange(draft, sheetId, "column", "delete", run.start, run.count);
338
+ }
339
+ }
340
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
341
+ finally {
342
+ try {
343
+ if (runsDescending_9_1 && !runsDescending_9_1.done && (_a = runsDescending_9.return)) _a.call(runsDescending_9);
344
+ }
345
+ finally { if (e_11) throw e_11.error; }
346
+ }
220
347
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
221
348
  saveHistory({ protectedRanges: { patches: patches, inversePatches: inversePatches } });
222
349
  return nextState;
@@ -224,67 +351,78 @@ export var deleteColumn = function (_a) {
224
351
  // Sheet metadata
225
352
  onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
226
353
  var _a = __read(produceWithPatches(prevSheets, function (draft) {
227
- var e_3, _a, e_4, _b;
228
- var _c;
354
+ var e_12, _a, e_13, _b, e_14, _c;
355
+ var _d;
229
356
  var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
230
357
  if (!sheet)
231
358
  return;
232
- if (sheet.columnMetadata) {
233
- sheet.columnMetadata.splice(minColumnIndex, count);
234
- }
235
- if (sheet.basicFilter) {
236
- var _d = sheet.basicFilter.range, startColumnIndex = _d.startColumnIndex, endColumnIndex = _d.endColumnIndex;
237
- if (minColumnIndex < startColumnIndex) {
238
- moveFilterView(sheet.basicFilter, count, Direction.Left);
239
- }
240
- if (minColumnIndex > startColumnIndex &&
241
- minColumnIndex <= endColumnIndex) {
242
- if (sheet.basicFilter.filterSpecs) {
243
- try {
244
- for (var _e = __values(sheet.basicFilter.filterSpecs), _f = _e.next(); !_f.done; _f = _e.next()) {
245
- var spec = _f.value;
246
- if (spec.columnIndex >= minColumnIndex) {
247
- spec.columnIndex -= count;
248
- }
249
- }
250
- }
251
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
252
- finally {
253
- try {
254
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
255
- }
256
- finally { if (e_3) throw e_3.error; }
257
- }
359
+ try {
360
+ for (var runsDescending_10 = __values(runsDescending), runsDescending_10_1 = runsDescending_10.next(); !runsDescending_10_1.done; runsDescending_10_1 = runsDescending_10.next()) {
361
+ var run = runsDescending_10_1.value;
362
+ if (sheet.columnMetadata) {
363
+ sheet.columnMetadata.splice(run.start, run.count);
258
364
  }
259
- if (sheet.basicFilter.sortSpecs) {
260
- try {
261
- for (var _g = __values(sheet.basicFilter.sortSpecs), _h = _g.next(); !_h.done; _h = _g.next()) {
262
- var spec = _h.value;
263
- if (spec.dimensionIndex >= minColumnIndex) {
264
- spec.dimensionIndex -= count;
365
+ if (sheet.basicFilter) {
366
+ var _e = sheet.basicFilter.range, startColumnIndex = _e.startColumnIndex, endColumnIndex = _e.endColumnIndex;
367
+ if (run.start < startColumnIndex) {
368
+ moveFilterView(sheet.basicFilter, run.count, Direction.Left);
369
+ }
370
+ if (run.start > startColumnIndex && run.start <= endColumnIndex) {
371
+ if (sheet.basicFilter.filterSpecs) {
372
+ try {
373
+ for (var _f = (e_13 = void 0, __values(sheet.basicFilter.filterSpecs)), _g = _f.next(); !_g.done; _g = _f.next()) {
374
+ var spec = _g.value;
375
+ if (spec.columnIndex >= run.start) {
376
+ spec.columnIndex -= run.count;
377
+ }
378
+ }
379
+ }
380
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
381
+ finally {
382
+ try {
383
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
384
+ }
385
+ finally { if (e_13) throw e_13.error; }
265
386
  }
266
387
  }
267
- }
268
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
269
- finally {
270
- try {
271
- if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
388
+ if (sheet.basicFilter.sortSpecs) {
389
+ try {
390
+ for (var _h = (e_14 = void 0, __values(sheet.basicFilter.sortSpecs)), _j = _h.next(); !_j.done; _j = _h.next()) {
391
+ var spec = _j.value;
392
+ if (spec.dimensionIndex >= run.start) {
393
+ spec.dimensionIndex -= run.count;
394
+ }
395
+ }
396
+ }
397
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
398
+ finally {
399
+ try {
400
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
401
+ }
402
+ finally { if (e_14) throw e_14.error; }
403
+ }
272
404
  }
273
- finally { if (e_4) throw e_4.error; }
405
+ var delta = Math.min(endColumnIndex - run.start + 1, run.count);
406
+ sheet.basicFilter.range.endColumnIndex -= delta;
274
407
  }
275
408
  }
276
- var delta = Math.min(endColumnIndex - minColumnIndex + 1, count);
277
- sheet.basicFilter.range.endColumnIndex -= delta;
409
+ if (sheet.merges) {
410
+ sheet.merges = shrinkMergesOnColumnDelete(sheet.merges, run.start, run.count);
411
+ }
412
+ // `_xlnm.Print_Area` / `_xlnm.Print_Titles` follow the defined-name rule.
413
+ if (sheet.printSettings) {
414
+ updatePrintSettingsOnStructuralChange(sheet.printSettings, "column", "delete", run.start, run.count);
415
+ }
278
416
  }
279
417
  }
280
- if (sheet.merges) {
281
- sheet.merges = shrinkMergesOnColumnDelete(sheet.merges, minColumnIndex, count);
282
- }
283
- // `_xlnm.Print_Area` / `_xlnm.Print_Titles` follow the defined-name rule.
284
- if (sheet.printSettings) {
285
- updatePrintSettingsOnStructuralChange(sheet.printSettings, "column", "delete", minColumnIndex, count);
418
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
419
+ finally {
420
+ try {
421
+ if (runsDescending_10_1 && !runsDescending_10_1.done && (_a = runsDescending_10.return)) _a.call(runsDescending_10);
422
+ }
423
+ finally { if (e_12) throw e_12.error; }
286
424
  }
287
- sheet.columnCount = Math.max(1, ((_c = sheet.columnCount) !== null && _c !== void 0 ? _c : columnCount) - count);
425
+ sheet.columnCount = Math.max(1, ((_d = sheet.columnCount) !== null && _d !== void 0 ? _d : columnCount) - count);
288
426
  // Frozen panes are positional: the split stays where it is, only
289
427
  // clamped so the freeze never exceeds the shrunk sheet.
290
428
  if (sheet.frozenColumnCount &&
@@ -297,27 +435,41 @@ export var deleteColumn = function (_a) {
297
435
  });
298
436
  // Table columns spliced out above (and tables dropped whole): their
299
437
  // structured refs break to `#REF!`, computed from the PRE-edit definitions.
300
- var removedTableParts = collectRemovedTableParts(tables, sheetId, "column", minColumnIndex, maxColumnIndex);
438
+ var removedTableParts = collectRemovedTableParts(tables, sheetId, "column", minColumnIndex, maxColumnIndex, sortedColumnIndexes);
301
439
  // Sheet data: three-pass formula update, then per-row column splice.
302
440
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
303
441
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
304
- removeSpillsOfDeletedAnchors({
305
- draft: draft,
306
- sheetId: sheetId,
307
- axis: "column",
308
- minIndex: minColumnIndex,
309
- maxIndex: maxColumnIndex,
310
- getArrayRange: getArrayRange,
311
- locale: locale,
312
- cellXfsRegistry: cellXfsRegistry,
313
- sharedStringRegistry: sharedStringRegistry,
314
- });
442
+ var e_15, _a;
443
+ try {
444
+ for (var runsDescending_11 = __values(runsDescending), runsDescending_11_1 = runsDescending_11.next(); !runsDescending_11_1.done; runsDescending_11_1 = runsDescending_11.next()) {
445
+ var run = runsDescending_11_1.value;
446
+ removeSpillsOfDeletedAnchors({
447
+ draft: draft,
448
+ sheetId: sheetId,
449
+ axis: "column",
450
+ minIndex: run.start,
451
+ maxIndex: run.start + run.count - 1,
452
+ getArrayRange: getArrayRange,
453
+ locale: locale,
454
+ cellXfsRegistry: cellXfsRegistry,
455
+ sharedStringRegistry: sharedStringRegistry,
456
+ });
457
+ }
458
+ }
459
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
460
+ finally {
461
+ try {
462
+ if (runsDescending_11_1 && !runsDescending_11_1.done && (_a = runsDescending_11.return)) _a.call(runsDescending_11);
463
+ }
464
+ finally { if (e_15) throw e_15.error; }
465
+ }
315
466
  breakStructuredRefsForRemovedTableParts({
316
467
  draft: draft,
317
468
  sheetId: sheetId,
318
469
  axis: "column",
319
470
  referenceIndex: minColumnIndex,
320
471
  count: count,
472
+ indexes: sortedColumnIndexes,
321
473
  removed: removedTableParts,
322
474
  getGraphNodes: getGraphNodes,
323
475
  enqueueCalculation: enqueueCalculation,
@@ -334,6 +486,7 @@ export var deleteColumn = function (_a) {
334
486
  sheetId: sheetId,
335
487
  referenceIndex: minColumnIndex,
336
488
  count: count,
489
+ indexes: sortedColumnIndexes,
337
490
  rowCount: rowCount,
338
491
  columnCount: columnCount,
339
492
  getDependents: getDependents,
@@ -1 +1 @@
1
- {"version":3,"file":"delete-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAa,MAAM,2BAA2B,CAAC;AA2B5E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAiCtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,2iBAgC5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,YAAY,MAAM,EAAE,SAkkB9C,CAAC"}
1
+ {"version":3,"file":"delete-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAa,MAAM,2BAA2B,CAAC;AA8B5E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAiCtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,2iBAgC5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,YAAY,MAAM,EAAE,SAomB9C,CAAC"}