@rowsncolumns/spreadsheet-state 28.0.73 → 28.0.74

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 (133) hide show
  1. package/dist/cjs/api/advanced-filter.d.ts +72 -0
  2. package/dist/cjs/api/advanced-filter.d.ts.map +1 -0
  3. package/dist/cjs/api/advanced-filter.js +0 -0
  4. package/dist/cjs/api/goal-seek.d.ts +29 -0
  5. package/dist/cjs/api/goal-seek.d.ts.map +1 -0
  6. package/dist/cjs/api/goal-seek.js +131 -0
  7. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  8. package/dist/cjs/api/immer-utils.js +1 -0
  9. package/dist/cjs/api/paint-format.d.ts +41 -0
  10. package/dist/cjs/api/paint-format.d.ts.map +1 -0
  11. package/dist/cjs/api/paint-format.js +115 -0
  12. package/dist/cjs/api/split-text.d.ts +12 -0
  13. package/dist/cjs/api/split-text.d.ts.map +1 -1
  14. package/dist/cjs/api/split-text.js +41 -0
  15. package/dist/cjs/api/subtotal.d.ts +85 -0
  16. package/dist/cjs/api/subtotal.d.ts.map +1 -0
  17. package/dist/cjs/api/subtotal.js +250 -0
  18. package/dist/cjs/commands.d.ts +8 -0
  19. package/dist/cjs/commands.d.ts.map +1 -1
  20. package/dist/cjs/components/editors/data-validation-rule-editor.d.ts.map +1 -1
  21. package/dist/cjs/components/editors/data-validation-rule-editor.js +83 -16
  22. package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
  23. package/dist/cjs/hooks/use-calculation-worker.js +1 -0
  24. package/dist/cjs/hooks/use-on-advanced-filter.d.ts +21 -0
  25. package/dist/cjs/hooks/use-on-advanced-filter.d.ts.map +1 -0
  26. package/dist/cjs/hooks/use-on-advanced-filter.js +42 -0
  27. package/dist/cjs/hooks/use-on-goal-seek.d.ts +30 -0
  28. package/dist/cjs/hooks/use-on-goal-seek.d.ts.map +1 -0
  29. package/dist/cjs/hooks/use-on-goal-seek.js +140 -0
  30. package/dist/cjs/hooks/use-on-import-excel.d.ts +10 -1
  31. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  32. package/dist/cjs/hooks/use-on-import-excel.js +8 -4
  33. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  34. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +53 -34
  35. package/dist/cjs/hooks/use-on-subtotal.d.ts +26 -0
  36. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -0
  37. package/dist/cjs/hooks/use-on-subtotal.js +53 -0
  38. package/dist/cjs/hooks/use-paint-format.d.ts +19 -3
  39. package/dist/cjs/hooks/use-paint-format.d.ts.map +1 -1
  40. package/dist/cjs/hooks/use-paint-format.js +85 -31
  41. package/dist/cjs/hooks/use-sheet-properties.d.ts +2 -0
  42. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  43. package/dist/cjs/hooks/use-sheet-properties.js +4 -0
  44. package/dist/cjs/hooks/use-split-text-to-columns.d.ts +2 -1
  45. package/dist/cjs/hooks/use-split-text-to-columns.d.ts.map +1 -1
  46. package/dist/cjs/hooks/use-split-text-to-columns.js +3 -2
  47. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +50 -36
  48. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  49. package/dist/cjs/hooks/use-spreadsheet-state.js +97 -18
  50. package/dist/cjs/index.d.ts +8 -0
  51. package/dist/cjs/index.d.ts.map +1 -1
  52. package/dist/cjs/index.js +8 -0
  53. package/dist/cjs/interface/change-batch-stream.d.ts.map +1 -1
  54. package/dist/cjs/interface/change-batch-stream.js +12 -6
  55. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  56. package/dist/cjs/interface/change-batch.js +17 -9
  57. package/dist/cjs/interface/change-formatting.d.ts.map +1 -1
  58. package/dist/cjs/interface/change-formatting.js +30 -11
  59. package/dist/cjs/interface/split-text.d.ts +2 -1
  60. package/dist/cjs/interface/split-text.d.ts.map +1 -1
  61. package/dist/cjs/interface/split-text.js +7 -3
  62. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  63. package/dist/cjs/interface/spreadsheet-interface.js +2 -2
  64. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  65. package/dist/cjs/sheet-cell.js +7 -0
  66. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  67. package/dist/esm/api/advanced-filter.d.ts +72 -0
  68. package/dist/esm/api/advanced-filter.d.ts.map +1 -0
  69. package/dist/esm/api/advanced-filter.js +0 -0
  70. package/dist/esm/api/goal-seek.d.ts +29 -0
  71. package/dist/esm/api/goal-seek.d.ts.map +1 -0
  72. package/dist/esm/api/goal-seek.js +108 -0
  73. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  74. package/dist/esm/api/immer-utils.js +1 -0
  75. package/dist/esm/api/paint-format.d.ts +41 -0
  76. package/dist/esm/api/paint-format.d.ts.map +1 -0
  77. package/dist/esm/api/paint-format.js +77 -0
  78. package/dist/esm/api/split-text.d.ts +12 -0
  79. package/dist/esm/api/split-text.d.ts.map +1 -1
  80. package/dist/esm/api/split-text.js +28 -0
  81. package/dist/esm/api/subtotal.d.ts +85 -0
  82. package/dist/esm/api/subtotal.d.ts.map +1 -0
  83. package/dist/esm/api/subtotal.js +181 -0
  84. package/dist/esm/commands.d.ts +8 -0
  85. package/dist/esm/commands.d.ts.map +1 -1
  86. package/dist/esm/components/editors/data-validation-rule-editor.d.ts.map +1 -1
  87. package/dist/esm/components/editors/data-validation-rule-editor.js +52 -4
  88. package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
  89. package/dist/esm/hooks/use-calculation-worker.js +1 -0
  90. package/dist/esm/hooks/use-on-advanced-filter.d.ts +21 -0
  91. package/dist/esm/hooks/use-on-advanced-filter.d.ts.map +1 -0
  92. package/dist/esm/hooks/use-on-advanced-filter.js +41 -0
  93. package/dist/esm/hooks/use-on-goal-seek.d.ts +30 -0
  94. package/dist/esm/hooks/use-on-goal-seek.d.ts.map +1 -0
  95. package/dist/esm/hooks/use-on-goal-seek.js +82 -0
  96. package/dist/esm/hooks/use-on-import-excel.d.ts +10 -1
  97. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  98. package/dist/esm/hooks/use-on-import-excel.js +8 -4
  99. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  100. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +13 -13
  101. package/dist/esm/hooks/use-on-subtotal.d.ts +26 -0
  102. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -0
  103. package/dist/esm/hooks/use-on-subtotal.js +48 -0
  104. package/dist/esm/hooks/use-paint-format.d.ts +19 -3
  105. package/dist/esm/hooks/use-paint-format.d.ts.map +1 -1
  106. package/dist/esm/hooks/use-paint-format.js +71 -29
  107. package/dist/esm/hooks/use-sheet-properties.d.ts +2 -0
  108. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  109. package/dist/esm/hooks/use-sheet-properties.js +4 -0
  110. package/dist/esm/hooks/use-split-text-to-columns.d.ts +2 -1
  111. package/dist/esm/hooks/use-split-text-to-columns.d.ts.map +1 -1
  112. package/dist/esm/hooks/use-split-text-to-columns.js +3 -2
  113. package/dist/esm/hooks/use-spreadsheet-state.d.ts +50 -36
  114. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  115. package/dist/esm/hooks/use-spreadsheet-state.js +88 -16
  116. package/dist/esm/index.d.ts +8 -0
  117. package/dist/esm/index.d.ts.map +1 -1
  118. package/dist/esm/index.js +8 -0
  119. package/dist/esm/interface/change-batch-stream.d.ts.map +1 -1
  120. package/dist/esm/interface/change-batch-stream.js +12 -6
  121. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  122. package/dist/esm/interface/change-batch.js +15 -9
  123. package/dist/esm/interface/change-formatting.d.ts.map +1 -1
  124. package/dist/esm/interface/change-formatting.js +28 -11
  125. package/dist/esm/interface/split-text.d.ts +2 -1
  126. package/dist/esm/interface/split-text.d.ts.map +1 -1
  127. package/dist/esm/interface/split-text.js +6 -3
  128. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  129. package/dist/esm/interface/spreadsheet-interface.js +2 -2
  130. package/dist/esm/sheet-cell.d.ts.map +1 -1
  131. package/dist/esm/sheet-cell.js +7 -0
  132. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  133. package/package.json +18 -18
