@rowsncolumns/spreadsheet 10.2.74 → 10.2.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/excel-validation-kinds.d.ts +71 -0
- package/dist/cjs/api/excel-validation-kinds.d.ts.map +1 -0
- package/dist/cjs/api/excel-validation-kinds.js +304 -0
- package/dist/cjs/api/fill-series.d.ts +38 -0
- package/dist/cjs/api/fill-series.d.ts.map +1 -0
- package/dist/cjs/api/fill-series.js +89 -0
- package/dist/cjs/api/go-to-special.d.ts +32 -0
- package/dist/cjs/api/go-to-special.d.ts.map +1 -0
- package/dist/cjs/api/go-to-special.js +111 -0
- package/dist/cjs/api/spreadsheet-api.d.ts +6 -2
- package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/cjs/api/spreadsheet-api.js +9 -3
- package/dist/cjs/api/validation-tooltip.d.ts +17 -0
- package/dist/cjs/api/validation-tooltip.d.ts.map +1 -0
- package/dist/cjs/api/validation-tooltip.js +42 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts +28 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.js +32 -0
- package/dist/cjs/atoms/fill-options.atom.d.ts +36 -0
- package/dist/cjs/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-options.atom.js +11 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.js +14 -0
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts +11 -1
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts +29 -0
- package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/goal-seek-dialog.atom.js +30 -0
- package/dist/cjs/atoms/index.d.ts +3 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +3 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.d.ts +39 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.js +30 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts +34 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.js +36 -0
- package/dist/cjs/atoms/watch-window.atom.d.ts +37 -0
- package/dist/cjs/atoms/watch-window.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/watch-window.atom.js +61 -0
- package/dist/cjs/components/advanced-filter-dialog/index.d.ts +28 -0
- package/dist/cjs/components/advanced-filter-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/advanced-filter-dialog/index.js +134 -0
- package/dist/cjs/components/calculation-options-dialog/index.d.ts +33 -0
- package/dist/cjs/components/calculation-options-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/calculation-options-dialog/index.js +69 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +328 -71
- package/dist/cjs/components/canvas-grid/typings.d.ts +31 -5
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.d.ts +30 -0
- package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.js +56 -1
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +15 -7
- package/dist/cjs/components/cell-diff/index.d.ts +3 -2
- package/dist/cjs/components/cell-diff/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.d.ts +9 -0
- package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.js +8 -1
- package/dist/cjs/components/cell-editor/helpers.spec.js +14 -0
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +7 -3
- package/dist/cjs/components/context-menu/index.d.ts +6 -1
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +146 -3
- package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-component.js +16 -1
- package/dist/cjs/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/cjs/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/fill-series-dialog/index.js +156 -0
- package/dist/cjs/components/go-to-dialog/index.d.ts +11 -1
- package/dist/cjs/components/go-to-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/go-to-dialog/index.js +67 -24
- package/dist/cjs/components/goal-seek-dialog/index.d.ts +32 -0
- package/dist/cjs/components/goal-seek-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/goal-seek-dialog/index.js +149 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/cjs/components/selection/fill-options-menu.js +65 -0
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +4 -2
- package/dist/cjs/components/selection/types.d.ts +11 -1
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/subtotal-dialog/index.d.ts +30 -0
- package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/subtotal-dialog/index.js +126 -0
- package/dist/cjs/components/text-to-columns-dialog/index.d.ts +37 -0
- package/dist/cjs/components/text-to-columns-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/text-to-columns-dialog/index.js +166 -0
- package/dist/cjs/components/toolbar/background-color-selector.d.ts +13 -1
- package/dist/cjs/components/toolbar/background-color-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/background-color-selector.js +57 -11
- package/dist/cjs/components/toolbar/cell-style-selector.d.ts +15 -2
- package/dist/cjs/components/toolbar/cell-style-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/cell-style-selector.js +56 -3
- package/dist/cjs/components/toolbar/fill-selectors.d.ts +49 -0
- package/dist/cjs/components/toolbar/fill-selectors.d.ts.map +1 -0
- package/dist/cjs/components/toolbar/fill-selectors.js +196 -0
- package/dist/cjs/components/toolbar/index.d.ts +1 -0
- package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/index.js +1 -0
- package/dist/cjs/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-format-selector.js +15 -3
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.js +23 -4
- package/dist/cjs/components/watch-window/index.d.ts +25 -0
- package/dist/cjs/components/watch-window/index.d.ts.map +1 -0
- package/dist/cjs/components/watch-window/index.js +63 -0
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +17 -6
- package/dist/cjs/hooks/use-editable.d.ts +11 -2
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +8 -0
- package/dist/cjs/hooks/use-editor-submit.d.ts +32 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +111 -2
- package/dist/cjs/hooks/use-get-tooltip.d.ts.map +1 -1
- package/dist/cjs/hooks/use-get-tooltip.js +7 -2
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +27 -14
- package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +21 -4
- package/dist/cjs/hooks/use-selection.d.ts +54 -4
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +232 -37
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +156 -5
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +19 -1
- package/dist/esm/api/excel-validation-kinds.d.ts +71 -0
- package/dist/esm/api/excel-validation-kinds.d.ts.map +1 -0
- package/dist/esm/api/excel-validation-kinds.js +287 -0
- package/dist/esm/api/fill-series.d.ts +38 -0
- package/dist/esm/api/fill-series.d.ts.map +1 -0
- package/dist/esm/api/fill-series.js +78 -0
- package/dist/esm/api/go-to-special.d.ts +32 -0
- package/dist/esm/api/go-to-special.d.ts.map +1 -0
- package/dist/esm/api/go-to-special.js +96 -0
- package/dist/esm/api/spreadsheet-api.d.ts +6 -2
- package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/esm/api/spreadsheet-api.js +8 -3
- package/dist/esm/api/validation-tooltip.d.ts +17 -0
- package/dist/esm/api/validation-tooltip.d.ts.map +1 -0
- package/dist/esm/api/validation-tooltip.js +34 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts +28 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.js +21 -0
- package/dist/esm/atoms/fill-options.atom.d.ts +36 -0
- package/dist/esm/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-options.atom.js +5 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-series-dialog.atom.js +9 -0
- package/dist/esm/atoms/go-to-dialog.atom.d.ts +11 -1
- package/dist/esm/atoms/go-to-dialog.atom.d.ts.map +1 -1
- package/dist/esm/atoms/goal-seek-dialog.atom.d.ts +29 -0
- package/dist/esm/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/goal-seek-dialog.atom.js +21 -0
- package/dist/esm/atoms/index.d.ts +3 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +3 -0
- package/dist/esm/atoms/subtotal-dialog.atom.d.ts +39 -0
- package/dist/esm/atoms/subtotal-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/subtotal-dialog.atom.js +21 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts +34 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.js +25 -0
- package/dist/esm/atoms/watch-window.atom.d.ts +37 -0
- package/dist/esm/atoms/watch-window.atom.d.ts.map +1 -0
- package/dist/esm/atoms/watch-window.atom.js +37 -0
- package/dist/esm/components/advanced-filter-dialog/index.d.ts +28 -0
- package/dist/esm/components/advanced-filter-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/advanced-filter-dialog/index.js +125 -0
- package/dist/esm/components/calculation-options-dialog/index.d.ts +33 -0
- package/dist/esm/components/calculation-options-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/calculation-options-dialog/index.js +61 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +266 -26
- package/dist/esm/components/canvas-grid/typings.d.ts +31 -5
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.d.ts +30 -0
- package/dist/esm/components/cell/alignment.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.js +51 -0
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +16 -8
- package/dist/esm/components/cell-diff/index.d.ts +3 -2
- package/dist/esm/components/cell-diff/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.d.ts +9 -0
- package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.js +6 -0
- package/dist/esm/components/cell-editor/helpers.spec.js +15 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +8 -4
- package/dist/esm/components/context-menu/index.d.ts +6 -1
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +139 -4
- package/dist/esm/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-component.js +17 -1
- package/dist/esm/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/esm/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/fill-series-dialog/index.js +151 -0
- package/dist/esm/components/go-to-dialog/index.d.ts +11 -1
- package/dist/esm/components/go-to-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/go-to-dialog/index.js +63 -23
- package/dist/esm/components/goal-seek-dialog/index.d.ts +32 -0
- package/dist/esm/components/goal-seek-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/goal-seek-dialog/index.js +125 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/esm/components/selection/fill-options-menu.js +63 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +4 -2
- package/dist/esm/components/selection/types.d.ts +11 -1
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/subtotal-dialog/index.d.ts +30 -0
- package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/subtotal-dialog/index.js +115 -0
- package/dist/esm/components/text-to-columns-dialog/index.d.ts +37 -0
- package/dist/esm/components/text-to-columns-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/text-to-columns-dialog/index.js +147 -0
- package/dist/esm/components/toolbar/background-color-selector.d.ts +13 -1
- package/dist/esm/components/toolbar/background-color-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/background-color-selector.js +61 -11
- package/dist/esm/components/toolbar/cell-style-selector.d.ts +15 -2
- package/dist/esm/components/toolbar/cell-style-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/cell-style-selector.js +46 -2
- package/dist/esm/components/toolbar/fill-selectors.d.ts +49 -0
- package/dist/esm/components/toolbar/fill-selectors.d.ts.map +1 -0
- package/dist/esm/components/toolbar/fill-selectors.js +162 -0
- package/dist/esm/components/toolbar/index.d.ts +1 -0
- package/dist/esm/components/toolbar/index.d.ts.map +1 -1
- package/dist/esm/components/toolbar/index.js +1 -0
- package/dist/esm/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-format-selector.js +14 -2
- package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
- package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-horizontal-align-selector.js +21 -5
- package/dist/esm/components/watch-window/index.d.ts +25 -0
- package/dist/esm/components/watch-window/index.d.ts.map +1 -0
- package/dist/esm/components/watch-window/index.js +54 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +17 -6
- package/dist/esm/hooks/use-editable.d.ts +11 -2
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +8 -0
- package/dist/esm/hooks/use-editor-submit.d.ts +32 -3
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +82 -3
- package/dist/esm/hooks/use-get-tooltip.d.ts.map +1 -1
- package/dist/esm/hooks/use-get-tooltip.js +7 -2
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +27 -14
- package/dist/esm/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +22 -5
- package/dist/esm/hooks/use-selection.d.ts +54 -4
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +220 -36
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +11 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +156 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +18 -0
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { cellToAddress } from "@rowsncolumns/utils";
|
|
2
|
+
export const EXCEL_VALIDATION_KIND_LABELS = [
|
|
3
|
+
{ kind: "whole", label: "Whole number" },
|
|
4
|
+
{ kind: "time", label: "Time" },
|
|
5
|
+
{ kind: "textLength", label: "Text length" },
|
|
6
|
+
];
|
|
7
|
+
export const EXCEL_VALIDATION_OPERATOR_LABELS = [
|
|
8
|
+
{ operator: "between", label: "between" },
|
|
9
|
+
{ operator: "notBetween", label: "not between" },
|
|
10
|
+
{ operator: "equal", label: "equal to" },
|
|
11
|
+
{ operator: "notEqual", label: "not equal to" },
|
|
12
|
+
{ operator: "greaterThan", label: "greater than" },
|
|
13
|
+
{ operator: "lessThan", label: "less than" },
|
|
14
|
+
{ operator: "greaterThanOrEqual", label: "greater than or equal to" },
|
|
15
|
+
{ operator: "lessThanOrEqual", label: "less than or equal to" },
|
|
16
|
+
];
|
|
17
|
+
const EXCEL_KINDS = new Set(["whole", "time", "textLength"]);
|
|
18
|
+
const EXCEL_OPERATORS = new Set(EXCEL_VALIDATION_OPERATOR_LABELS.map((entry) => entry.operator));
|
|
19
|
+
/** Two-sided operators need both bounds. */
|
|
20
|
+
export const isTwoSidedOperator = (operator) => operator === "between" || operator === "notBetween";
|
|
21
|
+
const NUMBER_CONDITION_BY_OPERATOR = {
|
|
22
|
+
between: "NUMBER_BETWEEN",
|
|
23
|
+
notBetween: "NUMBER_NOT_BETWEEN",
|
|
24
|
+
equal: "NUMBER_EQ",
|
|
25
|
+
notEqual: "NUMBER_NOT_EQ",
|
|
26
|
+
greaterThan: "NUMBER_GREATER",
|
|
27
|
+
lessThan: "NUMBER_LESS",
|
|
28
|
+
greaterThanOrEqual: "NUMBER_GREATER_THAN_EQ",
|
|
29
|
+
lessThanOrEqual: "NUMBER_LESS_THAN_EQ",
|
|
30
|
+
};
|
|
31
|
+
const stripEquals = (text) => {
|
|
32
|
+
const trimmed = text?.trim() ?? "";
|
|
33
|
+
return trimmed.startsWith("=") ? trimmed.slice(1).trim() : trimmed;
|
|
34
|
+
};
|
|
35
|
+
const TIME_PATTERN = /^(\d{1,2})(?::(\d{1,2}))?(?::(\d{1,2}))?\s*([AaPp][Mm]?)?$/;
|
|
36
|
+
/**
|
|
37
|
+
* Parse a typed time (`9:30`, `9:30 AM`, `21:05:10`, `24:00`, `0.5`) to
|
|
38
|
+
* Excel's serial. A bare non-negative number is taken as a serial already and
|
|
39
|
+
* kept whole (Excel's Time validation compares the full serial, so a
|
|
40
|
+
* date-time is out of a same-day range). `undefined` when unparsable.
|
|
41
|
+
*/
|
|
42
|
+
export const parseTimeToSerial = (text) => {
|
|
43
|
+
const trimmed = text?.trim() ?? "";
|
|
44
|
+
if (!trimmed)
|
|
45
|
+
return undefined;
|
|
46
|
+
const asNumber = Number(trimmed);
|
|
47
|
+
if (Number.isFinite(asNumber)) {
|
|
48
|
+
return asNumber >= 0 ? asNumber : undefined;
|
|
49
|
+
}
|
|
50
|
+
const match = TIME_PATTERN.exec(trimmed);
|
|
51
|
+
if (!match)
|
|
52
|
+
return undefined;
|
|
53
|
+
let hours = Number(match[1]);
|
|
54
|
+
const minutes = Number(match[2] ?? 0);
|
|
55
|
+
const seconds = Number(match[3] ?? 0);
|
|
56
|
+
const meridiem = match[4]?.toLowerCase();
|
|
57
|
+
if (minutes > 59 || seconds > 59)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (meridiem) {
|
|
60
|
+
if (hours < 1 || hours > 12)
|
|
61
|
+
return undefined;
|
|
62
|
+
if (meridiem.startsWith("p") && hours !== 12)
|
|
63
|
+
hours += 12;
|
|
64
|
+
if (meridiem.startsWith("a") && hours === 12)
|
|
65
|
+
hours = 0;
|
|
66
|
+
}
|
|
67
|
+
else if (hours > 24 || (hours === 24 && (minutes > 0 || seconds > 0))) {
|
|
68
|
+
// Excel accepts `24:00` as exactly 1.0 (midnight at the end of the day).
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return (hours * 3600 + minutes * 60 + seconds) / 86400;
|
|
72
|
+
};
|
|
73
|
+
/** Render a day-fraction serial as `h:mm AM/PM` (seconds when non-zero). */
|
|
74
|
+
export const formatTimeSerial = (serial) => {
|
|
75
|
+
const total = Math.round((serial - Math.floor(serial)) * 86400) % 86400;
|
|
76
|
+
const hours24 = Math.floor(total / 3600);
|
|
77
|
+
const minutes = Math.floor((total % 3600) / 60);
|
|
78
|
+
const seconds = total % 60;
|
|
79
|
+
const meridiem = hours24 >= 12 ? "PM" : "AM";
|
|
80
|
+
const hours12 = hours24 % 12 === 0 ? 12 : hours24 % 12;
|
|
81
|
+
const mm = String(minutes).padStart(2, "0");
|
|
82
|
+
const ss = seconds ? `:${String(seconds).padStart(2, "0")}` : "";
|
|
83
|
+
return `${hours12}:${mm}${ss} ${meridiem}`;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* A bound as it goes into a formula / `xlsxSource`: references and formulas
|
|
87
|
+
* verbatim (no `=`), times as serials, numbers as typed.
|
|
88
|
+
*/
|
|
89
|
+
const toBoundFormula = (kind, text) => {
|
|
90
|
+
const raw = text?.trim() ?? "";
|
|
91
|
+
if (!raw)
|
|
92
|
+
return undefined;
|
|
93
|
+
if (raw.startsWith("="))
|
|
94
|
+
return stripEquals(raw);
|
|
95
|
+
if (kind === "time") {
|
|
96
|
+
const serial = parseTimeToSerial(raw);
|
|
97
|
+
return serial === undefined ? raw : String(serial);
|
|
98
|
+
}
|
|
99
|
+
return raw;
|
|
100
|
+
};
|
|
101
|
+
/** The A1 anchor (range top-left) a relative custom formula is written against. */
|
|
102
|
+
export const getValidationAnchor = (range) => cellToAddress(range
|
|
103
|
+
? { rowIndex: range.startRowIndex, columnIndex: range.startColumnIndex }
|
|
104
|
+
: { rowIndex: 1, columnIndex: 1 }) ?? "A1";
|
|
105
|
+
const comparison = (subject, operator, a, b) => {
|
|
106
|
+
switch (operator) {
|
|
107
|
+
case "between":
|
|
108
|
+
return b === undefined
|
|
109
|
+
? undefined
|
|
110
|
+
: `AND(${subject}>=${a},${subject}<=${b})`;
|
|
111
|
+
case "notBetween":
|
|
112
|
+
return b === undefined
|
|
113
|
+
? undefined
|
|
114
|
+
: `OR(${subject}<${a},${subject}>${b})`;
|
|
115
|
+
case "equal":
|
|
116
|
+
return `${subject}=${a}`;
|
|
117
|
+
case "notEqual":
|
|
118
|
+
return `${subject}<>${a}`;
|
|
119
|
+
case "greaterThan":
|
|
120
|
+
return `${subject}>${a}`;
|
|
121
|
+
case "lessThan":
|
|
122
|
+
return `${subject}<${a}`;
|
|
123
|
+
case "greaterThanOrEqual":
|
|
124
|
+
return `${subject}>=${a}`;
|
|
125
|
+
case "lessThanOrEqual":
|
|
126
|
+
return `${subject}<=${a}`;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Build the `condition` + `xlsxSource` pair for an Excel kind. Returns
|
|
131
|
+
* `undefined` when a required bound is missing (the editor keeps the form
|
|
132
|
+
* open in that case).
|
|
133
|
+
*/
|
|
134
|
+
export const buildExcelValidationRule = (spec, anchor) => {
|
|
135
|
+
const formula1 = toBoundFormula(spec.kind, spec.formula1);
|
|
136
|
+
const formula2 = toBoundFormula(spec.kind, spec.formula2);
|
|
137
|
+
if (!formula1)
|
|
138
|
+
return undefined;
|
|
139
|
+
if (isTwoSidedOperator(spec.operator) && !formula2)
|
|
140
|
+
return undefined;
|
|
141
|
+
const xlsxSource = {
|
|
142
|
+
type: spec.kind,
|
|
143
|
+
operator: spec.operator,
|
|
144
|
+
formula1,
|
|
145
|
+
...(isTwoSidedOperator(spec.operator) ? { formula2 } : {}),
|
|
146
|
+
};
|
|
147
|
+
if (spec.kind === "time") {
|
|
148
|
+
const condition = {
|
|
149
|
+
type: NUMBER_CONDITION_BY_OPERATOR[spec.operator],
|
|
150
|
+
values: [
|
|
151
|
+
{
|
|
152
|
+
userEnteredValue: /^[A-Za-z$'!]/.test(formula1)
|
|
153
|
+
? `=${formula1}`
|
|
154
|
+
: formula1,
|
|
155
|
+
},
|
|
156
|
+
...(isTwoSidedOperator(spec.operator) && formula2
|
|
157
|
+
? [
|
|
158
|
+
{
|
|
159
|
+
userEnteredValue: /^[A-Za-z$'!]/.test(formula2)
|
|
160
|
+
? `=${formula2}`
|
|
161
|
+
: formula2,
|
|
162
|
+
},
|
|
163
|
+
]
|
|
164
|
+
: []),
|
|
165
|
+
],
|
|
166
|
+
};
|
|
167
|
+
return { condition, xlsxSource };
|
|
168
|
+
}
|
|
169
|
+
const subject = spec.kind === "textLength" ? `LEN(${anchor})` : anchor;
|
|
170
|
+
const body = comparison(subject, spec.operator, formula1, formula2);
|
|
171
|
+
if (!body)
|
|
172
|
+
return undefined;
|
|
173
|
+
const formula = spec.kind === "whole"
|
|
174
|
+
? `=AND(ISNUMBER(${anchor}),${anchor}=INT(${anchor}),${body})`
|
|
175
|
+
: `=${body}`;
|
|
176
|
+
return {
|
|
177
|
+
condition: {
|
|
178
|
+
type: "CUSTOM_FORMULA",
|
|
179
|
+
values: [{ userEnteredValue: formula }],
|
|
180
|
+
},
|
|
181
|
+
xlsxSource,
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Read an Excel kind back from a rule's `xlsxSource` (imported or authored
|
|
186
|
+
* here); `undefined` for every other rule. Time bounds come back as
|
|
187
|
+
* `h:mm AM/PM` text so the editor shows what the user would type.
|
|
188
|
+
*/
|
|
189
|
+
export const readExcelValidationSpec = (rule) => {
|
|
190
|
+
const source = rule?.xlsxSource;
|
|
191
|
+
if (!source || !EXCEL_KINDS.has(source.type))
|
|
192
|
+
return undefined;
|
|
193
|
+
const operator = (source.operator && EXCEL_OPERATORS.has(source.operator)
|
|
194
|
+
? source.operator
|
|
195
|
+
: "between");
|
|
196
|
+
const kind = source.type;
|
|
197
|
+
const display = (formula) => {
|
|
198
|
+
if (formula === undefined || formula === "")
|
|
199
|
+
return undefined;
|
|
200
|
+
const asNumber = Number(formula);
|
|
201
|
+
if (Number.isFinite(asNumber)) {
|
|
202
|
+
return kind === "time" ? formatTimeSerial(asNumber) : formula;
|
|
203
|
+
}
|
|
204
|
+
return `=${formula}`;
|
|
205
|
+
};
|
|
206
|
+
return {
|
|
207
|
+
kind,
|
|
208
|
+
operator,
|
|
209
|
+
formula1: display(source.formula1),
|
|
210
|
+
formula2: display(source.formula2),
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
const compare = (subject, operator, a, b) => {
|
|
214
|
+
switch (operator) {
|
|
215
|
+
case "between":
|
|
216
|
+
return (b !== undefined &&
|
|
217
|
+
subject >= Math.min(a, b) &&
|
|
218
|
+
subject <= Math.max(a, b));
|
|
219
|
+
case "notBetween":
|
|
220
|
+
return (b !== undefined &&
|
|
221
|
+
(subject < Math.min(a, b) || subject > Math.max(a, b)));
|
|
222
|
+
case "equal":
|
|
223
|
+
return subject === a;
|
|
224
|
+
case "notEqual":
|
|
225
|
+
return subject !== a;
|
|
226
|
+
case "greaterThan":
|
|
227
|
+
return subject > a;
|
|
228
|
+
case "lessThan":
|
|
229
|
+
return subject < a;
|
|
230
|
+
case "greaterThanOrEqual":
|
|
231
|
+
return subject >= a;
|
|
232
|
+
case "lessThanOrEqual":
|
|
233
|
+
return subject <= a;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
/** A typed value that is a formula (`=…`) — validated on its result, not its text. */
|
|
237
|
+
export const isFormulaEntry = (value) => typeof value === "string" && value.trim().startsWith("=");
|
|
238
|
+
/**
|
|
239
|
+
* Decide an Excel-kind rule for a freshly typed value without the
|
|
240
|
+
* calculator — the commit-time enforcement Excel applies (`stop` blocks a
|
|
241
|
+
* decimal in a whole-number cell). `undefined` when the bounds are
|
|
242
|
+
* formulas / references, or when the typed value is itself a formula
|
|
243
|
+
* (Excel validates the formula's RESULT after the recalc, so `=5` is a
|
|
244
|
+
* valid whole number), so the caller falls back to the flag-only marker.
|
|
245
|
+
*/
|
|
246
|
+
export const checkExcelValidationValue = (rule, value) => {
|
|
247
|
+
const source = rule?.xlsxSource;
|
|
248
|
+
if (!source || !EXCEL_KINDS.has(source.type))
|
|
249
|
+
return undefined;
|
|
250
|
+
if (isFormulaEntry(value))
|
|
251
|
+
return undefined;
|
|
252
|
+
const operator = (source.operator ?? "between");
|
|
253
|
+
if (!EXCEL_OPERATORS.has(operator))
|
|
254
|
+
return undefined;
|
|
255
|
+
const a = Number(source.formula1);
|
|
256
|
+
const b = source.formula2 === undefined ? undefined : Number(source.formula2);
|
|
257
|
+
if (!Number.isFinite(a))
|
|
258
|
+
return undefined;
|
|
259
|
+
if (isTwoSidedOperator(operator) &&
|
|
260
|
+
!(b !== undefined && Number.isFinite(b))) {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
const text = typeof value === "boolean" ? (value ? "TRUE" : "FALSE") : value;
|
|
264
|
+
switch (source.type) {
|
|
265
|
+
case "textLength":
|
|
266
|
+
return compare(Array.from(text).length, operator, a, b);
|
|
267
|
+
case "whole": {
|
|
268
|
+
if (typeof value === "boolean")
|
|
269
|
+
return false;
|
|
270
|
+
const num = Number(text.trim());
|
|
271
|
+
if (!Number.isFinite(num) || !Number.isInteger(num))
|
|
272
|
+
return false;
|
|
273
|
+
return compare(num, operator, a, b);
|
|
274
|
+
}
|
|
275
|
+
case "time": {
|
|
276
|
+
if (typeof value === "boolean")
|
|
277
|
+
return false;
|
|
278
|
+
// Excel compares the cell's full serial against the bounds (a
|
|
279
|
+
// date-time such as 45292.5 is NOT between 9:00 and 12:00) — the same
|
|
280
|
+
// comparison the composed `NUMBER_*` condition makes for the marker.
|
|
281
|
+
const serial = parseTimeToSerial(text);
|
|
282
|
+
if (serial === undefined)
|
|
283
|
+
return false;
|
|
284
|
+
return compare(serial, operator, a, b);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { GridRange } from "@rowsncolumns/grid";
|
|
2
|
+
import type { FillSeriesSpec } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* The seed line of a Series-dialog fill: Excel treats the target range's first
|
|
5
|
+
* row (Series in Columns — filling down) or first column (Series in Rows —
|
|
6
|
+
* filling across) as the values the series starts from.
|
|
7
|
+
*/
|
|
8
|
+
export declare const seedRangeForSeriesSpec: (target: GridRange, spec: FillSeriesSpec) => GridRange;
|
|
9
|
+
/**
|
|
10
|
+
* How many series values fit before `stop` is passed, starting from the seed's
|
|
11
|
+
* last value. `undefined` when the spec has no usable stop (no stop, zero step,
|
|
12
|
+
* a step that walks away from the stop, …) — the caller then fills the target
|
|
13
|
+
* as selected.
|
|
14
|
+
*/
|
|
15
|
+
export declare const seriesCountToStop: (last: number, spec: FillSeriesSpec) => number | undefined;
|
|
16
|
+
export type FillRangeForSeriesSpecArgs = {
|
|
17
|
+
/** The range the user selected (seed + cells to fill). */
|
|
18
|
+
target: GridRange;
|
|
19
|
+
/** From {@link seedRangeForSeriesSpec}. */
|
|
20
|
+
seed: GridRange;
|
|
21
|
+
spec: FillSeriesSpec;
|
|
22
|
+
/** Numeric value of a seed cell (`undefined` when not a number). */
|
|
23
|
+
getSeedValue(rowIndex: number, columnIndex: number): number | undefined;
|
|
24
|
+
rowCount: number;
|
|
25
|
+
columnCount: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The range a Series-dialog fill covers (seed + cells to fill). A selection
|
|
29
|
+
* that reaches beyond the seed is filled as selected (`undefined` when there
|
|
30
|
+
* is nothing beyond the seed and no stop): the engines apply the `stop` value
|
|
31
|
+
* per fill line — every column (Series in Columns) / row (Rows) ends at the
|
|
32
|
+
* last value within its own stop and the remaining selected cells stay
|
|
33
|
+
* untouched, exactly as Excel leaves them. Only a seed-only selection is
|
|
34
|
+
* extended along the axis by the number of values that stay within the stop —
|
|
35
|
+
* Excel fills down/right from a single line until the value would pass it.
|
|
36
|
+
*/
|
|
37
|
+
export declare const fillRangeForSeriesSpec: ({ target, seed, spec, getSeedValue, rowCount, columnCount, }: FillRangeForSeriesSpecArgs) => GridRange | undefined;
|
|
38
|
+
//# sourceMappingURL=fill-series.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill-series.d.ts","sourceRoot":"","sources":["../../../api/fill-series.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,EACjB,MAAM,cAAc,KACnB,SAGyD,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,MAAM,cAAc,KACnB,MAAM,GAAG,SAuBX,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,0DAA0D;IAC1D,MAAM,EAAE,SAAS,CAAC;IAClB,2CAA2C;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,oEAAoE;IACpE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,8DAOpC,0BAA0B,KAAG,SAAS,GAAG,SAwB3C,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The seed line of a Series-dialog fill: Excel treats the target range's first
|
|
3
|
+
* row (Series in Columns — filling down) or first column (Series in Rows —
|
|
4
|
+
* filling across) as the values the series starts from.
|
|
5
|
+
*/
|
|
6
|
+
export const seedRangeForSeriesSpec = (target, spec) => spec.in === "columns"
|
|
7
|
+
? { ...target, endRowIndex: target.startRowIndex }
|
|
8
|
+
: { ...target, endColumnIndex: target.startColumnIndex };
|
|
9
|
+
/**
|
|
10
|
+
* How many series values fit before `stop` is passed, starting from the seed's
|
|
11
|
+
* last value. `undefined` when the spec has no usable stop (no stop, zero step,
|
|
12
|
+
* a step that walks away from the stop, …) — the caller then fills the target
|
|
13
|
+
* as selected.
|
|
14
|
+
*/
|
|
15
|
+
export const seriesCountToStop = (last, spec) => {
|
|
16
|
+
const { stop } = spec;
|
|
17
|
+
if (stop === undefined || !Number.isFinite(stop))
|
|
18
|
+
return undefined;
|
|
19
|
+
const step = spec.step ?? 1;
|
|
20
|
+
if (spec.type === "linear") {
|
|
21
|
+
if (step === 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
const n = Math.floor((stop - last) / step + 1e-9);
|
|
24
|
+
return n >= 0 ? n : 0;
|
|
25
|
+
}
|
|
26
|
+
if (spec.type === "growth") {
|
|
27
|
+
if (last === 0 || step <= 0 || step === 1)
|
|
28
|
+
return undefined;
|
|
29
|
+
if (Math.sign(last) !== Math.sign(stop))
|
|
30
|
+
return 0;
|
|
31
|
+
const n = Math.floor(Math.log(Math.abs(stop) / Math.abs(last)) / Math.log(step) + 1e-9);
|
|
32
|
+
return n >= 0 ? n : 0;
|
|
33
|
+
}
|
|
34
|
+
if (spec.type === "date" && (spec.dateUnit ?? "day") === "day") {
|
|
35
|
+
if (step === 0)
|
|
36
|
+
return undefined;
|
|
37
|
+
const n = Math.floor((stop - last) / step + 1e-9);
|
|
38
|
+
return n >= 0 ? n : 0;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The range a Series-dialog fill covers (seed + cells to fill). A selection
|
|
44
|
+
* that reaches beyond the seed is filled as selected (`undefined` when there
|
|
45
|
+
* is nothing beyond the seed and no stop): the engines apply the `stop` value
|
|
46
|
+
* per fill line — every column (Series in Columns) / row (Rows) ends at the
|
|
47
|
+
* last value within its own stop and the remaining selected cells stay
|
|
48
|
+
* untouched, exactly as Excel leaves them. Only a seed-only selection is
|
|
49
|
+
* extended along the axis by the number of values that stay within the stop —
|
|
50
|
+
* Excel fills down/right from a single line until the value would pass it.
|
|
51
|
+
*/
|
|
52
|
+
export const fillRangeForSeriesSpec = ({ target, seed, spec, getSeedValue, rowCount, columnCount, }) => {
|
|
53
|
+
const down = spec.in === "columns";
|
|
54
|
+
// Excel reads the stop against the first seed line's last value.
|
|
55
|
+
const last = down
|
|
56
|
+
? getSeedValue(seed.endRowIndex, seed.startColumnIndex)
|
|
57
|
+
: getSeedValue(seed.startRowIndex, seed.endColumnIndex);
|
|
58
|
+
const selectedBeyondSeed = down
|
|
59
|
+
? target.endRowIndex - seed.endRowIndex
|
|
60
|
+
: target.endColumnIndex - seed.endColumnIndex;
|
|
61
|
+
const extent = selectedBeyondSeed > 0
|
|
62
|
+
? selectedBeyondSeed
|
|
63
|
+
: last === undefined
|
|
64
|
+
? 0
|
|
65
|
+
: (seriesCountToStop(last, spec) ?? 0);
|
|
66
|
+
if (extent <= 0)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (down) {
|
|
69
|
+
const endRowIndex = Math.min(seed.endRowIndex + extent, rowCount - 1);
|
|
70
|
+
if (endRowIndex <= seed.endRowIndex)
|
|
71
|
+
return undefined;
|
|
72
|
+
return { ...target, endRowIndex };
|
|
73
|
+
}
|
|
74
|
+
const endColumnIndex = Math.min(seed.endColumnIndex + extent, columnCount - 1);
|
|
75
|
+
if (endColumnIndex <= seed.endColumnIndex)
|
|
76
|
+
return undefined;
|
|
77
|
+
return { ...target, endColumnIndex };
|
|
78
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GridRange } from "@rowsncolumns/grid";
|
|
2
|
+
import type { CellData } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Excel's Go To Special categories that can be decided from cell data alone.
|
|
5
|
+
* (Row / column differences, precedents / dependents and objects are served
|
|
6
|
+
* by the trace arrows and the drawing layer, not by this dialog.)
|
|
7
|
+
*/
|
|
8
|
+
export type GoToSpecialKind = "blanks" | "constants" | "formulas" | "errors" | "notes" | "visible";
|
|
9
|
+
export declare const GO_TO_SPECIAL_OPTIONS: ReadonlyArray<{
|
|
10
|
+
kind: GoToSpecialKind;
|
|
11
|
+
label: string;
|
|
12
|
+
}>;
|
|
13
|
+
export type GoToSpecialContext<T extends CellData = CellData> = {
|
|
14
|
+
sheetId: number;
|
|
15
|
+
/** The area to scan — the current selection, or the used range for a single cell. */
|
|
16
|
+
range: GridRange;
|
|
17
|
+
getCellData(sheetId: number, rowIndex: number, columnIndex: number): T | null | undefined;
|
|
18
|
+
isRowHidden?(rowIndex: number): boolean;
|
|
19
|
+
isColumnHidden?(columnIndex: number): boolean;
|
|
20
|
+
/** Scan guard — Excel refuses huge Go To Special selections as well. */
|
|
21
|
+
maxCells?: number;
|
|
22
|
+
};
|
|
23
|
+
/** Cells scanned before the search gives up (returns what it found so far). */
|
|
24
|
+
export declare const GO_TO_SPECIAL_MAX_CELLS = 250000;
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a Go To Special category to the matching cells of `range`, packed
|
|
27
|
+
* into per-row runs of adjacent columns (what the selection layer paints).
|
|
28
|
+
* Hidden rows / columns are skipped for every kind — Excel never selects
|
|
29
|
+
* into a hidden cell from Go To Special. Returns `[]` when nothing matches.
|
|
30
|
+
*/
|
|
31
|
+
export declare const resolveGoToSpecial: <T extends CellData>(kind: GoToSpecialKind, context: GoToSpecialContext<T>) => GridRange[];
|
|
32
|
+
//# sourceMappingURL=go-to-special.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go-to-special.d.ts","sourceRoot":"","sources":["../../../api/go-to-special.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAEd,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAChD,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAOA,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CACT,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACxB,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,cAAc,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAmD/C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,QAAQ,EACnD,MAAM,eAAe,EACrB,SAAS,kBAAkB,CAAC,CAAC,CAAC,KAC7B,SAAS,EAoCX,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const GO_TO_SPECIAL_OPTIONS = [
|
|
2
|
+
{ kind: "notes", label: "Notes" },
|
|
3
|
+
{ kind: "constants", label: "Constants" },
|
|
4
|
+
{ kind: "formulas", label: "Formulas" },
|
|
5
|
+
{ kind: "errors", label: "Errors" },
|
|
6
|
+
{ kind: "blanks", label: "Blanks" },
|
|
7
|
+
{ kind: "visible", label: "Visible cells only" },
|
|
8
|
+
];
|
|
9
|
+
/** Cells scanned before the search gives up (returns what it found so far). */
|
|
10
|
+
export const GO_TO_SPECIAL_MAX_CELLS = 250_000;
|
|
11
|
+
const hasContent = (cell) => {
|
|
12
|
+
const ue = cell?.ue ?? cell?.userEnteredValue;
|
|
13
|
+
if (!ue)
|
|
14
|
+
return false;
|
|
15
|
+
return (ue.fv != null ||
|
|
16
|
+
ue.formulaValue != null ||
|
|
17
|
+
ue.sv != null ||
|
|
18
|
+
ue.stringValue != null ||
|
|
19
|
+
ue.nv != null ||
|
|
20
|
+
ue.numberValue != null ||
|
|
21
|
+
ue.bv != null ||
|
|
22
|
+
ue.boolValue != null);
|
|
23
|
+
};
|
|
24
|
+
const isFormula = (cell) => {
|
|
25
|
+
const ue = cell?.ue ?? cell?.userEnteredValue;
|
|
26
|
+
return typeof (ue?.fv ?? ue?.formulaValue) === "string";
|
|
27
|
+
};
|
|
28
|
+
const isError = (cell) => {
|
|
29
|
+
const ev = cell?.ev ?? cell?.effectiveValue;
|
|
30
|
+
const error = ev?.ev ?? ev?.errorValue;
|
|
31
|
+
return !!error && error.type === "Error";
|
|
32
|
+
};
|
|
33
|
+
const hasNote = (cell) => typeof cell?.note === "string" && cell.note.trim().length > 0;
|
|
34
|
+
const matches = (kind, cell) => {
|
|
35
|
+
switch (kind) {
|
|
36
|
+
case "blanks":
|
|
37
|
+
return !hasContent(cell);
|
|
38
|
+
case "constants":
|
|
39
|
+
return hasContent(cell) && !isFormula(cell);
|
|
40
|
+
case "formulas":
|
|
41
|
+
return isFormula(cell);
|
|
42
|
+
case "errors":
|
|
43
|
+
return isError(cell);
|
|
44
|
+
case "notes":
|
|
45
|
+
return hasNote(cell);
|
|
46
|
+
case "visible":
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a Go To Special category to the matching cells of `range`, packed
|
|
52
|
+
* into per-row runs of adjacent columns (what the selection layer paints).
|
|
53
|
+
* Hidden rows / columns are skipped for every kind — Excel never selects
|
|
54
|
+
* into a hidden cell from Go To Special. Returns `[]` when nothing matches.
|
|
55
|
+
*/
|
|
56
|
+
export const resolveGoToSpecial = (kind, context) => {
|
|
57
|
+
const { sheetId, range, getCellData, isRowHidden, isColumnHidden } = context;
|
|
58
|
+
const maxCells = context.maxCells ?? GO_TO_SPECIAL_MAX_CELLS;
|
|
59
|
+
const runs = [];
|
|
60
|
+
let scanned = 0;
|
|
61
|
+
for (let row = range.startRowIndex; row <= range.endRowIndex; row++) {
|
|
62
|
+
if (isRowHidden?.(row))
|
|
63
|
+
continue;
|
|
64
|
+
let runStart;
|
|
65
|
+
const flush = (endColumn) => {
|
|
66
|
+
if (runStart === undefined)
|
|
67
|
+
return;
|
|
68
|
+
runs.push({
|
|
69
|
+
startRowIndex: row,
|
|
70
|
+
endRowIndex: row,
|
|
71
|
+
startColumnIndex: runStart,
|
|
72
|
+
endColumnIndex: endColumn,
|
|
73
|
+
});
|
|
74
|
+
runStart = undefined;
|
|
75
|
+
};
|
|
76
|
+
for (let col = range.startColumnIndex; col <= range.endColumnIndex; col++) {
|
|
77
|
+
if (++scanned > maxCells) {
|
|
78
|
+
flush(col - 1);
|
|
79
|
+
return runs;
|
|
80
|
+
}
|
|
81
|
+
if (isColumnHidden?.(col)) {
|
|
82
|
+
flush(col - 1);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (matches(kind, getCellData(sheetId, row, col))) {
|
|
86
|
+
if (runStart === undefined)
|
|
87
|
+
runStart = col;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
flush(col - 1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
flush(range.endColumnIndex);
|
|
94
|
+
}
|
|
95
|
+
return runs;
|
|
96
|
+
};
|
|
@@ -8,7 +8,7 @@ import type { CanvasGridMethods, CanvasGridProps, ChangeBatchOptions, ChangeBatc
|
|
|
8
8
|
import type { SelectionAttributes as SheetSelectionAttributes } from "../components/canvas-grid/typings";
|
|
9
9
|
import type { BorderLocation } from "../components/toolbar";
|
|
10
10
|
import type { ExportRangeOptions } from "../hooks/use-export-range";
|
|
11
|
-
import type { AXIS, BandedRange, CellData, CellFormat, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, Sheet as SheetBase, SheetRange, SortOrder, TableTheme, TableView } from "../types";
|
|
11
|
+
import type { AXIS, AutoFillType, BandedRange, CellData, CellFormat, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, FillOptions, NamedRange, Sheet as SheetBase, SheetRange, SortOrder, TableTheme, TableView } from "../types";
|
|
12
12
|
type CallbacksProps<T extends CellData> = RefObject<CanvasGridProps<T> | null>;
|
|
13
13
|
declare class SpreadsheetCallbacks<T extends CellData> {
|
|
14
14
|
callbacks: CallbacksProps<T>;
|
|
@@ -18,6 +18,8 @@ type SpreadsheetMethods = {
|
|
|
18
18
|
getUserEnteredValue(sheetId: number, rowIndex: number, columnIndex: number): string | null | undefined;
|
|
19
19
|
scrollToCell(cell: CellInterface, align?: Align): void;
|
|
20
20
|
commit(): boolean;
|
|
21
|
+
/** Open Excel's Series dialog (Home > Fill > Series…) for the current selection. */
|
|
22
|
+
openFillSeriesDialog(): void;
|
|
21
23
|
};
|
|
22
24
|
export declare class SpreadsheetApi<T extends CellData = CellData> extends SpreadsheetCallbacks<T> {
|
|
23
25
|
store: ReturnType<typeof getDefaultStore>;
|
|
@@ -166,7 +168,9 @@ export declare class SpreadsheetApi<T extends CellData = CellData> extends Sprea
|
|
|
166
168
|
updateEmbed(embed: EmbeddedObject): void;
|
|
167
169
|
moveEmbed(embedId: string, sheetId: number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number): void;
|
|
168
170
|
resizeEmbed(embedId: string, sheetId: number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number): void;
|
|
169
|
-
applyFill(sheetId: number, activeCell: CellInterface, fillSelection: SelectionArea, selections: SelectionArea<SheetSelectionAttributes>[]): void;
|
|
171
|
+
applyFill(sheetId: number, activeCell: CellInterface, fillSelection: SelectionArea, selections: SelectionArea<SheetSelectionAttributes>[], fillType?: AutoFillType, options?: FillOptions): void;
|
|
172
|
+
/** Home > Fill > Series…: open the Series dialog for the current selection. */
|
|
173
|
+
openFillSeriesDialog(): void;
|
|
170
174
|
isChartsAvailable(): boolean;
|
|
171
175
|
createChart(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[], chartSpec?: EmbeddedChart): void;
|
|
172
176
|
deleteChart(chartId: string | number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spreadsheet-api.d.ts","sourceRoot":"","sources":["../../../api/spreadsheet-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spreadsheet-api.d.ts","sourceRoot":"","sources":["../../../api/spreadsheet-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -300,9 +300,14 @@ export class SpreadsheetApi extends SpreadsheetCallbacks {
|
|
|
300
300
|
resizeEmbed(embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height) {
|
|
301
301
|
this.callbacks.current?.onResizeEmbed?.(embedId, sheetId, anchorCell, offsetXPixels, offsetYPixels, width, height);
|
|
302
302
|
}
|
|
303
|
-
// Programmatic fill
|
|
304
|
-
|
|
305
|
-
|
|
303
|
+
// Programmatic fill. `fillType` / `options` mirror the fill menu and the
|
|
304
|
+
// Series dialog (`options.series`); omit both to auto-detect like a drag.
|
|
305
|
+
applyFill(sheetId, activeCell, fillSelection, selections, fillType, options) {
|
|
306
|
+
this.callbacks.current?.onFill?.(sheetId, activeCell, fillSelection, selections, undefined, fillType, options);
|
|
307
|
+
}
|
|
308
|
+
/** Home > Fill > Series…: open the Series dialog for the current selection. */
|
|
309
|
+
openFillSeriesDialog() {
|
|
310
|
+
this.methods?.openFillSeriesDialog();
|
|
306
311
|
}
|
|
307
312
|
// Chart helpers
|
|
308
313
|
isChartsAvailable() {
|