@rowsncolumns/spreadsheet-state 28.0.74 → 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 (253) 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/datatype.d.ts.map +1 -1
  5. package/dist/cjs/api/datatype.js +8 -1
  6. package/dist/cjs/api/dependency.d.ts +13 -2
  7. package/dist/cjs/api/dependency.d.ts.map +1 -1
  8. package/dist/cjs/api/dependency.js +11 -5
  9. package/dist/cjs/api/fill-series-spec.d.ts +35 -0
  10. package/dist/cjs/api/fill-series-spec.d.ts.map +1 -0
  11. package/dist/cjs/api/fill-series-spec.js +164 -0
  12. package/dist/cjs/api/fill.d.ts +95 -3
  13. package/dist/cjs/api/fill.d.ts.map +1 -1
  14. package/dist/cjs/api/fill.js +1186 -418
  15. package/dist/cjs/api/formula.d.ts +61 -4
  16. package/dist/cjs/api/formula.d.ts.map +1 -1
  17. package/dist/cjs/api/formula.js +250 -61
  18. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  19. package/dist/cjs/api/immer-utils.js +20 -15
  20. package/dist/cjs/api/intl.d.ts.map +1 -1
  21. package/dist/cjs/api/merges.d.ts +8 -0
  22. package/dist/cjs/api/merges.d.ts.map +1 -1
  23. package/dist/cjs/api/merges.js +64 -1
  24. package/dist/cjs/api/named-range-structural.d.ts +62 -0
  25. package/dist/cjs/api/named-range-structural.d.ts.map +1 -0
  26. package/dist/cjs/api/named-range-structural.js +197 -0
  27. package/dist/cjs/api/paint-format.d.ts +15 -1
  28. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  29. package/dist/cjs/api/paint-format.js +69 -10
  30. package/dist/cjs/api/range-rule-helpers.d.ts +45 -1
  31. package/dist/cjs/api/range-rule-helpers.d.ts.map +1 -1
  32. package/dist/cjs/api/range-rule-helpers.js +159 -6
  33. package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
  34. package/dist/cjs/api/structural-formula-update.js +24 -6
  35. package/dist/cjs/api/structural-guards.d.ts +78 -0
  36. package/dist/cjs/api/structural-guards.d.ts.map +1 -0
  37. package/dist/cjs/api/structural-guards.js +202 -0
  38. package/dist/cjs/api/structural-table-refs.d.ts +94 -0
  39. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -0
  40. package/dist/cjs/api/structural-table-refs.js +313 -0
  41. package/dist/cjs/commands.d.ts +11 -1
  42. package/dist/cjs/commands.d.ts.map +1 -1
  43. package/dist/cjs/constants.d.ts +25 -0
  44. package/dist/cjs/constants.d.ts.map +1 -0
  45. package/dist/cjs/constants.js +26 -0
  46. package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
  47. package/dist/cjs/hooks/use-calculation-worker.js +64 -6
  48. package/dist/cjs/hooks/use-calculation.d.ts +8 -1
  49. package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
  50. package/dist/cjs/hooks/use-calculation.js +15 -0
  51. package/dist/cjs/hooks/use-on-calculation-success.d.ts +7 -0
  52. package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
  53. package/dist/cjs/hooks/use-on-calculation-success.js +7 -1
  54. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
  55. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  56. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +27 -2
  57. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
  58. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  59. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +27 -2
  60. package/dist/cjs/hooks/use-on-delete-column.d.ts +13 -4
  61. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  62. package/dist/cjs/hooks/use-on-delete-column.js +14 -2
  63. package/dist/cjs/hooks/use-on-delete-row.d.ts +13 -4
  64. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  65. package/dist/cjs/hooks/use-on-delete-row.js +14 -2
  66. package/dist/cjs/hooks/use-on-fill.d.ts +13 -4
  67. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  68. package/dist/cjs/hooks/use-on-fill.js +28 -7
  69. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
  70. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  71. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +27 -2
  72. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
  73. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  74. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +27 -2
  75. package/dist/cjs/hooks/use-on-insert-column.d.ts +10 -3
  76. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  77. package/dist/cjs/hooks/use-on-insert-column.js +33 -7
  78. package/dist/cjs/hooks/use-on-insert-row.d.ts +10 -3
  79. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  80. package/dist/cjs/hooks/use-on-insert-row.js +32 -7
  81. package/dist/cjs/hooks/use-paint-format.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-paint-format.js +10 -7
  83. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +3 -3
  84. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  85. package/dist/cjs/hooks/use-spreadsheet-state.js +73 -16
  86. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  87. package/dist/cjs/hooks/use-structured-reference.js +10 -6
  88. package/dist/cjs/index.d.ts +3 -0
  89. package/dist/cjs/index.d.ts.map +1 -1
  90. package/dist/cjs/index.js +3 -0
  91. package/dist/cjs/interface/apply-fill.d.ts +3 -3
  92. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  93. package/dist/cjs/interface/apply-fill.js +100 -53
  94. package/dist/cjs/interface/calculation-interface.d.ts +9 -0
  95. package/dist/cjs/interface/calculation-interface.d.ts.map +1 -1
  96. package/dist/cjs/interface/calculation-interface.js +31 -2
  97. package/dist/cjs/interface/delete-cells-shift-left.d.ts +8 -1
  98. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  99. package/dist/cjs/interface/delete-cells-shift-left.js +158 -80
  100. package/dist/cjs/interface/delete-cells-shift-up.d.ts +9 -1
  101. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  102. package/dist/cjs/interface/delete-cells-shift-up.js +155 -73
  103. package/dist/cjs/interface/delete-column.d.ts +1 -1
  104. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  105. package/dist/cjs/interface/delete-column.js +90 -31
  106. package/dist/cjs/interface/delete-row.d.ts +1 -1
  107. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  108. package/dist/cjs/interface/delete-row.js +85 -26
  109. package/dist/cjs/interface/insert-cells-shift-down.d.ts +10 -1
  110. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  111. package/dist/cjs/interface/insert-cells-shift-down.js +147 -52
  112. package/dist/cjs/interface/insert-cells-shift-right.d.ts +10 -1
  113. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  114. package/dist/cjs/interface/insert-cells-shift-right.js +154 -58
  115. package/dist/cjs/interface/insert-column.d.ts +1 -1
  116. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  117. package/dist/cjs/interface/insert-column.js +46 -8
  118. package/dist/cjs/interface/insert-row.d.ts +1 -1
  119. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  120. package/dist/cjs/interface/insert-row.js +47 -10
  121. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  122. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  123. package/dist/cjs/interface/spreadsheet-interface.js +33 -0
  124. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  125. package/dist/cjs/sheet-cell.js +30 -6
  126. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  127. package/dist/esm/api/anchored-objects.d.ts +66 -0
  128. package/dist/esm/api/anchored-objects.d.ts.map +1 -0
  129. package/dist/esm/api/anchored-objects.js +212 -0
  130. package/dist/esm/api/datatype.d.ts.map +1 -1
  131. package/dist/esm/api/datatype.js +8 -1
  132. package/dist/esm/api/dependency.d.ts +13 -2
  133. package/dist/esm/api/dependency.d.ts.map +1 -1
  134. package/dist/esm/api/dependency.js +10 -4
  135. package/dist/esm/api/fill-series-spec.d.ts +35 -0
  136. package/dist/esm/api/fill-series-spec.d.ts.map +1 -0
  137. package/dist/esm/api/fill-series-spec.js +160 -0
  138. package/dist/esm/api/fill.d.ts +95 -3
  139. package/dist/esm/api/fill.d.ts.map +1 -1
  140. package/dist/esm/api/fill.js +1158 -418
  141. package/dist/esm/api/formula.d.ts +61 -4
  142. package/dist/esm/api/formula.d.ts.map +1 -1
  143. package/dist/esm/api/formula.js +238 -60
  144. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  145. package/dist/esm/api/immer-utils.js +20 -15
  146. package/dist/esm/api/intl.d.ts.map +1 -1
  147. package/dist/esm/api/merges.d.ts +8 -0
  148. package/dist/esm/api/merges.d.ts.map +1 -1
  149. package/dist/esm/api/merges.js +51 -0
  150. package/dist/esm/api/named-range-structural.d.ts +62 -0
  151. package/dist/esm/api/named-range-structural.d.ts.map +1 -0
  152. package/dist/esm/api/named-range-structural.js +176 -0
  153. package/dist/esm/api/paint-format.d.ts +15 -1
  154. package/dist/esm/api/paint-format.d.ts.map +1 -1
  155. package/dist/esm/api/paint-format.js +46 -1
  156. package/dist/esm/api/range-rule-helpers.d.ts +45 -1
  157. package/dist/esm/api/range-rule-helpers.d.ts.map +1 -1
  158. package/dist/esm/api/range-rule-helpers.js +153 -1
  159. package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
  160. package/dist/esm/api/structural-formula-update.js +24 -6
  161. package/dist/esm/api/structural-guards.d.ts +78 -0
  162. package/dist/esm/api/structural-guards.d.ts.map +1 -0
  163. package/dist/esm/api/structural-guards.js +186 -0
  164. package/dist/esm/api/structural-table-refs.d.ts +94 -0
  165. package/dist/esm/api/structural-table-refs.d.ts.map +1 -0
  166. package/dist/esm/api/structural-table-refs.js +219 -0
  167. package/dist/esm/commands.d.ts +11 -1
  168. package/dist/esm/commands.d.ts.map +1 -1
  169. package/dist/esm/constants.d.ts +25 -0
  170. package/dist/esm/constants.d.ts.map +1 -0
  171. package/dist/esm/constants.js +26 -0
  172. package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
  173. package/dist/esm/hooks/use-calculation-worker.js +45 -0
  174. package/dist/esm/hooks/use-calculation.d.ts +8 -1
  175. package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
  176. package/dist/esm/hooks/use-calculation.js +15 -0
  177. package/dist/esm/hooks/use-on-calculation-success.d.ts +7 -0
  178. package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
  179. package/dist/esm/hooks/use-on-calculation-success.js +7 -1
  180. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
  181. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  182. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +26 -2
  183. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
  184. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  185. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +26 -2
  186. package/dist/esm/hooks/use-on-delete-column.d.ts +13 -4
  187. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  188. package/dist/esm/hooks/use-on-delete-column.js +14 -2
  189. package/dist/esm/hooks/use-on-delete-row.d.ts +13 -4
  190. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  191. package/dist/esm/hooks/use-on-delete-row.js +14 -2
  192. package/dist/esm/hooks/use-on-fill.d.ts +13 -4
  193. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  194. package/dist/esm/hooks/use-on-fill.js +24 -4
  195. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
  196. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  197. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +26 -2
  198. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
  199. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  200. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +26 -2
  201. package/dist/esm/hooks/use-on-insert-column.d.ts +10 -3
  202. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  203. package/dist/esm/hooks/use-on-insert-column.js +33 -7
  204. package/dist/esm/hooks/use-on-insert-row.d.ts +10 -3
  205. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  206. package/dist/esm/hooks/use-on-insert-row.js +32 -7
  207. package/dist/esm/hooks/use-paint-format.d.ts.map +1 -1
  208. package/dist/esm/hooks/use-paint-format.js +10 -7
  209. package/dist/esm/hooks/use-spreadsheet-state.d.ts +3 -3
  210. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  211. package/dist/esm/hooks/use-spreadsheet-state.js +73 -16
  212. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  213. package/dist/esm/hooks/use-structured-reference.js +10 -6
  214. package/dist/esm/index.d.ts +3 -0
  215. package/dist/esm/index.d.ts.map +1 -1
  216. package/dist/esm/index.js +3 -0
  217. package/dist/esm/interface/apply-fill.d.ts +3 -3
  218. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  219. package/dist/esm/interface/apply-fill.js +93 -48
  220. package/dist/esm/interface/calculation-interface.d.ts +9 -0
  221. package/dist/esm/interface/calculation-interface.d.ts.map +1 -1
  222. package/dist/esm/interface/calculation-interface.js +33 -2
  223. package/dist/esm/interface/delete-cells-shift-left.d.ts +8 -1
  224. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  225. package/dist/esm/interface/delete-cells-shift-left.js +135 -59
  226. package/dist/esm/interface/delete-cells-shift-up.d.ts +9 -1
  227. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  228. package/dist/esm/interface/delete-cells-shift-up.js +133 -53
  229. package/dist/esm/interface/delete-column.d.ts +1 -1
  230. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  231. package/dist/esm/interface/delete-column.js +80 -11
  232. package/dist/esm/interface/delete-row.d.ts +1 -1
  233. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  234. package/dist/esm/interface/delete-row.js +81 -11
  235. package/dist/esm/interface/insert-cells-shift-down.d.ts +10 -1
  236. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  237. package/dist/esm/interface/insert-cells-shift-down.js +116 -47
  238. package/dist/esm/interface/insert-cells-shift-right.d.ts +10 -1
  239. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  240. package/dist/esm/interface/insert-cells-shift-right.js +120 -51
  241. package/dist/esm/interface/insert-column.d.ts +1 -1
  242. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  243. package/dist/esm/interface/insert-column.js +46 -8
  244. package/dist/esm/interface/insert-row.d.ts +1 -1
  245. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  246. package/dist/esm/interface/insert-row.js +47 -10
  247. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  248. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  249. package/dist/esm/interface/spreadsheet-interface.js +29 -0
  250. package/dist/esm/sheet-cell.d.ts.map +1 -1
  251. package/dist/esm/sheet-cell.js +30 -6
  252. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  253. package/package.json +17 -17