@@ -0,0 +1,181 @@
1
+ import { SUBTOTAL_FUNCTIONS, } from "@rowsncolumns/spreadsheet";
2
+ import { number2Alpha } from "@rowsncolumns/utils";
3
+ export { SUBTOTAL_FUNCTIONS };
4
+ /**
5
+ * The `SUBTOTAL(function_num, …)` code each "Use function" entry writes.
6
+ * Codes 1–11 (not 101–111): the subtotal rows Excel inserts count manually
7
+ * hidden rows.
8
+ */
9
+ export const SUBTOTAL_FUNCTION_NUMBERS = {
10
+ AVERAGE: 1,
11
+ COUNT: 2,
12
+ COUNTA: 3,
13
+ MAX: 4,
14
+ MIN: 5,
15
+ PRODUCT: 6,
16
+ STDEV: 7,
17
+ STDEVP: 8,
18
+ SUM: 9,
19
+ VAR: 10,
20
+ VARP: 11,
21
+ };
22
+ /** Excel's total-row labels: "<group> Total" per group, "Grand Total" at the bottom. */
23
+ export const SUBTOTAL_GRAND_TOTAL_LABEL = "Grand Total";
24
+ export const subtotalGroupLabel = (groupValue) => groupValue ? `${groupValue} Total` : "Total";
25
+ const isSubtotalFormula = (formula) => !!formula && /^=\s*(_xlfn\.)?SUBTOTAL\s*\(/i.test(formula);
26
+ /** What a cell shows: booleans display as `TRUE`/`FALSE` (Excel's label is "TRUE Total"). */
27
+ const displayValue = (value) => {
28
+ if (value === null || value === undefined)
29
+ return "";
30
+ if (typeof value === "boolean")
31
+ return value ? "TRUE" : "FALSE";
32
+ return String(value);
33
+ };
34
+ const columnLetters = (columnIndex) => number2Alpha(columnIndex - 1);
35
+ /**
36
+ * Plans Excel's Subtotal command over `options.range`. Consecutive rows with
37
+ * the same group-column value form a group (Excel does not sort — it expects
38
+ * the data sorted and totals each run of equal values). Each group gets a
39
+ * total row right below it holding "<value> Total" in the group column and
40
+ * `=SUBTOTAL(n, first:last)` over the group's data rows in every aggregate
41
+ * column; a grand-total row closes the range with `SUBTOTAL` over the whole
42
+ * data block (SUBTOTAL ignores the nested subtotal rows, like Excel). With
43
+ * `replaceCurrent` the range's existing outline is cleared too, so a re-apply
44
+ * yields Excel's fresh detail 2 / subtotal 1 / grand total 0 levels instead
45
+ * of nesting deeper; without it the new levels stack on the old ones (Excel's
46
+ * nested subtotals). Returns `undefined` when the range has no data rows.
47
+ */
48
+ export const planSubtotals = (options, reader) => {
49
+ const { range, groupByColumnIndex, aggregateColumnIndices, fn = "SUM", hasHeader = true, replaceCurrent = true, } = options;
50
+ const functionNumber = SUBTOTAL_FUNCTION_NUMBERS[fn];
51
+ const aggregates = [...new Set(aggregateColumnIndices)]
52
+ .filter((columnIndex) => columnIndex >= range.startColumnIndex &&
53
+ columnIndex <= range.endColumnIndex)
54
+ .sort((a, b) => a - b);
55
+ const firstDataRow = hasHeader ? range.startRowIndex + 1 : range.startRowIndex;
56
+ if (firstDataRow > range.endRowIndex)
57
+ return undefined;
58
+ // Existing subtotal rows (any aggregate column, or the group column's
59
+ // "… Total" label next to a SUBTOTAL anywhere in the range) are dropped
60
+ // first when replacing.
61
+ const deleteRows = [];
62
+ const dataRows = [];
63
+ for (let rowIndex = firstDataRow; rowIndex <= range.endRowIndex; rowIndex++) {
64
+ let isTotalRow = false;
65
+ if (replaceCurrent) {
66
+ for (let columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex && !isTotalRow; columnIndex++) {
67
+ isTotalRow = isSubtotalFormula(reader.getFormula(rowIndex, columnIndex));
68
+ }
69
+ }
70
+ if (isTotalRow)
71
+ deleteRows.push(rowIndex);
72
+ else
73
+ dataRows.push(rowIndex);
74
+ }
75
+ if (dataRows.length === 0)
76
+ return undefined;
77
+ deleteRows.sort((a, b) => b - a);
78
+ // Runs of equal group values over the surviving data rows.
79
+ const groups = [];
80
+ for (const rowIndex of dataRows) {
81
+ const label = displayValue(reader.getValue(rowIndex, groupByColumnIndex));
82
+ const last = groups[groups.length - 1];
83
+ if (last && last.label === label)
84
+ last.size++;
85
+ else
86
+ groups.push({ label, size: 1 });
87
+ }
88
+ // Lay out the final rows: data rows are compacted (deleted rows gone),
89
+ // then each group is followed by its total row.
90
+ const insertRows = [];
91
+ const writes = [];
92
+ const detailRows = [];
93
+ const startColumn = Math.min(groupByColumnIndex, ...aggregates);
94
+ const endColumn = Math.max(groupByColumnIndex, ...aggregates);
95
+ const totalRowValues = (label, firstRow, lastRow) => {
96
+ const values = [];
97
+ for (let columnIndex = startColumn; columnIndex <= endColumn; columnIndex++) {
98
+ if (columnIndex === groupByColumnIndex) {
99
+ values.push(label);
100
+ }
101
+ else if (aggregates.includes(columnIndex)) {
102
+ const letters = columnLetters(columnIndex);
103
+ values.push(`=SUBTOTAL(${functionNumber},${letters}${firstRow}:${letters}${lastRow})`);
104
+ }
105
+ else {
106
+ values.push(null);
107
+ }
108
+ }
109
+ return values;
110
+ };
111
+ // "Replace current subtotals": the surviving data rows carry the previous
112
+ // outline (detail rows at 2, or deeper after repeated applies) into their
113
+ // final positions — the inserted total rows arrive at level 0 — so record
114
+ // how many ungroup steps each needs before the fresh levels go on.
115
+ const ungroupRows = [];
116
+ let dataRowCursor = 0;
117
+ let cursor = firstDataRow;
118
+ for (const group of groups) {
119
+ const groupStart = cursor;
120
+ for (let i = 0; i < group.size; i++) {
121
+ const originalRow = dataRows[dataRowCursor++];
122
+ const level = replaceCurrent ? (reader.getOutlineLevel?.(originalRow) ?? 0) : 0;
123
+ for (let pass = 0; pass < level; pass++) {
124
+ (ungroupRows[pass] ??= []).push(cursor);
125
+ }
126
+ detailRows.push(cursor++);
127
+ }
128
+ const groupEnd = cursor - 1;
129
+ insertRows.push(cursor);
130
+ writes.push({
131
+ rowIndex: cursor,
132
+ startColumnIndex: startColumn,
133
+ values: totalRowValues(subtotalGroupLabel(group.label), groupStart, groupEnd),
134
+ });
135
+ cursor++;
136
+ }
137
+ const lastRowBeforeGrand = cursor - 1;
138
+ insertRows.push(cursor);
139
+ writes.push({
140
+ rowIndex: cursor,
141
+ startColumnIndex: startColumn,
142
+ values: totalRowValues(SUBTOTAL_GRAND_TOTAL_LABEL, firstDataRow, lastRowBeforeGrand),
143
+ });
144
+ const level1 = [];
145
+ for (let rowIndex = firstDataRow; rowIndex <= lastRowBeforeGrand; rowIndex++) {
146
+ level1.push(rowIndex);
147
+ }
148
+ return {
149
+ deleteRows,
150
+ insertRows,
151
+ writes,
152
+ ungroupRows,
153
+ outlineGroups: [level1, detailRows],
154
+ groupCount: groups.length,
155
+ resultRange: { ...range, endRowIndex: cursor },
156
+ };
157
+ };
158
+ /** Applies a {@link SubtotalPlan} in its documented order. */
159
+ export const applySubtotalPlan = (sheetId, plan, executor) => {
160
+ if (plan.deleteRows.length)
161
+ executor.onDeleteRow(sheetId, plan.deleteRows);
162
+ for (const rowIndex of plan.insertRows) {
163
+ executor.onInsertRow(sheetId, rowIndex, 1);
164
+ }
165
+ for (const write of plan.writes) {
166
+ executor.onChangeBatch(sheetId, {
167
+ startRowIndex: write.rowIndex,
168
+ endRowIndex: write.rowIndex,
169
+ startColumnIndex: write.startColumnIndex,
170
+ endColumnIndex: write.startColumnIndex + write.values.length - 1,
171
+ }, [write.values]);
172
+ }
173
+ for (const rows of plan.ungroupRows) {
174
+ if (rows.length)
175
+ executor.onUngroupRows(sheetId, rows);
176
+ }
177
+ for (const rows of plan.outlineGroups) {
178
+ if (rows.length)
179
+ executor.onGroupRows(sheetId, rows);
180
+ }
181
+ };
@@ -86,6 +86,14 @@ export type Command = {
86
86
  activeCell: CellInterface;
87
87
  selections: SelectionArea<SelectionAttributes>[];
88
88
  delimiter: string;
89
+ /** Fixed-width mode: character positions of the column breaks (wins over `delimiter`). */
90
+ columnBreaks?: number[];
91
+ } | {
92
+ command: "goal-seek";
93
+ sheetId: number;
94
+ setCell: CellInterface;
95
+ targetValue: number;
96
+ changingCell: CellInterface;
89
97
  } | {
90
98
  command: "find-replace";
91
99
  ranges: SheetRange[];
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-validation-rule-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/data-validation-rule-editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAEf,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AAyBnC,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,oBAAoB,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC/D;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,QAAQ,CAAC,CACP,IAAI,EAAE,wBAAwB,EAC9B,YAAY,EAAE,wBAAwB,GACrC,IAAI,CAAC;IACR,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,gGAOtC,6BAA6B,sBA+W/B,CAAC"}
1
+ {"version":3,"file":"data-validation-rule-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/data-validation-rule-editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAEf,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AAkCnC,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,oBAAoB,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC/D;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,QAAQ,CAAC,CACP,IAAI,EAAE,wBAAwB,EAC9B,YAAY,EAAE,wBAAwB,GACrC,IAAI,CAAC;IACR,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,gGAOtC,6BAA6B,sBA8d/B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { CrossCircledIcon } from "@rowsncolumns/icons";
2
- import { CONDITION_NONE, FormulaInput, shouldShowFromValue, shouldShowToValue, useFormulaInputState, useGetNamedRanges, VALIDATION_CONDITION_LABELS, } from "@rowsncolumns/spreadsheet";
2
+ import { buildExcelValidationRule, CONDITION_NONE, EXCEL_VALIDATION_KIND_LABELS, EXCEL_VALIDATION_OPERATOR_LABELS, FormulaInput, getValidationAnchor, isTwoSidedOperator, readExcelValidationSpec, shouldShowFromValue, shouldShowToValue, useFormulaInputState, useGetNamedRanges, VALIDATION_CONDITION_LABELS, } from "@rowsncolumns/spreadsheet";
3
3
  import { Button, IconButton, Input, Select, SelectContent, SelectItem, SelectPortal, SelectTrigger, SelectValue, Stack, useIsomorphicLayoutEffect, } from "@rowsncolumns/ui";
4
4
  import { uuid } from "@rowsncolumns/utils";
5
5
  import { useFormik } from "formik";
@@ -14,9 +14,20 @@ export const DataValidationRuleEditor = ({ sheetId, dataValidationRule, function
14
14
  return trimmed.startsWith("=") ? trimmed : `=${trimmed}`;
15
15
  };
16
16
  const getNamedRanges = useGetNamedRanges();
17
+ // Excel's Whole number / Time / Text length kinds live outside the
18
+ // ConditionType union; the select shows them as `EXCEL_KIND_*` entries and
19
+ // the rule is composed on save (see `buildExcelValidationRule`).
20
+ const [excelSpec, setExcelSpec] = useState(() => readExcelValidationSpec(dataValidationRule));
17
21
  const { values, handleSubmit, resetForm, setFieldValue } = useFormik({
18
22
  initialValues: dataValidationRule,
19
23
  onSubmit(values) {
24
+ if (excelSpec) {
25
+ const composed = buildExcelValidationRule(excelSpec, getValidationAnchor(values.ranges[0]));
26
+ if (!composed)
27
+ return;
28
+ onSubmit?.({ ...values, ...composed }, dataValidationRule);
29
+ return;
30
+ }
20
31
  onSubmit?.(values, dataValidationRule);
21
32
  },
22
33
  });
@@ -31,6 +42,11 @@ export const DataValidationRuleEditor = ({ sheetId, dataValidationRule, function
31
42
  const toValue = values?.condition?.values?.[1]?.userEnteredValue;
32
43
  const updateDataValidationInputs = (nextFromValue, nextToValue, nextType = values?.condition?.type, includeToValue = showToValue, includeFromValue = showFromValue) => {
33
44
  const shouldIncludeFrom = includeFromValue && nextFromValue !== undefined;
45
+ // The condition no longer matches the imported Excel description — drop
46
+ // it so the exporter synthesizes from `condition` instead of replaying
47
+ // the stale source rule.
48
+ if (values.xlsxSource)
49
+ setFieldValue("xlsxSource", undefined);
34
50
  if (nextType === "CUSTOM_FORMULA") {
35
51
  setFieldValue("condition.values", [
36
52
  ...(shouldIncludeFrom
@@ -98,7 +114,20 @@ export const DataValidationRuleEditor = ({ sheetId, dataValidationRule, function
98
114
  }, type: "button", className: "cursor-pointer" }, "Add range"))),
99
115
  React.createElement(Stack, { direction: "vertical", className: "gap-1 pb-1" },
100
116
  React.createElement("label", { className: "font-system text-sm" }, "Format rules"),
101
- React.createElement(Select, { value: values?.condition?.type ?? CONDITION_NONE, onValueChange: (value) => {
117
+ React.createElement(Select, { value: excelSpec
118
+ ? `${EXCEL_KIND_PREFIX}${excelSpec.kind}`
119
+ : values?.condition?.type ?? CONDITION_NONE, onValueChange: (value) => {
120
+ if (value.startsWith(EXCEL_KIND_PREFIX)) {
121
+ const kind = value.slice(EXCEL_KIND_PREFIX.length);
122
+ setExcelSpec((prev) => ({
123
+ kind,
124
+ operator: prev?.operator ?? "between",
125
+ formula1: prev?.kind === kind ? prev.formula1 : undefined,
126
+ formula2: prev?.kind === kind ? prev.formula2 : undefined,
127
+ }));
128
+ return;
129
+ }
130
+ setExcelSpec(undefined);
102
131
  const nextShowTo = shouldShowToValue(value);
103
132
  const nextShowFrom = shouldShowFromValue(value);
104
133
  setFieldValue("condition.type", value);
@@ -114,13 +143,30 @@ export const DataValidationRuleEditor = ({ sheetId, dataValidationRule, function
114
143
  React.createElement(SelectPortal, null,
115
144
  React.createElement(SelectContent, null,
116
145
  React.createElement(SelectItem, { value: CONDITION_NONE }, "None"),
146
+ EXCEL_VALIDATION_KIND_LABELS.map(({ kind, label }) => (React.createElement(SelectItem, { key: kind, value: `${EXCEL_KIND_PREFIX}${kind}` }, label))),
117
147
  VALIDATION_CONDITION_LABELS.map(({ condition, label }) => {
118
148
  return (React.createElement(SelectItem, { key: condition, value: condition }, label));
119
149
  }))))),
150
+ excelSpec ? (React.createElement(Stack, { direction: "vertical", className: "gap-1 pb-3" },
151
+ React.createElement(Select, { value: excelSpec.operator, onValueChange: (operator) => setExcelSpec((prev) => (prev ? { ...prev, operator } : prev)) },
152
+ React.createElement(SelectTrigger, { className: "mb-1 text-sm", "aria-label": "Data" },
153
+ React.createElement(SelectValue, { placeholder: "between" })),
154
+ React.createElement(SelectPortal, null,
155
+ React.createElement(SelectContent, null, EXCEL_VALIDATION_OPERATOR_LABELS.map(({ operator, label }) => (React.createElement(SelectItem, { key: operator, value: operator }, label)))))),
156
+ React.createElement(Input, { value: excelSpec.formula1 ?? "", type: "text", name: "excelFormula1", onChange: (e) => setExcelSpec((prev) => prev ? { ...prev, formula1: e.target.value } : prev), className: "text-xs", placeholder: isTwoSidedOperator(excelSpec.operator)
157
+ ? excelSpec.kind === "time"
158
+ ? "Start time"
159
+ : "Minimum"
160
+ : excelSpec.kind === "time"
161
+ ? "Time"
162
+ : excelSpec.kind === "textLength"
163
+ ? "Length"
164
+ : "Value" }),
165
+ isTwoSidedOperator(excelSpec.operator) ? (React.createElement(Input, { value: excelSpec.formula2 ?? "", type: "text", name: "excelFormula2", onChange: (e) => setExcelSpec((prev) => prev ? { ...prev, formula2: e.target.value } : prev), className: "text-xs", placeholder: excelSpec.kind === "time" ? "End time" : "Maximum" })) : null)) : null,
120
166
  React.createElement(Stack, { direction: "vertical", className: "gap-1 pb-3" },
121
- showFromValue ? (values.condition?.type === "CUSTOM_FORMULA" ||
167
+ !excelSpec && showFromValue ? (values.condition?.type === "CUSTOM_FORMULA" ||
122
168
  values.condition?.type === "ONE_OF_RANGE" ? (React.createElement(FormulaInput, { onChange: (value) => updateDataValidationInputs(value, undefined, values.condition?.type ?? undefined, false, true), value: fromValue ?? "=", required: true, placeholder: "Enter a formula", autoFocus: true, functionDescriptions: functionDescriptions, getNamedRanges: getNamedRanges })) : (React.createElement(Input, { value: fromValue, type: "text", name: "fromValue", onChange: (e) => updateDataValidationInputs(e.target.value, toValue), className: "text-xs", placeholder: "Value or formula" }))) : null,
123
- showToValue ? (React.createElement(Input, { value: toValue, type: "text", name: "toValue", onChange: (e) => updateDataValidationInputs(fromValue, e.target.value), className: "text-xs", placeholder: "Value or formula" })) : null),
169
+ !excelSpec && showToValue ? (React.createElement(Input, { value: toValue, type: "text", name: "toValue", onChange: (e) => updateDataValidationInputs(fromValue, e.target.value), className: "text-xs", placeholder: "Value or formula" })) : null),
124
170
  React.createElement(Stack, { direction: "vertical", className: "gap-1 pb-1 flex-row" },
125
171
  React.createElement("input", { type: "checkbox", checked: values.allowBlank ?? undefined, onChange: (e) => {
126
172
  setFieldValue("allowBlank", e.target.checked);
@@ -154,6 +200,8 @@ export const DataValidationRuleEditor = ({ sheetId, dataValidationRule, function
154
200
  React.createElement(Button, { type: "submit", variant: "primary", size: "xs" }, "Save"),
155
201
  React.createElement(Button, { size: "xs", onClick: onCancelForm, type: "button" }, "Cancel"))));
156
202
  };
203
+ /** Select values for the Excel kinds (kept out of the ConditionType union). */
204
+ const EXCEL_KIND_PREFIX = "EXCEL_KIND_";
157
205
  const DataValidationRangeInput = ({ sheetId, range, autoFocus, onValidRange, }) => {
158
206
  const formulaInput = useFormulaInputState(sheetId, range);
159
207
  return (React.createElement(FormulaInput, { onChange: (value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBA8/DF,CAAC"}
1
+ {"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA8KF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBA+/DF,CAAC"}
@@ -1629,6 +1629,7 @@ export const useCalculationWorker = (props) => {
1629
1629
  position,
1630
1630
  formula,
1631
1631
  precedents: dependencies,
1632
+ cellFormulas: graph.collectCellFormulas(formula, dependencies),
1632
1633
  isPreview: !disablePreview,
1633
1634
  },
1634
1635
  ],
@@ -0,0 +1,21 @@
1
+ import type { GridRange } from "@rowsncolumns/common-types";
2
+ import { type AdvancedFilterOptions, type AdvancedFilterPlan, type AdvancedFilterPlanExecutor } from "../api/advanced-filter";
3
+ import type { useSheetProperties } from "./use-sheet-properties";
4
+ export type { AdvancedFilterOptions, AdvancedFilterPlan };
5
+ export type UseOnAdvancedFilterProps = {
6
+ getEffectiveValue: ReturnType<typeof useSheetProperties>["getEffectiveValue"];
7
+ getFormattedValue: ReturnType<typeof useSheetProperties>["getFormattedValue"];
8
+ onHideRow: AdvancedFilterPlanExecutor["onHideRow"];
9
+ onShowRow: AdvancedFilterPlanExecutor["onShowRow"];
10
+ onChangeBatch: (sheetId: number, ranges: GridRange, values: (string | number | boolean | null)[][]) => void;
11
+ };
12
+ /**
13
+ * Excel's Data → Sort & Filter → Advanced, composed over the existing
14
+ * hide/show-row and batch-write callbacks so both engines execute it through
15
+ * the same streamed commands. Records are compared by their effective value
16
+ * (numbers stay numeric) and fall back to the displayed text. Returns the
17
+ * applied plan, or `undefined` when the list has no records, the copy
18
+ * destination is missing / protected, or the sheet cannot be edited.
19
+ */
20
+ export declare const useOnAdvancedFilter: ({ getEffectiveValue, getFormattedValue, onHideRow, onShowRow, onChangeBatch, }: UseOnAdvancedFilterProps) => (sheetId: number, options: AdvancedFilterOptions) => AdvancedFilterPlan | undefined;
21
+ //# sourceMappingURL=use-on-advanced-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-advanced-filter.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-advanced-filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAGhC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;AAE1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACnD,SAAS,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACnD,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,KAC3C,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,gFAMjC,wBAAwB,eAKb,MAAM,WAAW,qBAAqB,KAAG,kBAAkB,GAAG,SA2B3E,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { useCallback } from "react";
2
+ import { applyAdvancedFilterPlan, planAdvancedFilter, } from "../api/advanced-filter";
3
+ import { useCanEditCellRange, useCanEditSheet } from "./use-can-edit-cellrange";
4
+ /**
5
+ * Excel's Data → Sort & Filter → Advanced, composed over the existing
6
+ * hide/show-row and batch-write callbacks so both engines execute it through
7
+ * the same streamed commands. Records are compared by their effective value
8
+ * (numbers stay numeric) and fall back to the displayed text. Returns the
9
+ * applied plan, or `undefined` when the list has no records, the copy
10
+ * destination is missing / protected, or the sheet cannot be edited.
11
+ */
12
+ export const useOnAdvancedFilter = ({ getEffectiveValue, getFormattedValue, onHideRow, onShowRow, onChangeBatch, }) => {
13
+ const canEditCellRange = useCanEditCellRange();
14
+ const canEditSheet = useCanEditSheet();
15
+ return useCallback((sheetId, options) => {
16
+ if (!canEditSheet(sheetId)) {
17
+ console.debug("This sheet is protected, users cannot filter it.");
18
+ return undefined;
19
+ }
20
+ const plan = planAdvancedFilter(options, (rowIndex, columnIndex) => {
21
+ const value = getEffectiveValue(sheetId, rowIndex, columnIndex);
22
+ return value ?? getFormattedValue(sheetId, rowIndex, columnIndex);
23
+ });
24
+ if (!plan)
25
+ return undefined;
26
+ if (plan.copy && !canEditCellRange(sheetId, plan.copy.range)) {
27
+ console.debug("This range is protected, users cannot edit this cell range.");
28
+ return undefined;
29
+ }
30
+ applyAdvancedFilterPlan(sheetId, plan, { onHideRow, onShowRow, onChangeBatch });
31
+ return plan;
32
+ }, [
33
+ canEditSheet,
34
+ canEditCellRange,
35
+ getEffectiveValue,
36
+ getFormattedValue,
37
+ onHideRow,
38
+ onShowRow,
39
+ onChangeBatch,
40
+ ]);
41
+ };
@@ -0,0 +1,30 @@
1
+ import type { CellInterface } from "@rowsncolumns/common-types";
2
+ import { type GoalSeekResult } from "../api/goal-seek";
3
+ import type { useCalculation } from "./use-calculation";
4
+ import type { useOnChange } from "./use-on-change";
5
+ import type { useSheetProperties } from "./use-sheet-properties";
6
+ export type { GoalSeekResult };
7
+ export type UseOnGoalSeekProps = {
8
+ getFormulaValue: ReturnType<typeof useSheetProperties>["getFormulaValue"];
9
+ getEffectiveValue: ReturnType<typeof useSheetProperties>["getEffectiveValue"];
10
+ /** The calculator's scratch evaluation (UNFORMATTED results). */
11
+ onRequestCalculate: ReturnType<typeof useCalculation>["onRequestCalculate"];
12
+ getDependents: ReturnType<typeof useCalculation>["getDependents"];
13
+ onChange: ReturnType<typeof useOnChange>;
14
+ };
15
+ /**
16
+ * Excel's Goal Seek (Data → What-If Analysis): find the value of
17
+ * `changingCell` that makes the formula in `setCell` evaluate to
18
+ * `targetValue`. Every trial is a scratch evaluation — the changing cell is
19
+ * pinned through the calculator's override map and the formula cells between
20
+ * it and the set cell (its transitive dependents, in dependency order) are
21
+ * re-evaluated into the same map, so nothing is written until the search
22
+ * ends. The final value is committed through `onChange` (one undo step,
23
+ * streamed to any engine consumer like a typed edit).
24
+ *
25
+ * Resolves to `undefined` when the set cell holds no formula or the changing
26
+ * cell is protected; otherwise the {@link GoalSeekResult} — Excel reports
27
+ * "found a solution" / "may not have found a solution" from `status`.
28
+ */
29
+ export declare const useOnGoalSeek: ({ getFormulaValue, getEffectiveValue, onRequestCalculate, getDependents, onChange, }: UseOnGoalSeekProps) => (sheetId: number, setCell: CellInterface, targetValue: number, changingCell: CellInterface) => Promise<GoalSeekResult | undefined>;
30
+ //# sourceMappingURL=use-on-goal-seek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-goal-seek.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-goal-seek.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC1E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iEAAiE;IACjE,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,QAAQ,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CAC1C,CAAC;AAUF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GAAI,sFAM3B,kBAAkB,eAKN,MAAM,WACN,aAAa,eACT,MAAM,gBACL,aAAa,KAC1B,OAAO,CAAC,cAAc,GAAG,SAAS,CA+DxC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { isCellNode, makeKey } from "@rowsncolumns/dag";
2
+ import { useCallback } from "react";
3
+ import { goalSeek } from "../api/goal-seek";
4
+ import { useCanEditCellRange } from "./use-can-edit-cellrange";
5
+ /** Cap on the formula chain re-evaluated per trial (a runaway dependency fan-out). */
6
+ const MAX_AFFECTED_CELLS = 2000;
7
+ const sameCell = (a, sheetId, b) => (a.sheetId ?? sheetId) === sheetId &&
8
+ a.rowIndex === b.rowIndex &&
9
+ a.columnIndex === b.columnIndex;
10
+ /**
11
+ * Excel's Goal Seek (Data → What-If Analysis): find the value of
12
+ * `changingCell` that makes the formula in `setCell` evaluate to
13
+ * `targetValue`. Every trial is a scratch evaluation — the changing cell is
14
+ * pinned through the calculator's override map and the formula cells between
15
+ * it and the set cell (its transitive dependents, in dependency order) are
16
+ * re-evaluated into the same map, so nothing is written until the search
17
+ * ends. The final value is committed through `onChange` (one undo step,
18
+ * streamed to any engine consumer like a typed edit).
19
+ *
20
+ * Resolves to `undefined` when the set cell holds no formula or the changing
21
+ * cell is protected; otherwise the {@link GoalSeekResult} — Excel reports
22
+ * "found a solution" / "may not have found a solution" from `status`.
23
+ */
24
+ export const useOnGoalSeek = ({ getFormulaValue, getEffectiveValue, onRequestCalculate, getDependents, onChange, }) => {
25
+ const canEditCellRange = useCanEditCellRange();
26
+ return useCallback(async (sheetId, setCell, targetValue, changingCell) => {
27
+ if (!Number.isFinite(targetValue))
28
+ return undefined;
29
+ if (!canEditCellRange(sheetId, changingCell)) {
30
+ console.debug("This range is protected, users cannot edit this cell range.");
31
+ return undefined;
32
+ }
33
+ const formula = getFormulaValue(sheetId, setCell.rowIndex, setCell.columnIndex);
34
+ if (!formula)
35
+ return undefined;
36
+ if (sameCell(setCell, sheetId, changingCell))
37
+ return undefined;
38
+ const changingPosition = { sheetId, ...changingCell };
39
+ // Formula cells downstream of the changing cell, in dependency order,
40
+ // minus the set cell itself (evaluated last, from the trial map).
41
+ const affected = [];
42
+ for (const node of getDependents(changingPosition)) {
43
+ if (!isCellNode(node))
44
+ continue;
45
+ const { position } = node;
46
+ if (sameCell(position, sheetId, setCell) && position.sheetId === sheetId)
47
+ continue;
48
+ if (position.conditionalFormatId != null || position.dataValidationId != null)
49
+ continue;
50
+ affected.push(position);
51
+ if (affected.length >= MAX_AFFECTED_CELLS)
52
+ break;
53
+ }
54
+ const evaluate = async (trial) => {
55
+ const overrides = new Map([[makeKey(changingPosition), trial]]);
56
+ const scratch = async (text, position) => onRequestCalculate(text, position.sheetId, position.rowIndex, position.columnIndex, {
57
+ overrides,
58
+ disablePreview: true,
59
+ });
60
+ for (const position of affected) {
61
+ const cellFormula = getFormulaValue(position.sheetId, position.rowIndex, position.columnIndex);
62
+ if (!cellFormula)
63
+ continue;
64
+ const value = await scratch(cellFormula, position);
65
+ // An errored intermediate reads as an error in the set cell too,
66
+ // which the solver treats as an unusable trial.
67
+ overrides.set(makeKey(position), value instanceof Error ? undefined : value);
68
+ }
69
+ const result = await scratch(formula, { sheetId, ...setCell });
70
+ return typeof result === "number" && Number.isFinite(result) ? result : undefined;
71
+ };
72
+ const current = getEffectiveValue(sheetId, changingCell.rowIndex, changingCell.columnIndex);
73
+ const initialValue = typeof current === "number"
74
+ ? current
75
+ : typeof current === "string" && current.trim() !== "" && Number.isFinite(Number(current))
76
+ ? Number(current)
77
+ : 0;
78
+ const result = await goalSeek({ evaluate, targetValue, initialValue });
79
+ onChange(sheetId, changingCell, String(result.value), undefined);
80
+ return result;
81
+ }, [canEditCellRange, getFormulaValue, getEffectiveValue, onRequestCalculate, getDependents, onChange]);
82
+ };
@@ -19,6 +19,7 @@ export type UseOnImportExcelFileProps<T extends CellData, S extends Sheet> = {
19
19
  onChangeCellXfs?: UseSpreadsheetProps<T, S>["onChangeCellXfs"];
20
20
  onRequestFonts: UseSpreadsheetProps<T, S>["onRequestFonts"];
21
21
  onChangeTheme: UseSpreadsheetProps<T, S>["onChangeTheme"];
22
+ onChangeNamedCellStyles?: UseSpreadsheetProps<T, S>["onChangeNamedCellStyles"];
22
23
  onChangeSlicers: UseSpreadsheetProps<T, S>["onChangeSlicers"];
23
24
  /**
24
25
  * Phase D1 — pivot table import. Worker emits
@@ -39,7 +40,15 @@ export type UseOnImportExcelFileProps<T extends CellData, S extends Sheet> = {
39
40
  export type ExcelImportResponse = {
40
41
  requiresRecalc?: boolean;
41
42
  iterativeCalculationOptions?: IterativeCalculationOptions;
43
+ /**
44
+ * Date system of the imported cell data — always the 1900 system: a
45
+ * `date1904` workbook is converted on import (date-formatted serials
46
+ * shifted by 1462 days), so this can be wired straight to
47
+ * `SheetCell.setUse1904` / `createExcelFile({ use1904 })`.
48
+ */
42
49
  use1904?: boolean;
50
+ /** The source workbook declared the 1904 date system (informational). */
51
+ sourceUse1904?: boolean;
43
52
  success: boolean;
44
53
  isPasswordProtected?: boolean;
45
54
  };
@@ -59,7 +68,7 @@ export type ExcelImportOptions = {
59
68
  */
60
69
  prompt?: UseSpreadsheetProps["onPrompt"];
61
70
  };
62
- export declare const useOnImportExcelFile: <T extends CellData, S extends Sheet>({ enableExcelImportHistory, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeNamedRanges, onChangeSharedStrings, onChangeConditionalFormats, onChangeDataValidations, onChangeCellXfs, onChangeCharts, onRequestFonts, onChangeTheme, onCreateDataValidationRule, onClearHistory, onChangeHistory, onChangeSlicers, onChangePivotTables, evaluateConditionalFormatting, evaluateDataValidations, clearRangeCache, onConfirm, onPrompt, }: UseOnImportExcelFileProps<T, S>) => {
71
+ export declare const useOnImportExcelFile: <T extends CellData, S extends Sheet>({ enableExcelImportHistory, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeNamedRanges, onChangeSharedStrings, onChangeConditionalFormats, onChangeDataValidations, onChangeCellXfs, onChangeCharts, onRequestFonts, onChangeTheme, onChangeNamedCellStyles, onCreateDataValidationRule, onClearHistory, onChangeHistory, onChangeSlicers, onChangePivotTables, evaluateConditionalFormatting, evaluateDataValidations, clearRangeCache, onConfirm, onPrompt, }: UseOnImportExcelFileProps<T, S>) => {
63
72
  importExcelFile: (file: File | ArrayBuffer, options?: ExcelImportOptions) => Promise<ExcelImportResponse>;
64
73
  isImportingExcelfile: boolean;
65
74
  generateStatePatches: () => Promise<SpreadsheetPatch>;