@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.
Files changed (201) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +66 -0
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -0
  3. package/dist/cjs/api/anchored-objects.js +259 -0
  4. package/dist/cjs/api/dependency.d.ts +13 -2
  5. package/dist/cjs/api/dependency.d.ts.map +1 -1
  6. package/dist/cjs/api/dependency.js +11 -5
  7. package/dist/cjs/api/formula.d.ts +61 -4
  8. package/dist/cjs/api/formula.d.ts.map +1 -1
  9. package/dist/cjs/api/formula.js +250 -61
  10. package/dist/cjs/api/merges.d.ts +8 -0
  11. package/dist/cjs/api/merges.d.ts.map +1 -1
  12. package/dist/cjs/api/merges.js +64 -1
  13. package/dist/cjs/api/named-range-structural.d.ts +62 -0
  14. package/dist/cjs/api/named-range-structural.d.ts.map +1 -0
  15. package/dist/cjs/api/named-range-structural.js +197 -0
  16. package/dist/cjs/api/range-rule-helpers.d.ts +45 -1
  17. package/dist/cjs/api/range-rule-helpers.d.ts.map +1 -1
  18. package/dist/cjs/api/range-rule-helpers.js +159 -6
  19. package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
  20. package/dist/cjs/api/structural-formula-update.js +24 -6
  21. package/dist/cjs/api/structural-guards.d.ts +78 -0
  22. package/dist/cjs/api/structural-guards.d.ts.map +1 -0
  23. package/dist/cjs/api/structural-guards.js +202 -0
  24. package/dist/cjs/api/structural-table-refs.d.ts +94 -0
  25. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -0
  26. package/dist/cjs/api/structural-table-refs.js +313 -0
  27. package/dist/cjs/constants.d.ts +25 -0
  28. package/dist/cjs/constants.d.ts.map +1 -0
  29. package/dist/cjs/constants.js +26 -0
  30. package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
  31. package/dist/cjs/hooks/use-calculation-worker.js +64 -6
  32. package/dist/cjs/hooks/use-calculation.d.ts +7 -0
  33. package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
  34. package/dist/cjs/hooks/use-calculation.js +15 -0
  35. package/dist/cjs/hooks/use-on-calculation-success.d.ts +7 -0
  36. package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
  37. package/dist/cjs/hooks/use-on-calculation-success.js +7 -1
  38. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
  39. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  40. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +27 -2
  41. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
  42. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  43. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +27 -2
  44. package/dist/cjs/hooks/use-on-delete-column.d.ts +13 -4
  45. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  46. package/dist/cjs/hooks/use-on-delete-column.js +14 -2
  47. package/dist/cjs/hooks/use-on-delete-row.d.ts +13 -4
  48. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  49. package/dist/cjs/hooks/use-on-delete-row.js +14 -2
  50. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
  51. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  52. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +27 -2
  53. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
  54. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  55. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +27 -2
  56. package/dist/cjs/hooks/use-on-insert-column.d.ts +10 -3
  57. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  58. package/dist/cjs/hooks/use-on-insert-column.js +33 -7
  59. package/dist/cjs/hooks/use-on-insert-row.d.ts +10 -3
  60. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  61. package/dist/cjs/hooks/use-on-insert-row.js +32 -7
  62. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +2 -2
  63. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  64. package/dist/cjs/hooks/use-spreadsheet-state.js +61 -15
  65. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  66. package/dist/cjs/hooks/use-structured-reference.js +10 -6
  67. package/dist/cjs/index.d.ts +3 -0
  68. package/dist/cjs/index.d.ts.map +1 -1
  69. package/dist/cjs/index.js +3 -0
  70. package/dist/cjs/interface/calculation-interface.d.ts +9 -0
  71. package/dist/cjs/interface/calculation-interface.d.ts.map +1 -1
  72. package/dist/cjs/interface/calculation-interface.js +31 -2
  73. package/dist/cjs/interface/delete-cells-shift-left.d.ts +8 -1
  74. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  75. package/dist/cjs/interface/delete-cells-shift-left.js +158 -80
  76. package/dist/cjs/interface/delete-cells-shift-up.d.ts +9 -1
  77. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  78. package/dist/cjs/interface/delete-cells-shift-up.js +155 -73
  79. package/dist/cjs/interface/delete-column.d.ts +1 -1
  80. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  81. package/dist/cjs/interface/delete-column.js +90 -31
  82. package/dist/cjs/interface/delete-row.d.ts +1 -1
  83. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  84. package/dist/cjs/interface/delete-row.js +85 -26
  85. package/dist/cjs/interface/insert-cells-shift-down.d.ts +10 -1
  86. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  87. package/dist/cjs/interface/insert-cells-shift-down.js +147 -52
  88. package/dist/cjs/interface/insert-cells-shift-right.d.ts +10 -1
  89. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  90. package/dist/cjs/interface/insert-cells-shift-right.js +154 -58
  91. package/dist/cjs/interface/insert-column.d.ts +1 -1
  92. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  93. package/dist/cjs/interface/insert-column.js +46 -8
  94. package/dist/cjs/interface/insert-row.d.ts +1 -1
  95. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  96. package/dist/cjs/interface/insert-row.js +47 -10
  97. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  98. package/dist/cjs/interface/spreadsheet-interface.js +33 -0
  99. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  100. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  101. package/dist/esm/api/anchored-objects.d.ts +66 -0
  102. package/dist/esm/api/anchored-objects.d.ts.map +1 -0
  103. package/dist/esm/api/anchored-objects.js +212 -0
  104. package/dist/esm/api/dependency.d.ts +13 -2
  105. package/dist/esm/api/dependency.d.ts.map +1 -1
  106. package/dist/esm/api/dependency.js +10 -4
  107. package/dist/esm/api/formula.d.ts +61 -4
  108. package/dist/esm/api/formula.d.ts.map +1 -1
  109. package/dist/esm/api/formula.js +238 -60
  110. package/dist/esm/api/merges.d.ts +8 -0
  111. package/dist/esm/api/merges.d.ts.map +1 -1
  112. package/dist/esm/api/merges.js +51 -0
  113. package/dist/esm/api/named-range-structural.d.ts +62 -0
  114. package/dist/esm/api/named-range-structural.d.ts.map +1 -0
  115. package/dist/esm/api/named-range-structural.js +176 -0
  116. package/dist/esm/api/range-rule-helpers.d.ts +45 -1
  117. package/dist/esm/api/range-rule-helpers.d.ts.map +1 -1
  118. package/dist/esm/api/range-rule-helpers.js +153 -1
  119. package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
  120. package/dist/esm/api/structural-formula-update.js +24 -6
  121. package/dist/esm/api/structural-guards.d.ts +78 -0
  122. package/dist/esm/api/structural-guards.d.ts.map +1 -0
  123. package/dist/esm/api/structural-guards.js +186 -0
  124. package/dist/esm/api/structural-table-refs.d.ts +94 -0
  125. package/dist/esm/api/structural-table-refs.d.ts.map +1 -0
  126. package/dist/esm/api/structural-table-refs.js +219 -0
  127. package/dist/esm/constants.d.ts +25 -0
  128. package/dist/esm/constants.d.ts.map +1 -0
  129. package/dist/esm/constants.js +26 -0
  130. package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
  131. package/dist/esm/hooks/use-calculation-worker.js +45 -0
  132. package/dist/esm/hooks/use-calculation.d.ts +7 -0
  133. package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
  134. package/dist/esm/hooks/use-calculation.js +15 -0
  135. package/dist/esm/hooks/use-on-calculation-success.d.ts +7 -0
  136. package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
  137. package/dist/esm/hooks/use-on-calculation-success.js +7 -1
  138. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
  139. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  140. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +26 -2
  141. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
  142. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  143. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +26 -2
  144. package/dist/esm/hooks/use-on-delete-column.d.ts +13 -4
  145. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  146. package/dist/esm/hooks/use-on-delete-column.js +14 -2
  147. package/dist/esm/hooks/use-on-delete-row.d.ts +13 -4
  148. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  149. package/dist/esm/hooks/use-on-delete-row.js +14 -2
  150. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
  151. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  152. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +26 -2
  153. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
  154. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  155. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +26 -2
  156. package/dist/esm/hooks/use-on-insert-column.d.ts +10 -3
  157. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  158. package/dist/esm/hooks/use-on-insert-column.js +33 -7
  159. package/dist/esm/hooks/use-on-insert-row.d.ts +10 -3
  160. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  161. package/dist/esm/hooks/use-on-insert-row.js +32 -7
  162. package/dist/esm/hooks/use-spreadsheet-state.d.ts +2 -2
  163. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  164. package/dist/esm/hooks/use-spreadsheet-state.js +61 -15
  165. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  166. package/dist/esm/hooks/use-structured-reference.js +10 -6
  167. package/dist/esm/index.d.ts +3 -0
  168. package/dist/esm/index.d.ts.map +1 -1
  169. package/dist/esm/index.js +3 -0
  170. package/dist/esm/interface/calculation-interface.d.ts +9 -0
  171. package/dist/esm/interface/calculation-interface.d.ts.map +1 -1
  172. package/dist/esm/interface/calculation-interface.js +33 -2
  173. package/dist/esm/interface/delete-cells-shift-left.d.ts +8 -1
  174. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  175. package/dist/esm/interface/delete-cells-shift-left.js +135 -59
  176. package/dist/esm/interface/delete-cells-shift-up.d.ts +9 -1
  177. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  178. package/dist/esm/interface/delete-cells-shift-up.js +133 -53
  179. package/dist/esm/interface/delete-column.d.ts +1 -1
  180. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  181. package/dist/esm/interface/delete-column.js +80 -11
  182. package/dist/esm/interface/delete-row.d.ts +1 -1
  183. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  184. package/dist/esm/interface/delete-row.js +81 -11
  185. package/dist/esm/interface/insert-cells-shift-down.d.ts +10 -1
  186. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  187. package/dist/esm/interface/insert-cells-shift-down.js +116 -47
  188. package/dist/esm/interface/insert-cells-shift-right.d.ts +10 -1
  189. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  190. package/dist/esm/interface/insert-cells-shift-right.js +120 -51
  191. package/dist/esm/interface/insert-column.d.ts +1 -1
  192. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  193. package/dist/esm/interface/insert-column.js +46 -8
  194. package/dist/esm/interface/insert-row.d.ts +1 -1
  195. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  196. package/dist/esm/interface/insert-row.js +47 -10
  197. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  198. package/dist/esm/interface/spreadsheet-interface.js +29 -0
  199. package/dist/esm/sheet-cell.d.ts.map +1 -1
  200. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  201. package/package.json +16 -16