@@ -1,14 +1,15 @@
1
- import { __awaiter, __generator, __read } from "tslib";
1
+ import { __assign, __awaiter, __generator, __read, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
3
  import { selectionFromActiveCell } from "@rowsncolumns/utils";
4
4
  import { produceWithPatches } from "immer";
5
+ import { FILL_UNTOUCHED } from "../api/fill";
5
6
  import { createSheetCellIdentifier } from "../api/formula";
6
7
  import { createSheetDraft } from "../api/immer-utils";
7
8
  import { defaultCellCoords, defaultSheetId, SheetCell } from "../sheet-cell";
8
9
  import { getFillDirection } from "./../api/selection";
9
10
  import { collectDataValidationTarget, extendDataValidationRanges, } from "./data-validation-utils";
10
11
  export var applyFill = function (_a) {
11
- var locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, getCellData = _a.getCellData, getEffectiveValue = _a.getEffectiveValue, getFormattedValue = _a.getFormattedValue, getAutoFillValues = _a.getAutoFillValues, getSheetName = _a.getSheetName, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, onChangeDataValidations = _a.onChangeDataValidations;
12
+ var locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, getCellData = _a.getCellData, getEffectiveValue = _a.getEffectiveValue, getFormattedValue = _a.getFormattedValue, getAutoFillValues = _a.getAutoFillValues, getSheetName = _a.getSheetName, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, onChangeDataValidations = _a.onChangeDataValidations, getMerges = _a.getMerges, onFillMerges = _a.onFillMerges;
12
13
  return function (
13
14
  // Active sheet ID
14
15
  sheetId,
@@ -19,10 +20,13 @@ export var applyFill = function (_a) {
19
20
  // Current selections of the user
20
21
  selections, fillableSelections,
21
22
  // Fill type - if not specified, will auto-detect
22
- fillType) { return __awaiter(void 0, void 0, void 0, function () {
23
- var finalSelections, selection, saveHistory, fillBounds, direction, recalcCells, dataValidationTargets, fillValues, sheetCell, getFillValue;
24
- return __generator(this, function (_a) {
25
- switch (_a.label) {
23
+ fillType,
24
+ // Ctrl/Cmd toggle held on the fill handle and/or Series-dialog parameters
25
+ options) { return __awaiter(void 0, void 0, void 0, function () {
26
+ var finalSelections, selection, saveHistory, fillBounds, direction, recalcCells, dataValidationTargets, fillValues, targetBounds, filledArea, sheetCell, getFillValue, writeCell, writeFilledCell, fillMerges;
27
+ var _a;
28
+ return __generator(this, function (_b) {
29
+ switch (_b.label) {
26
30
  case 0:
27
31
  finalSelections = selections.length
28
32
  ? selections
@@ -45,13 +49,47 @@ export var applyFill = function (_a) {
45
49
  locale: locale,
46
50
  cellXfsRegistry: cellXfsRegistry,
47
51
  getDataValidationById: getDataValidationById,
48
- fillType: fillType,
52
+ merges: getMerges === null || getMerges === void 0 ? void 0 : getMerges(sheetId),
53
+ fillType: fillType !== null && fillType !== void 0 ? fillType : options === null || options === void 0 ? void 0 : options.fillType,
54
+ modifier: options === null || options === void 0 ? void 0 : options.modifier,
55
+ series: options === null || options === void 0 ? void 0 : options.series,
49
56
  })];
50
57
  case 1:
51
- fillValues = _a.sent();
58
+ fillValues = _b.sent();
59
+ targetBounds = (_a = fillValues.snappedFillBounds) !== null && _a !== void 0 ? _a : fillBounds;
60
+ filledArea = direction === Direction.Down
61
+ ? {
62
+ startRowIndex: selection.range.endRowIndex + 1,
63
+ endRowIndex: targetBounds.endRowIndex,
64
+ startColumnIndex: selection.range.startColumnIndex,
65
+ endColumnIndex: selection.range.endColumnIndex,
66
+ }
67
+ : direction === Direction.Up
68
+ ? {
69
+ startRowIndex: targetBounds.startRowIndex,
70
+ endRowIndex: selection.range.startRowIndex - 1,
71
+ startColumnIndex: selection.range.startColumnIndex,
72
+ endColumnIndex: selection.range.endColumnIndex,
73
+ }
74
+ : direction === Direction.Right
75
+ ? {
76
+ startRowIndex: selection.range.startRowIndex,
77
+ endRowIndex: selection.range.endRowIndex,
78
+ startColumnIndex: selection.range.endColumnIndex + 1,
79
+ endColumnIndex: targetBounds.endColumnIndex,
80
+ }
81
+ : {
82
+ startRowIndex: selection.range.startRowIndex,
83
+ endRowIndex: selection.range.endRowIndex,
84
+ startColumnIndex: targetBounds.startColumnIndex,
85
+ endColumnIndex: selection.range.startColumnIndex - 1,
86
+ };
52
87
  sheetCell = new SheetCell(defaultSheetId, defaultCellCoords, undefined, { locale: locale, cellXfsRegistry: cellXfsRegistry, getDataValidationById: getDataValidationById });
53
88
  getFillValue = function (rowIndex, columnIndex) {
54
- var fillValue = fillValues[rowIndex][columnIndex];
89
+ var _a;
90
+ var fillValue = (_a = fillValues[rowIndex]) === null || _a === void 0 ? void 0 : _a[columnIndex];
91
+ if (fillValue === FILL_UNTOUCHED)
92
+ return FILL_UNTOUCHED;
55
93
  if (typeof fillValue !== "object") {
56
94
  sheetCell.setUserEnteredValue(fillValue);
57
95
  sharedStringRegistry === null || sharedStringRegistry === void 0 ? void 0 : sharedStringRegistry.registerCell(sheetCell);
@@ -60,6 +98,28 @@ export var applyFill = function (_a) {
60
98
  }
61
99
  return fillValue;
62
100
  };
101
+ writeCell = function (draft, rowIndex, columnIndex, cellData) {
102
+ var newSheet = createSheetDraft(draft, sheetId, rowIndex);
103
+ newSheet[rowIndex].values[columnIndex] = cellData;
104
+ collectDataValidationTarget(dataValidationTargets, sheetId, rowIndex, columnIndex, cellData);
105
+ enqueueCalculation({
106
+ position: { rowIndex: rowIndex, columnIndex: columnIndex, sheetId: sheetId },
107
+ type: "add",
108
+ force: true,
109
+ });
110
+ recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, columnIndex), {
111
+ rowIndex: rowIndex,
112
+ columnIndex: columnIndex,
113
+ sheetId: sheetId,
114
+ force: true,
115
+ });
116
+ };
117
+ writeFilledCell = function (draft, rowIndex, columnIndex, rollingRowIndex, rollingColumnIndex) {
118
+ var cellData = getFillValue(rollingRowIndex, rollingColumnIndex);
119
+ if (cellData === FILL_UNTOUCHED)
120
+ return;
121
+ writeCell(draft, rowIndex, columnIndex, cellData);
122
+ };
63
123
  // Fill writes through `onChangeSheetData` directly. The calculator
64
124
  // only invalidates `rangeCache` for cells it recomputes, so the
65
125
  // freshly-filled positions stay cached until we tell it otherwise.
@@ -76,10 +136,12 @@ export var applyFill = function (_a) {
76
136
  // Copy sheetdata
77
137
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
78
138
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
139
+ var e_1, _a;
140
+ var _b;
79
141
  switch (direction) {
80
142
  case Direction.Down: {
81
143
  var start = selection.range.endRowIndex + 1;
82
- var end = fillBounds.endRowIndex;
144
+ var end = targetBounds.endRowIndex;
83
145
  var counter = 0;
84
146
  for (var i = start; i <= end; i++) {
85
147
  var rowIndex = selection.range.startRowIndex + counter;
@@ -90,16 +152,7 @@ export var applyFill = function (_a) {
90
152
  var rollingRowIndex = i - start;
91
153
  for (var columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
92
154
  var rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
93
- var newSheet = createSheetDraft(draft, sheetId, i);
94
- var newCellData = getFillValue(rollingRowIndex, rollingColumnIndex);
95
- newSheet[i].values[columnIndex] = newCellData;
96
- collectDataValidationTarget(dataValidationTargets, sheetId, i, columnIndex, newCellData);
97
- enqueueCalculation({
98
- position: { rowIndex: i, columnIndex: columnIndex, sheetId: sheetId },
99
- type: "add",
100
- force: true,
101
- });
102
- recalcCells.set(createSheetCellIdentifier(sheetId, i, columnIndex), { rowIndex: i, columnIndex: columnIndex, sheetId: sheetId, force: true });
155
+ writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
103
156
  }
104
157
  counter++;
105
158
  }
@@ -107,20 +160,12 @@ export var applyFill = function (_a) {
107
160
  }
108
161
  case Direction.Up: {
109
162
  var start = selection.range.startRowIndex - 1;
110
- var end = fillBounds.startRowIndex;
163
+ var end = targetBounds.startRowIndex;
111
164
  for (var i = start; i >= end; i--) {
112
- var rollingRowIndex = i - fillBounds.startRowIndex;
165
+ var rollingRowIndex = i - targetBounds.startRowIndex;
113
166
  for (var columnIndex = selection.range.startColumnIndex; columnIndex <= selection.range.endColumnIndex; columnIndex++) {
114
167
  var rollingColumnIndex = columnIndex - selection.range.startColumnIndex;
115
- var newSheet = createSheetDraft(draft, sheetId, i);
116
- newSheet[i].values[columnIndex] = getFillValue(rollingRowIndex, rollingColumnIndex);
117
- collectDataValidationTarget(dataValidationTargets, sheetId, i, columnIndex, newSheet[i].values[columnIndex]);
118
- enqueueCalculation({
119
- position: { rowIndex: i, columnIndex: columnIndex, sheetId: sheetId },
120
- type: "add",
121
- force: true,
122
- });
123
- recalcCells.set(createSheetCellIdentifier(sheetId, i, columnIndex), { rowIndex: i, columnIndex: columnIndex, sheetId: sheetId, force: true });
168
+ writeFilledCell(draft, i, columnIndex, rollingRowIndex, rollingColumnIndex);
124
169
  }
125
170
  }
126
171
  break;
@@ -128,7 +173,7 @@ export var applyFill = function (_a) {
128
173
  case Direction.Right: {
129
174
  for (var rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
130
175
  var start = selection.range.endColumnIndex + 1;
131
- var end = fillBounds.endColumnIndex;
176
+ var end = targetBounds.endColumnIndex;
132
177
  var counter = 0;
133
178
  var rollingRowIndex = rowIndex - selection.range.startRowIndex;
134
179
  for (var j = start; j <= end; j++) {
@@ -138,15 +183,7 @@ export var applyFill = function (_a) {
138
183
  columnIndex = selection.range.startColumnIndex;
139
184
  }
140
185
  var rollingColumnIndex = j - start;
141
- var newSheet = createSheetDraft(draft, sheetId, rowIndex);
142
- newSheet[rowIndex].values[j] = getFillValue(rollingRowIndex, rollingColumnIndex);
143
- collectDataValidationTarget(dataValidationTargets, sheetId, rowIndex, j, newSheet[rowIndex].values[j]);
144
- enqueueCalculation({
145
- position: { rowIndex: rowIndex, columnIndex: j, sheetId: sheetId },
146
- type: "add",
147
- force: true,
148
- });
149
- recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, j), { rowIndex: rowIndex, columnIndex: j, sheetId: sheetId, force: true });
186
+ writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
150
187
  counter++;
151
188
  }
152
189
  }
@@ -155,7 +192,7 @@ export var applyFill = function (_a) {
155
192
  case Direction.Left: {
156
193
  for (var rowIndex = selection.range.startRowIndex; rowIndex <= selection.range.endRowIndex; rowIndex++) {
157
194
  var start = selection.range.startColumnIndex - 1;
158
- var end = fillBounds.startColumnIndex;
195
+ var end = targetBounds.startColumnIndex;
159
196
  var rollingRowIndex = rowIndex - selection.range.startRowIndex;
160
197
  var counter = 0;
161
198
  for (var j = start; j >= end; j--) {
@@ -164,22 +201,28 @@ export var applyFill = function (_a) {
164
201
  counter = 0;
165
202
  columnIndex = selection.range.endColumnIndex;
166
203
  }
167
- var rollingColumnIndex = j - fillBounds.startColumnIndex;
168
- var newSheet = createSheetDraft(draft, sheetId, rowIndex);
169
- newSheet[rowIndex].values[j] = getFillValue(rollingRowIndex, rollingColumnIndex);
170
- collectDataValidationTarget(dataValidationTargets, sheetId, rowIndex, j, newSheet[rowIndex].values[j]);
171
- enqueueCalculation({
172
- position: { rowIndex: rowIndex, columnIndex: j, sheetId: sheetId },
173
- type: "add",
174
- force: true,
175
- });
176
- recalcCells.set(createSheetCellIdentifier(sheetId, rowIndex, j), { rowIndex: rowIndex, columnIndex: j, sheetId: sheetId, force: true });
204
+ var rollingColumnIndex = j - targetBounds.startColumnIndex;
205
+ writeFilledCell(draft, rowIndex, j, rollingRowIndex, rollingColumnIndex);
177
206
  counter--;
178
207
  }
179
208
  }
180
209
  break;
181
210
  }
182
211
  }
212
+ try {
213
+ // Series-dialog Trend: the seed cells Excel replaces with the fitted values.
214
+ for (var _c = __values((_b = fillValues.seedCells) !== null && _b !== void 0 ? _b : []), _d = _c.next(); !_d.done; _d = _c.next()) {
215
+ var seed = _d.value;
216
+ writeCell(draft, seed.rowIndex, seed.columnIndex, seed.cell);
217
+ }
218
+ }
219
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
220
+ finally {
221
+ try {
222
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
223
+ }
224
+ finally { if (e_1) throw e_1.error; }
225
+ }
183
226
  }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
184
227
  // Save history
185
228
  saveHistory({
@@ -189,13 +232,17 @@ export var applyFill = function (_a) {
189
232
  activeCell: { undo: activeCell, redo: activeCell },
190
233
  selections: {
191
234
  undo: fillableSelections !== null && fillableSelections !== void 0 ? fillableSelections : selections,
192
- redo: [fillSelection],
235
+ redo: [__assign(__assign({}, fillSelection), { range: targetBounds })],
193
236
  },
194
237
  });
195
238
  extendDataValidationRanges(dataValidationTargets, onChangeDataValidations, saveHistory);
196
239
  sharedStringRegistry === null || sharedStringRegistry === void 0 ? void 0 : sharedStringRegistry.getPatches(saveHistory);
197
240
  return nextState;
198
241
  });
242
+ fillMerges = fillValues.fillMerges;
243
+ if (fillMerges === null || fillMerges === void 0 ? void 0 : fillMerges.length) {
244
+ onFillMerges === null || onFillMerges === void 0 ? void 0 : onFillMerges(sheetId, activeCell, filledArea, fillMerges, targetBounds);
245
+ }
199
246
  return [2 /*return*/];
200
247
  }
201
248
  });
@@ -60,6 +60,15 @@ export declare class CalculationInterface {
60
60
  private ensureWorkerMetadata;
61
61
  private isClientOnlyFormula;
62
62
  private executeOperations;
63
+ /**
64
+ * Mirror a dynamic-array anchor's spill rectangle on the local graph (a
65
+ * matrix result registers it, a scalar clears it) so structural edits can
66
+ * find the projected cells of an anchor they delete — the same bookkeeping
67
+ * the React worker hook does in `handleArrayEvaluation`.
68
+ */
69
+ private trackArrayResult;
70
+ /** The spill rectangle currently anchored at `position`, if it is a dynamic array. */
71
+ getArrayRange(position: CellCoordinate): CellCoordinateRange | undefined;
63
72
  private createDefaultWorker;
64
73
  private ensureWorker;
65
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calculation-interface.d.ts","sourceRoot":"","sources":["../../../interface/calculation-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculation-interface.d.ts","sourceRoot":"","sources":["../../../interface/calculation-interface.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { __awaiter, __generator } from "tslib";
2
- import { resolveSheetSpan } from "@rowsncolumns/utils";
1
+ import { __awaiter, __generator, __read, __spreadArray } from "tslib";
3
2
  import { CalculationGraph, CalculationWorkerClient, createNamedRangeResolver, createStructuredReferenceResolver, enqueueCalculationOperations, mapOperationToGraphOperation, } from "@rowsncolumns/calculation-worker/server";
4
3
  import { FormulaError } from "@rowsncolumns/fast-formula-parser";
4
+ import { resolveSheetSpan } from "@rowsncolumns/utils";
5
5
  var isSerializedFormulaError = function (value) {
6
6
  return Boolean(value &&
7
7
  typeof value === "object" &&
@@ -344,6 +344,7 @@ var CalculationInterface = /** @class */ (function () {
344
344
  case 2:
345
345
  results = _a.sent();
346
346
  expandedResults = results.flatMap(function (result) {
347
+ _this.trackArrayResult(result);
347
348
  return expandWorkerResult(result);
348
349
  });
349
350
  if (expandedResults.length) {
@@ -354,6 +355,34 @@ var CalculationInterface = /** @class */ (function () {
354
355
  });
355
356
  });
356
357
  };
358
+ /**
359
+ * Mirror a dynamic-array anchor's spill rectangle on the local graph (a
360
+ * matrix result registers it, a scalar clears it) so structural edits can
361
+ * find the projected cells of an anchor they delete — the same bookkeeping
362
+ * the React worker hook does in `handleArrayEvaluation`.
363
+ */
364
+ CalculationInterface.prototype.trackArrayResult = function (result) {
365
+ if (!result.position)
366
+ return;
367
+ var position = result.position;
368
+ var matrix = normalizeMatrixValue(deserializeWorkerValue(result.value));
369
+ if (!matrix) {
370
+ this.graph.unregisterArrayFormula(position);
371
+ return;
372
+ }
373
+ var columns = Math.max.apply(Math, __spreadArray([1], __read(matrix.map(function (row) { return row.length; })), false));
374
+ this.graph.registerArrayFormula(position, {
375
+ sheetId: position.sheetId,
376
+ startRowIndex: position.rowIndex,
377
+ startColumnIndex: position.columnIndex,
378
+ endRowIndex: position.rowIndex + matrix.length - 1,
379
+ endColumnIndex: position.columnIndex + columns - 1,
380
+ });
381
+ };
382
+ /** The spill rectangle currently anchored at `position`, if it is a dynamic array. */
383
+ CalculationInterface.prototype.getArrayRange = function (position) {
384
+ return this.graph.getArrayRange(position);
385
+ };
357
386
  CalculationInterface.prototype.createDefaultWorker = function () {
358
387
  if (typeof require !== "function") {
359
388
  throw new Error("createCalculationWorker must be provided outside of Node.js.");
@@ -1,5 +1,12 @@
1
1
  import type { CellInterface, SelectionArea } from "@rowsncolumns/common-types";
2
2
  import type { CellData, SelectionAttributes, Sheet } from "@rowsncolumns/spreadsheet";
3
3
  import type { UseOnDeleteCellsShiftLeftProps } from "../hooks/use-on-delete-cells-shift-left";
4
- export declare const deleteCellsShiftLeft: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeCitations, }: UseOnDeleteCellsShiftLeftProps<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
4
+ /**
5
+ * Delete cells ▸ Shift cells left (SHF-04) — the horizontal twin of `deleteCellsShiftUp`: only the
6
+ * selection's rows move, the selected block is removed and every cell to its right slides left by
7
+ * the block's width. A reference to a deleted cell becomes `#REF!`; one to a cell that slid left
8
+ * follows it; a range entirely inside the block's rows that the block partially covers contracts.
9
+ * Refusals (torn merge/table/array) are decided by the hook before this runs.
10
+ */
11
+ export declare const deleteCellsShiftLeft: <T extends CellData, S extends Sheet>({ rowCount, columnCount, locale, cellXfsRegistry, sharedStringRegistry, getActiveCell, getSelections, getDependents, getSheetName, createHistory, enqueueGraphOperation, enqueueCalculation, enqueueStructureChange, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCitations, }: UseOnDeleteCellsShiftLeftProps<T, S>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
5
12
  //# sourceMappingURL=delete-cells-shift-left.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-cells-shift-left.d.ts","sourceRoot":"","sources":["../../../interface/delete-cells-shift-left.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAG9F,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,gQAgBvE,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,MAEnC,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAkMnD,CAAC"}
1
+ {"version":3,"file":"delete-cells-shift-left.d.ts","sourceRoot":"","sources":["../../../interface/delete-cells-shift-left.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAI9F;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,8RAkBvE,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,MAEnC,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAqRnD,CAAC"}