@@ -1,39 +1,45 @@
1
- import { createArrayRange, selectionFromActiveCell } from "@rowsncolumns/utils";
1
+ import { createArrayRange } from "@rowsncolumns/utils";
2
2
  import { produceWithPatches } from "immer";
3
- import { processSideEffectDependentCells } from "../api/dependency";
4
- import { cloneCellWithFormatting } from "../api/immer-utils";
5
- import { moveMergedCells } from "../api/merges";
6
- export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeCitations, }) => {
3
+ import { collectUniqueDependentsForRange, processSideEffectDependentCells, } from "../api/dependency";
4
+ import { createSheetCellIdentifier, expandRangesInFormula } from "../api/formula";
5
+ import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
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 right (SHF-02, FMT-04) — the horizontal twin of
11
+ * `insertCellsShiftDown`: only the selection's rows move, every cell at or right of the selection's
12
+ * first column slides right by the selection's width. References follow shifted cells; a range
13
+ * entirely inside the shifted rows that straddles the insertion column widens (SHF-08 analog);
14
+ * the vacated cells take the formatting of the cell to the LEFT of the insertion (FMT-04). Refusals
15
+ * (torn merge/table/array, a non-blank cell pushed past `columnCount` — SHF-10) are decided by the
16
+ * hook before this runs.
17
+ */
18
+ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }) => {
7
19
  return (sheetId, activeCell, selections) => {
8
20
  const saveHistory = createHistory();
9
21
  // We need to track this for history. Precedent cells
10
22
  const recalcCells = new Map();
11
- // Count
12
- const finalSelections = selections.length
13
- ? selections
14
- : selectionFromActiveCell(activeCell);
15
- // Last selection
16
- const selection = finalSelections[finalSelections.length - 1];
17
- const count = selection.range.endRowIndex - selection.range.startRowIndex + 1;
23
+ const selection = resolveShiftSelection(activeCell, selections);
24
+ const { startRowIndex: r1, endRowIndex: r2, startColumnIndex: c1, endColumnIndex: c2, } = selection.range;
25
+ const count = c2 - c1 + 1;
26
+ const band = shiftBand("right", selection.range);
27
+ const sheetName = getSheetName?.(sheetId) ?? "";
18
28
  enqueueStructureChange?.({
19
29
  kind: "insert-cells-shift-right",
20
30
  sheetId,
21
- startRowIndex: selection.range.startRowIndex,
22
- endRowIndex: selection.range.endRowIndex,
23
- startColumnIndex: selection.range.startColumnIndex,
24
- endColumnIndex: selection.range.endColumnIndex,
31
+ startRowIndex: r1,
32
+ endRowIndex: r2,
33
+ startColumnIndex: c1,
34
+ endColumnIndex: c2,
25
35
  columnCount,
26
36
  });
27
- // Update sheets
37
+ // Update sheets — merges wholly inside the shifted rows ride right with their cells.
28
38
  onChangeSheets?.((prevSheets) => {
29
39
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
30
40
  const sheet = draft.find((sheet) => sheet.sheetId === sheetId);
31
- if (sheet) {
32
- for (let columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
33
- if (sheet.merges) {
34
- sheet.merges = moveMergedCells(sheet.merges, "column-insert", columnIndex);
35
- }
36
- }
41
+ if (sheet?.merges) {
42
+ sheet.merges = shiftMergesInBand(sheet.merges, "column", c1, count, true, r1, r2);
37
43
  }
38
44
  });
39
45
  // Save history
@@ -42,30 +48,37 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
42
48
  });
43
49
  return nextState;
44
50
  });
51
+ // Tables whose rows the band covers entirely move with it (a partial cover was refused).
52
+ onChangeTables?.((prevTables) => {
53
+ const [nextState, patches, inversePatches] = produceWithPatches(prevTables, (draft) => {
54
+ for (const table of draft) {
55
+ if (table.sheetId !== sheetId ||
56
+ !isRangeInsideBand(table.range, band)) {
57
+ continue;
58
+ }
59
+ table.range.startColumnIndex += count;
60
+ table.range.endColumnIndex += count;
61
+ }
62
+ });
63
+ saveHistory({ tables: { patches, inversePatches } });
64
+ return nextState;
65
+ });
45
66
  // Update citations - shift if in affected rows and after insertion column
46
67
  onChangeCitations?.((prevCitations) => {
47
68
  const [nextState, patches, inversePatches] = produceWithPatches(prevCitations, (draft) => {
48
- const affectedRowStart = selection.range.startRowIndex;
49
- const affectedRowEnd = selection.range.endRowIndex;
50
- const insertColumnStart = selection.range.startColumnIndex;
51
- const shiftAmount = selection.range.endColumnIndex -
52
- selection.range.startColumnIndex +
53
- 1;
54
69
  for (const citation of draft) {
55
70
  // Skip citations on other sheets
56
71
  if (citation.range.sheetId !== sheetId) {
57
72
  continue;
58
73
  }
59
74
  // Check if citation overlaps with affected rows
60
- const citationRowStart = citation.range.startRowIndex;
61
- const citationRowEnd = citation.range.endRowIndex;
62
- const rowsOverlap = !(citationRowEnd < affectedRowStart ||
63
- citationRowStart > affectedRowEnd);
75
+ const rowsOverlap = !(citation.range.endRowIndex < r1 ||
76
+ citation.range.startRowIndex > r2);
64
77
  if (rowsOverlap) {
65
78
  // If citation starts at or after the insertion column, shift it right
66
- if (citation.range.startColumnIndex >= insertColumnStart) {
67
- citation.range.startColumnIndex += shiftAmount;
68
- citation.range.endColumnIndex += shiftAmount;
79
+ if (citation.range.startColumnIndex >= c1) {
80
+ citation.range.startColumnIndex += count;
81
+ citation.range.endColumnIndex += count;
69
82
  }
70
83
  }
71
84
  }
@@ -79,13 +92,31 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
79
92
  onChangeSheetData?.((prevSheetData) => {
80
93
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheetData, (draft) => {
81
94
  const movedKeys = new Set();
82
- for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
83
- const totalColumns = draft[sheetId]?.[rowIndex]?.values?.length ?? columnCount;
84
- for (let columnIndex = 1; columnIndex < totalColumns; columnIndex++) {
85
- const sourceRange = {
86
- ...selection.range,
87
- endColumnIndex: totalColumns,
88
- };
95
+ let totalColumns = Math.max(columnCount, c2 + 1);
96
+ for (let rowIndex = r1; rowIndex <= r2; rowIndex++) {
97
+ totalColumns = Math.max(totalColumns, draft[sheetId]?.[rowIndex]?.values?.length ?? 0);
98
+ }
99
+ // Everything at or right of the insertion column in the band's rows moves by `count`.
100
+ const sourceRange = {
101
+ startRowIndex: r1,
102
+ endRowIndex: r2,
103
+ startColumnIndex: c1,
104
+ endColumnIndex: totalColumns + count,
105
+ };
106
+ // Formulas that read a moving cell — captured before the graph goes stale.
107
+ const dependents = collectUniqueDependentsForRange({
108
+ draft,
109
+ sheetId,
110
+ sourceRange: {
111
+ startRowIndex: r1,
112
+ endRowIndex: r2,
113
+ startColumnIndex: c1,
114
+ endColumnIndex: totalColumns,
115
+ },
116
+ getDependents,
117
+ });
118
+ for (let rowIndex = r1; rowIndex <= r2; rowIndex++) {
119
+ for (let columnIndex = totalColumns; columnIndex >= c1; columnIndex--) {
89
120
  // Process dependents
90
121
  processSideEffectDependentCells({
91
122
  draft,
@@ -96,6 +127,7 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
96
127
  enqueueGraphOperation,
97
128
  enqueueCalculation,
98
129
  getDependents,
130
+ getSheetName,
99
131
  recalcCells,
100
132
  rowDelta: 0,
101
133
  sourceRange,
@@ -108,14 +140,51 @@ export const insertCellsShiftRight = ({ rowCount, columnCount, locale, cellXfsRe
108
140
  });
109
141
  }
110
142
  }
111
- // Delete column
112
- for (let rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
113
- // Delete column
114
- if (draft[sheetId]?.[rowIndex]?.values) {
115
- draft[sheetId][rowIndex]?.values?.splice(selection.range.startColumnIndex, 0, ...createArrayRange(selection.range.startColumnIndex, selection.range.endColumnIndex).map((columnIndex) => {
116
- return cloneCellWithFormatting(draft[sheetId][rowIndex]?.values?.[columnIndex]);
117
- }));
118
- }
143
+ // SHF-08 analog: a range living entirely inside the band's rows that straddles the
144
+ // insertion column widens by the inserted width. Runs on the pre-shift positions; the
145
+ // splice below carries in-band dependents right.
146
+ const sheetCell = new SheetCell();
147
+ for (const pos of dependents.values()) {
148
+ if (pos.sheetId !== sheetId)
149
+ continue;
150
+ const currentSheet = createSheetDraft(draft, sheetId, pos.rowIndex);
151
+ const cellData = currentSheet[pos.rowIndex]?.values?.[pos.columnIndex];
152
+ sheetCell.assign(sheetId, { rowIndex: pos.rowIndex, columnIndex: pos.columnIndex }, cellData, { locale, cellXfsRegistry, sharedStringRegistry });
153
+ const formulaValue = sheetCell.formula;
154
+ if (!formulaValue)
155
+ continue;
156
+ const expanded = expandRangesInFormula(formulaValue, c1, count, "column", sheetName, { bandSpan: { startIndex: r1, endIndex: r2 } });
157
+ if (!expanded || expanded === formulaValue)
158
+ continue;
159
+ sheetCell.setFormulaValue(expanded, false);
160
+ currentSheet[pos.rowIndex].values[pos.columnIndex] =
161
+ sheetCell.getCellData();
162
+ const movesWithBand = pos.columnIndex >= c1 && pos.rowIndex >= r1 && pos.rowIndex <= r2;
163
+ const finalPosition = {
164
+ sheetId,
165
+ rowIndex: pos.rowIndex,
166
+ columnIndex: movesWithBand
167
+ ? pos.columnIndex + count
168
+ : pos.columnIndex,
169
+ };
170
+ const enqueueOperation = sheetCell.ephemeral()
171
+ ? enqueueCalculation
172
+ : enqueueGraphOperation;
173
+ enqueueOperation?.({ type: "add", position: finalPosition });
174
+ enqueueCalculation?.({
175
+ type: "dirty",
176
+ position: finalPosition,
177
+ force: true,
178
+ });
179
+ recalcCells.set(createSheetCellIdentifier(sheetId, finalPosition.rowIndex, finalPosition.columnIndex), finalPosition);
180
+ }
181
+ // Splice the inserted cells in. FMT-04: they take the formatting of the cell directly
182
+ // LEFT of the insertion; at column 1 there is none, so they keep the displaced cell's.
183
+ for (let rowIndex = r1; rowIndex <= r2; rowIndex++) {
184
+ const values = draft[sheetId]?.[rowIndex]?.values;
185
+ if (!values)
186
+ continue;
187
+ values.splice(c1, 0, ...createArrayRange(c1, c2).map((columnIndex) => cloneCellWithFormatting(c1 > 1 ? values[c1 - 1] : values[columnIndex])));
119
188
  }
120
189
  });
121
190
  // Save history
@@ -2,6 +2,6 @@ import { Direction } from "@rowsncolumns/common-types";
2
2
  import type { CellData, Sheet, TableView } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnInsertColumnProps } from "../hooks/use-on-insert-column";
4
4
  import type { UseOnTableProps } from "../hooks/use-on-table";
5
- export declare const insertColumn: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, generatedNames, }: UseOnInsertColumnProps<T, S>) => (sheetId: number, referenceColumnIndex: number, numColumns?: number) => void;
5
+ export declare const insertColumn: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, generatedNames, }: UseOnInsertColumnProps<T, S>) => (sheetId: number, referenceColumnIndex: number, numColumns?: number) => void;
6
6
  export declare const insertTableColumn: <T extends CellData, S extends Sheet>({ tables, columnCount, rowCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, createHistory, onChangeTables, onChangeSheets, onChangeSheetData, enqueueCalculation, enqueueStructureChange, enqueueGraphOperation, getDependents, generatedNames, }: Pick<UseOnTableProps<T, S>, "tables" | "columnCount" | "rowCount" | "locale" | "cellXfsRegistry" | "sharedStringRegistry" | "createHistory" | "onChangeTables" | "onChangeSheets" | "onChangeSheetData" | "enqueueCalculation" | "enqueueStructureChange" | "enqueueGraphOperation" | "getDependents" | "getSheetName" | "generatedNames">) => (tableView: TableView, dimensionIndex: number, direction: Direction.Left | Direction.Right) => void;
7
7
  //# sourceMappingURL=insert-column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qaAyB/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SA0TtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
1
+ {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA6B5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,mgBA8B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SAmZtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
2
  import { produceWithPatches } from "immer";
3
+ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
3
4
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
4
5
  import { createSheetCellIdentifier, expandRangesInFormula, } from "../api/formula";
5
6
  import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
6
7
  import { expandMergesOnColumnInsert, moveMergedCells } from "../api/merges";
8
+ import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
7
9
  import { shiftPivotsOnInsert } from "../api/pivot-range";
8
10
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
9
11
  import { moveFilterView } from "../api/selection";
@@ -11,7 +13,7 @@ import { updateFormulasForStructuralChange } from "../api/structural-formula-upd
11
13
  import { getGeneratedTableColumnName } from "../generated-names";
12
14
  import { getNextTableColumnName } from "../helpers";
13
15
  import { SheetCell } from "../sheet-cell";
14
- export const insertColumn = ({ rowCount, columnCount, locale, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, generatedNames, }) => {
16
+ export const insertColumn = ({ rowCount, columnCount, locale, maxColumnCount, tables, cellXfsRegistry, sharedStringRegistry, getSheetName, getDependents, getGraphNodes, getGraphNodesInSheet, getActiveCell, getSelections, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, generatedNames, }) => {
15
17
  return (sheetId, referenceColumnIndex, numColumns = 1) => {
16
18
  if (numColumns <= 0)
17
19
  return;
@@ -68,7 +70,7 @@ export const insertColumn = ({ rowCount, columnCount, locale, tables, cellXfsReg
68
70
  // Data validations
69
71
  onChangeDataValidations?.((prevValidations) => {
70
72
  const [nextState, patches, inversePatches] = produceWithPatches(prevValidations, (draft) => {
71
- updateRangedRulesOnStructuralChange(draft, "insert", "column", referenceColumnIndex, numColumns, sheetId);
73
+ updateRangedRulesOnStructuralChange(draft, "insert", "column", referenceColumnIndex, numColumns, sheetId, { getSheetName });
72
74
  });
73
75
  saveHistory({ dataValidations: { patches, inversePatches } });
74
76
  return nextState;
@@ -76,11 +78,21 @@ export const insertColumn = ({ rowCount, columnCount, locale, tables, cellXfsReg
76
78
  // Conditional formats
77
79
  onChangeConditionalFormats?.((prevConditionalFormats) => {
78
80
  const [nextState, patches, inversePatches] = produceWithPatches(prevConditionalFormats, (draft) => {
79
- updateRangedRulesOnStructuralChange(draft, "insert", "column", referenceColumnIndex, numColumns, sheetId);
81
+ updateRangedRulesOnStructuralChange(draft, "insert", "column", referenceColumnIndex, numColumns, sheetId, { getSheetName });
80
82
  });
81
83
  saveHistory({ conditionalFormats: { patches, inversePatches } });
82
84
  return nextState;
83
85
  });
86
+ // Defined names: shift when the insert is before the name, grow when it
87
+ // lands strictly inside (a whole-column name `B1:B<rowCount>` shifts to
88
+ // column C for an insert at A), decided by the sheet the range lives on.
89
+ onChangeNamedRanges?.((prevNamedRanges) => {
90
+ const [nextState, patches, inversePatches] = produceWithPatches(prevNamedRanges, (draft) => {
91
+ updateNamedRangesOnStructuralChange(draft, "column", "insert", referenceColumnIndex, numColumns, sheetId);
92
+ });
93
+ saveHistory({ namedRanges: { patches, inversePatches } });
94
+ return nextState;
95
+ });
84
96
  // Shift pivot tables.
85
97
  onChangePivotTables?.((prevPivots) => {
86
98
  const [nextState, patches, inversePatches] = produceWithPatches(prevPivots, (draft) => {
@@ -104,6 +116,31 @@ export const insertColumn = ({ rowCount, columnCount, locale, tables, cellXfsReg
104
116
  saveHistory({ citations: { patches, inversePatches } });
105
117
  return nextState;
106
118
  });
119
+ // Anchored objects (Excel ANC rules): floating charts / embeds move with
120
+ // their anchor cell, chart series ranges and AllowEditRange rectangles
121
+ // shift like references. Frozen panes are a positional viewport split
122
+ // and are deliberately NOT touched here.
123
+ onChangeEmbeds?.((prevEmbeds) => {
124
+ const [nextState, patches, inversePatches] = produceWithPatches(prevEmbeds, (draft) => {
125
+ shiftEmbedsOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
126
+ });
127
+ saveHistory({ embeds: { patches, inversePatches } });
128
+ return nextState;
129
+ });
130
+ onChangeCharts?.((prevCharts) => {
131
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
132
+ shiftChartsOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
133
+ });
134
+ saveHistory({ charts: { patches, inversePatches } });
135
+ return nextState;
136
+ });
137
+ onChangeProtectedRanges?.((prevProtectedRanges) => {
138
+ const [nextState, patches, inversePatches] = produceWithPatches(prevProtectedRanges, (draft) => {
139
+ shiftProtectedRangesOnStructuralChange(draft, sheetId, "column", "insert", referenceColumnIndex, numColumns);
140
+ });
141
+ saveHistory({ protectedRanges: { patches, inversePatches } });
142
+ return nextState;
143
+ });
107
144
  // Sheet metadata
108
145
  onChangeSheets?.((prevSheets) => {
109
146
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
@@ -137,14 +174,15 @@ export const insertColumn = ({ rowCount, columnCount, locale, tables, cellXfsReg
137
174
  sheet.basicFilter.range.endColumnIndex += numColumns;
138
175
  }
139
176
  }
140
- if (sheet.frozenColumnCount &&
141
- referenceColumnIndex <= sheet.frozenColumnCount) {
142
- sheet.frozenColumnCount += numColumns;
143
- }
144
177
  if (sheet.merges) {
145
178
  sheet.merges = expandMergesOnColumnInsert(sheet.merges, referenceColumnIndex, numColumns);
146
179
  }
147
- sheet.columnCount = (sheet.columnCount ?? columnCount) + numColumns;
180
+ // `_xlnm.Print_Area` / `_xlnm.Print_Titles` follow the defined-name rule.
181
+ if (sheet.printSettings) {
182
+ updatePrintSettingsOnStructuralChange(sheet.printSettings, "column", "insert", referenceColumnIndex, numColumns);
183
+ }
184
+ // The grid never grows past the hard cap: at the cap the blank trailing columns fall off.
185
+ sheet.columnCount = Math.min((sheet.columnCount ?? columnCount) + numColumns, maxColumnCount ?? Number.POSITIVE_INFINITY);
148
186
  });
149
187
  saveHistory({ sheets: { patches, inversePatches } });
150
188
  return nextState;
@@ -1,4 +1,4 @@
1
1
  import type { CellData, Sheet } from "@rowsncolumns/spreadsheet";
2
2
  import type { UseOnInsertRowProps } from "../hooks/use-on-insert-row";
3
- export declare const insertRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, }: UseOnInsertRowProps<T, S>) => (sheetId: number, referenceRowIndex: number, numRows?: number) => void;
3
+ export declare const insertRow: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, maxRowCount, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, }: UseOnInsertRowProps<T, S>) => (sheetId: number, referenceRowIndex: number, numRows?: number) => void;
4
4
  //# sourceMappingURL=insert-row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AASjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6YAuB5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SAoNhE,CAAC"}
1
+ {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAkBjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,weA4B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SA4ShE,CAAC"}
@@ -1,12 +1,14 @@
1
1
  import { Direction } from "@rowsncolumns/common-types";
2
2
  import { produceWithPatches } from "immer";
3
+ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
3
4
  import { cloneRowWithFormatting, createSheetDraft } from "../api/immer-utils";
4
5
  import { expandMergesOnRowInsert } from "../api/merges";
6
+ import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
5
7
  import { shiftPivotsOnInsert } from "../api/pivot-range";
6
8
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
7
9
  import { moveFilterView } from "../api/selection";
8
10
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
9
- export const insertRow = ({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, }) => {
11
+ export const insertRow = ({ rowCount, columnCount, locale, maxRowCount, cellXfsRegistry, sharedStringRegistry, getSheetName, getActiveCell, getSelections, getDependents, getGraphNodes, getGraphNodesInSheet, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeDataValidations, onChangeConditionalFormats, onChangeCitations, onChangePivotTables, onChangeNamedRanges, onChangeEmbeds, onChangeCharts, onChangeProtectedRanges, }) => {
10
12
  return (sheetId, referenceRowIndex, numRows = 1) => {
11
13
  if (numRows <= 0)
12
14
  return;
@@ -42,7 +44,7 @@ export const insertRow = ({ rowCount, columnCount, locale, cellXfsRegistry, shar
42
44
  // Update data validations
43
45
  onChangeDataValidations?.((prevValidations) => {
44
46
  const [nextState, patches, inversePatches] = produceWithPatches(prevValidations, (draft) => {
45
- updateRangedRulesOnStructuralChange(draft, "insert", "row", referenceRowIndex, numRows, sheetId);
47
+ updateRangedRulesOnStructuralChange(draft, "insert", "row", referenceRowIndex, numRows, sheetId, { getSheetName });
46
48
  });
47
49
  saveHistory({ dataValidations: { patches, inversePatches } });
48
50
  return nextState;
@@ -50,11 +52,21 @@ export const insertRow = ({ rowCount, columnCount, locale, cellXfsRegistry, shar
50
52
  // Update conditional formats
51
53
  onChangeConditionalFormats?.((prevConditionalFormats) => {
52
54
  const [nextState, patches, inversePatches] = produceWithPatches(prevConditionalFormats, (draft) => {
53
- updateRangedRulesOnStructuralChange(draft, "insert", "row", referenceRowIndex, numRows, sheetId);
55
+ updateRangedRulesOnStructuralChange(draft, "insert", "row", referenceRowIndex, numRows, sheetId, { getSheetName });
54
56
  });
55
57
  saveHistory({ conditionalFormats: { patches, inversePatches } });
56
58
  return nextState;
57
59
  });
60
+ // Defined names: a name's RefersTo shifts when the insert is above it
61
+ // and grows when the insert lands strictly inside it (Excel), decided
62
+ // by the sheet its range lives on — not by the name's scope.
63
+ onChangeNamedRanges?.((prevNamedRanges) => {
64
+ const [nextState, patches, inversePatches] = produceWithPatches(prevNamedRanges, (draft) => {
65
+ updateNamedRangesOnStructuralChange(draft, "row", "insert", referenceRowIndex, numRows, sheetId);
66
+ });
67
+ saveHistory({ namedRanges: { patches, inversePatches } });
68
+ return nextState;
69
+ });
58
70
  // Shift pivot tables: source / pivotRange follow the same insert rule as
59
71
  // any other sheet range; targetPosition shifts down if at or after the
60
72
  // insertion point.
@@ -81,8 +93,32 @@ export const insertRow = ({ rowCount, columnCount, locale, cellXfsRegistry, shar
81
93
  saveHistory({ citations: { patches, inversePatches } });
82
94
  return nextState;
83
95
  });
84
- // Update sheet metadata (rowMetadata, basicFilter, frozen rows, merges,
85
- // rowCount).
96
+ // Anchored objects (Excel ANC rules): floating charts / embeds move with
97
+ // their anchor cell, chart series ranges and AllowEditRange rectangles
98
+ // shift like references. Frozen panes are a positional viewport split
99
+ // and are deliberately NOT touched here.
100
+ onChangeEmbeds?.((prevEmbeds) => {
101
+ const [nextState, patches, inversePatches] = produceWithPatches(prevEmbeds, (draft) => {
102
+ shiftEmbedsOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
103
+ });
104
+ saveHistory({ embeds: { patches, inversePatches } });
105
+ return nextState;
106
+ });
107
+ onChangeCharts?.((prevCharts) => {
108
+ const [nextState, patches, inversePatches] = produceWithPatches(prevCharts, (draft) => {
109
+ shiftChartsOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
110
+ });
111
+ saveHistory({ charts: { patches, inversePatches } });
112
+ return nextState;
113
+ });
114
+ onChangeProtectedRanges?.((prevProtectedRanges) => {
115
+ const [nextState, patches, inversePatches] = produceWithPatches(prevProtectedRanges, (draft) => {
116
+ shiftProtectedRangesOnStructuralChange(draft, sheetId, "row", "insert", referenceRowIndex, numRows);
117
+ });
118
+ saveHistory({ protectedRanges: { patches, inversePatches } });
119
+ return nextState;
120
+ });
121
+ // Update sheet metadata (rowMetadata, basicFilter, merges, rowCount).
86
122
  onChangeSheets?.((prevSheets) => {
87
123
  const [nextState, patches, inversePatches] = produceWithPatches(prevSheets, (draft) => {
88
124
  const sheet = draft.find((sheet) => sheet.sheetId === sheetId);
@@ -101,14 +137,15 @@ export const insertRow = ({ rowCount, columnCount, locale, cellXfsRegistry, shar
101
137
  sheet.basicFilter.range.endRowIndex += numRows;
102
138
  }
103
139
  }
104
- if (sheet.frozenRowCount &&
105
- referenceRowIndex <= sheet.frozenRowCount) {
106
- sheet.frozenRowCount += numRows;
107
- }
108
140
  if (sheet.merges) {
109
141
  sheet.merges = expandMergesOnRowInsert(sheet.merges, referenceRowIndex, numRows);
110
142
  }
111
- sheet.rowCount = (sheet.rowCount ?? rowCount) + numRows;
143
+ // `_xlnm.Print_Area` / `_xlnm.Print_Titles` follow the defined-name rule.
144
+ if (sheet.printSettings) {
145
+ updatePrintSettingsOnStructuralChange(sheet.printSettings, "row", "insert", referenceRowIndex, numRows);
146
+ }
147
+ // The grid never grows past the hard cap: at the cap the blank trailing rows fall off.
148
+ sheet.rowCount = Math.min((sheet.rowCount ?? rowCount) + numRows, maxRowCount ?? Number.POSITIVE_INFINITY);
112
149
  });
113
150
  saveHistory({ sheets: { patches, inversePatches } });
114
151
  return nextState;
@@ -1 +1 @@
1
- {"version":3,"file":"spreadsheet-interface.d.ts","sourceRoot":"","sources":["../../../interface/spreadsheet-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spreadsheet-interface.d.ts","sourceRoot":"","sources":["../../../interface/spreadsheet-interface.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { isDataValidationFormulaRule } from "../api/data-validation";
11
11
  import { getAutoFillValues } from "../api/fill";
12
12
  import { formulaToRelativeReference } from "../api/formula";
13
13
  import { createSheetDraft, deriveCellFromPrecedents } from "../api/immer-utils";
14
+ import { arrayResultToA1Ref } from "../hooks/use-on-calculation-success";
14
15
  import { defaultCellCoords, isStyleReference, SheetCell } from "../sheet-cell";
15
16
  import { CellXfsRegistry } from "../cellxfs-registry";
16
17
  import { SharedStringRegistry } from "../shared-string-registry";
@@ -723,6 +724,18 @@ export class Spreadsheet {
723
724
  else {
724
725
  const preserveStringLiteral = typeof result === "string";
725
726
  sheetCell.setEffectiveValue(result, false, preserveStringLiteral);
727
+ // Track the anchor's spill range (`af`), as the React hook path
728
+ // does: a matrix result spills into a rectangle, a scalar clears
729
+ // any earlier ref.
730
+ if (Array.isArray(result)) {
731
+ const ref = arrayResultToA1Ref(rowIndex, columnIndex, result);
732
+ if (ref) {
733
+ sheetCell.setArrayFormulaRef(ref);
734
+ }
735
+ }
736
+ else {
737
+ sheetCell.clearArrayFormulaRef();
738
+ }
726
739
  // Calculator-supplied formatting (e.g. spilled FILTER results)
727
740
  // is persisted as user-entered so the renderer respects it
728
741
  // without walking precedents. Effective number format from
@@ -1372,6 +1385,9 @@ export class Spreadsheet {
1372
1385
  onChangeTables: this.onChangeTables,
1373
1386
  onChangeDataValidations: this.onChangeDataValidations,
1374
1387
  onChangeConditionalFormats: this.onChangeConditionalFormats,
1388
+ onChangeNamedRanges: this.onChangeNamedRanges,
1389
+ onChangeCharts: this.onChangeCharts,
1390
+ onChangeEmbeds: this.onChangeEmbeds,
1375
1391
  createHistory: this.createHistory,
1376
1392
  enqueueCalculation: this.enqueueCalculation,
1377
1393
  enqueueGraphOperation: this.enqueueGraphOperation,
@@ -1400,6 +1416,9 @@ export class Spreadsheet {
1400
1416
  onChangeTables: this.onChangeTables,
1401
1417
  onChangeDataValidations: this.onChangeDataValidations,
1402
1418
  onChangeConditionalFormats: this.onChangeConditionalFormats,
1419
+ onChangeNamedRanges: this.onChangeNamedRanges,
1420
+ onChangeCharts: this.onChangeCharts,
1421
+ onChangeEmbeds: this.onChangeEmbeds,
1403
1422
  createHistory: this.createHistory,
1404
1423
  enqueueCalculation: this.enqueueCalculation,
1405
1424
  enqueueGraphOperation: this.enqueueGraphOperation,
@@ -1428,6 +1447,9 @@ export class Spreadsheet {
1428
1447
  onChangeTables: this.onChangeTables,
1429
1448
  onChangeDataValidations: this.onChangeDataValidations,
1430
1449
  onChangeConditionalFormats: this.onChangeConditionalFormats,
1450
+ onChangeNamedRanges: this.onChangeNamedRanges,
1451
+ onChangeCharts: this.onChangeCharts,
1452
+ onChangeEmbeds: this.onChangeEmbeds,
1431
1453
  createHistory: this.createHistory,
1432
1454
  enqueueCalculation: this.enqueueCalculation,
1433
1455
  enqueueGraphOperation: this.enqueueGraphOperation,
@@ -1444,6 +1466,8 @@ export class Spreadsheet {
1444
1466
  onChangeActiveCell: this.onChangeActiveSheet,
1445
1467
  onChangeSelections: this.onChangeSelections,
1446
1468
  onChangeCitations: this.onChangeCitations,
1469
+ tables: this.tables,
1470
+ getArrayRange: (position) => this._calculationInterface.getArrayRange(position),
1447
1471
  })(sheetId, columnIndexes);
1448
1472
  }
1449
1473
  /**
@@ -1685,8 +1709,13 @@ export class Spreadsheet {
1685
1709
  onChangeTables: this.onChangeTables,
1686
1710
  onChangeDataValidations: this.onChangeDataValidations,
1687
1711
  onChangeConditionalFormats: this.onChangeConditionalFormats,
1712
+ onChangeNamedRanges: this.onChangeNamedRanges,
1713
+ onChangeCharts: this.onChangeCharts,
1714
+ onChangeEmbeds: this.onChangeEmbeds,
1688
1715
  onChangeActiveCell: this.onChangeActiveSheet,
1689
1716
  onChangeSelections: this.onChangeSelections,
1717
+ tables: this.tables,
1718
+ getArrayRange: (position) => this._calculationInterface.getArrayRange(position),
1690
1719
  })(sheetId, rowIndexes);
1691
1720
  }
1692
1721
  /**