@rowsncolumns/spreadsheet 10.2.73 → 10.2.75
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/evaluate-formula.d.ts +17 -0
- package/dist/cjs/api/evaluate-formula.d.ts.map +1 -0
- package/dist/cjs/api/evaluate-formula.js +141 -0
- 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/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/go-to.d.ts +19 -0
- package/dist/cjs/api/go-to.d.ts.map +1 -0
- package/dist/cjs/api/go-to.js +49 -0
- 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/evaluate-formula-dialog.atom.d.ts +36 -0
- package/dist/cjs/atoms/evaluate-formula-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/evaluate-formula-dialog.atom.js +36 -0
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts +46 -0
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/go-to-dialog.atom.js +34 -0
- 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 +5 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +5 -0
- package/dist/cjs/atoms/paste-special-dialog.atom.d.ts +29 -0
- package/dist/cjs/atoms/paste-special-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/paste-special-dialog.atom.js +34 -0
- package/dist/cjs/atoms/remove-duplicates-dialog.atom.d.ts +45 -0
- package/dist/cjs/atoms/remove-duplicates-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/remove-duplicates-dialog.atom.js +37 -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 +208 -19
- package/dist/cjs/components/canvas-grid/typings.d.ts +72 -9
- 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/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +2 -1
- package/dist/cjs/components/context-menu/index.d.ts +21 -3
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +256 -6
- package/dist/cjs/components/context-menu/total-row-functions.d.ts +32 -0
- package/dist/cjs/components/context-menu/total-row-functions.d.ts.map +1 -0
- package/dist/cjs/components/context-menu/total-row-functions.js +62 -0
- 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/evaluate-formula-dialog/index.d.ts +34 -0
- package/dist/cjs/components/evaluate-formula-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/evaluate-formula-dialog/index.js +106 -0
- package/dist/cjs/components/go-to-dialog/index.d.ts +45 -0
- package/dist/cjs/components/go-to-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/go-to-dialog/index.js +136 -0
- 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/paste-special-dialog/index.d.ts +29 -0
- package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/paste-special-dialog/index.js +99 -0
- package/dist/cjs/components/remove-duplicates-dialog/index.d.ts +37 -0
- package/dist/cjs/components/remove-duplicates-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/remove-duplicates-dialog/index.js +91 -0
- 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 +2 -0
- package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/index.js +2 -0
- 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/toolbar/text-rotation-selector.d.ts +29 -0
- package/dist/cjs/components/toolbar/text-rotation-selector.d.ts.map +1 -0
- package/dist/cjs/components/toolbar/text-rotation-selector.js +78 -0
- package/dist/cjs/components/toolbar/text-wrap-selector.d.ts +7 -1
- package/dist/cjs/components/toolbar/text-wrap-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-wrap-selector.js +10 -3
- 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-copy-paste-cut.d.ts +20 -1
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +25 -20
- 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 +17 -2
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +206 -31
- package/dist/cjs/index.d.ts +14 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +15 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +289 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +19 -1
- package/dist/esm/api/evaluate-formula.d.ts +17 -0
- package/dist/esm/api/evaluate-formula.d.ts.map +1 -0
- package/dist/esm/api/evaluate-formula.js +109 -0
- 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/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/go-to.d.ts +19 -0
- package/dist/esm/api/go-to.d.ts.map +1 -0
- package/dist/esm/api/go-to.js +41 -0
- 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/evaluate-formula-dialog.atom.d.ts +36 -0
- package/dist/esm/atoms/evaluate-formula-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/evaluate-formula-dialog.atom.js +25 -0
- package/dist/esm/atoms/go-to-dialog.atom.d.ts +46 -0
- package/dist/esm/atoms/go-to-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/go-to-dialog.atom.js +25 -0
- 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 +5 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +5 -0
- package/dist/esm/atoms/paste-special-dialog.atom.d.ts +29 -0
- package/dist/esm/atoms/paste-special-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/paste-special-dialog.atom.js +25 -0
- package/dist/esm/atoms/remove-duplicates-dialog.atom.d.ts +45 -0
- package/dist/esm/atoms/remove-duplicates-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/remove-duplicates-dialog.atom.js +26 -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 +202 -19
- package/dist/esm/components/canvas-grid/typings.d.ts +72 -9
- 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/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +2 -1
- package/dist/esm/components/context-menu/index.d.ts +21 -3
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +251 -9
- package/dist/esm/components/context-menu/total-row-functions.d.ts +32 -0
- package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -0
- package/dist/esm/components/context-menu/total-row-functions.js +50 -0
- 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/evaluate-formula-dialog/index.d.ts +34 -0
- package/dist/esm/components/evaluate-formula-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/evaluate-formula-dialog/index.js +86 -0
- package/dist/esm/components/go-to-dialog/index.d.ts +45 -0
- package/dist/esm/components/go-to-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/go-to-dialog/index.js +124 -0
- 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/paste-special-dialog/index.d.ts +29 -0
- package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/paste-special-dialog/index.js +90 -0
- package/dist/esm/components/remove-duplicates-dialog/index.d.ts +37 -0
- package/dist/esm/components/remove-duplicates-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/remove-duplicates-dialog/index.js +82 -0
- 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 +2 -0
- package/dist/esm/components/toolbar/index.d.ts.map +1 -1
- package/dist/esm/components/toolbar/index.js +2 -0
- 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/toolbar/text-rotation-selector.d.ts +29 -0
- package/dist/esm/components/toolbar/text-rotation-selector.d.ts.map +1 -0
- package/dist/esm/components/toolbar/text-rotation-selector.js +71 -0
- package/dist/esm/components/toolbar/text-wrap-selector.d.ts +7 -1
- package/dist/esm/components/toolbar/text-wrap-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-wrap-selector.js +10 -3
- 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-copy-paste-cut.d.ts +20 -1
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +8 -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 +17 -2
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +193 -31
- package/dist/esm/index.d.ts +14 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +13 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +289 -4
- 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 +6 -6
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CalculationOptionsDialog = exports.normalizeIterativeCalculation = exports.DEFAULT_ITERATIVE_CALCULATION = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
/** Excel's defaults (File → Options → Formulas → Calculation options). */
|
|
8
|
+
exports.DEFAULT_ITERATIVE_CALCULATION = {
|
|
9
|
+
enabled: false,
|
|
10
|
+
maxIterations: 100,
|
|
11
|
+
maxChange: 0.001,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Normalise a form draft the way Excel does: iterations are a whole number
|
|
15
|
+
* 1…32767, maximum change is a non-negative number; anything else falls
|
|
16
|
+
* back to the current value.
|
|
17
|
+
*/
|
|
18
|
+
var normalizeIterativeCalculation = function (draft, current) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
var parse = function (text) { return (text.trim() === "" ? NaN : Number(text)); };
|
|
21
|
+
var iterations = parse(draft.maxIterations);
|
|
22
|
+
var change = parse(draft.maxChange);
|
|
23
|
+
return {
|
|
24
|
+
enabled: draft.enabled,
|
|
25
|
+
maxIterations: Number.isFinite(iterations) && iterations >= 1
|
|
26
|
+
? Math.min(32767, Math.floor(iterations))
|
|
27
|
+
: (_a = current === null || current === void 0 ? void 0 : current.maxIterations) !== null && _a !== void 0 ? _a : exports.DEFAULT_ITERATIVE_CALCULATION.maxIterations,
|
|
28
|
+
maxChange: Number.isFinite(change) && change >= 0
|
|
29
|
+
? change
|
|
30
|
+
: (_b = current === null || current === void 0 ? void 0 : current.maxChange) !== null && _b !== void 0 ? _b : exports.DEFAULT_ITERATIVE_CALCULATION.maxChange,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.normalizeIterativeCalculation = normalizeIterativeCalculation;
|
|
34
|
+
/**
|
|
35
|
+
* Excel's iterative-calculation options (enable / maximum iterations /
|
|
36
|
+
* maximum change) as a dialog. Purely presentational — the host owns the
|
|
37
|
+
* setting and applies it through `onChange`.
|
|
38
|
+
*/
|
|
39
|
+
exports.CalculationOptionsDialog = (0, react_1.memo)(function (_a) {
|
|
40
|
+
var _b, _c, _d;
|
|
41
|
+
var open = _a.open, onOpenChange = _a.onOpenChange, value = _a.value, onChange = _a.onChange;
|
|
42
|
+
var _e = tslib_1.__read((0, react_1.useState)((_b = value === null || value === void 0 ? void 0 : value.enabled) !== null && _b !== void 0 ? _b : false), 2), enabled = _e[0], setEnabled = _e[1];
|
|
43
|
+
var _f = tslib_1.__read((0, react_1.useState)(String((_c = value === null || value === void 0 ? void 0 : value.maxIterations) !== null && _c !== void 0 ? _c : exports.DEFAULT_ITERATIVE_CALCULATION.maxIterations)), 2), maxIterations = _f[0], setMaxIterations = _f[1];
|
|
44
|
+
var _g = tslib_1.__read((0, react_1.useState)(String((_d = value === null || value === void 0 ? void 0 : value.maxChange) !== null && _d !== void 0 ? _d : exports.DEFAULT_ITERATIVE_CALCULATION.maxChange)), 2), maxChange = _g[0], setMaxChange = _g[1];
|
|
45
|
+
return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
|
|
46
|
+
react_1.default.createElement(ui_1.DialogContent, { className: "w-[360px] max-w-[92vw] pointer-events-auto" },
|
|
47
|
+
react_1.default.createElement(ui_1.DialogTitle, null, "Calculation options"),
|
|
48
|
+
react_1.default.createElement(ui_1.DialogCloseButton, null),
|
|
49
|
+
react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-3" },
|
|
50
|
+
react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: function (e) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
onChange((0, exports.normalizeIterativeCalculation)({ enabled: enabled, maxIterations: maxIterations, maxChange: maxChange }, value !== null && value !== void 0 ? value : undefined));
|
|
53
|
+
onOpenChange(false);
|
|
54
|
+
} },
|
|
55
|
+
react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs font-medium" },
|
|
56
|
+
react_1.default.createElement("input", { type: "checkbox", checked: enabled, onChange: function (e) { return setEnabled(e.target.checked); } }),
|
|
57
|
+
"Enable iterative calculation"),
|
|
58
|
+
react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
|
|
59
|
+
"Maximum iterations:",
|
|
60
|
+
react_1.default.createElement(ui_1.Input, { type: "number", min: 1, max: 32767, step: 1, value: maxIterations, disabled: !enabled, onChange: function (e) { return setMaxIterations(e.target.value); } })),
|
|
61
|
+
react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
|
|
62
|
+
"Maximum change:",
|
|
63
|
+
react_1.default.createElement(ui_1.Input, { type: "number", min: 0, step: "any", value: maxChange, disabled: !enabled, onChange: function (e) { return setMaxChange(e.target.value); } })),
|
|
64
|
+
react_1.default.createElement(ui_1.Separator, null),
|
|
65
|
+
react_1.default.createElement("div", { className: "flex justify-end gap-2" },
|
|
66
|
+
react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
|
|
67
|
+
react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm" }, "OK")))))));
|
|
68
|
+
});
|
|
69
|
+
exports.CalculationOptionsDialog.displayName = "CalculationOptionsDialog";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AA2CA,OAAO,KASN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AA2CA,OAAO,KASN,MAAM,OAAO,CAAC;AAsLf,OAAO,KAAK,EAEV,QAAQ,EAST,MAAM,aAAa,CAAC;AAarB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AA61JnB,eAAO,MAAM,UAAU,EAA4C,CACjE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAEvB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACvB,wBAAwB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
|
|
@@ -20,9 +20,13 @@ var cf_window_1 = require("../../api/cf-window");
|
|
|
20
20
|
var selections_1 = require("../../api/selections");
|
|
21
21
|
var spreadsheet_api_1 = require("../../api/spreadsheet-api");
|
|
22
22
|
var table_1 = require("../../api/table");
|
|
23
|
+
var validation_tooltip_1 = require("../../api/validation-tooltip");
|
|
24
|
+
var go_to_special_1 = require("../../api/go-to-special");
|
|
25
|
+
var excel_validation_kinds_1 = require("../../api/excel-validation-kinds");
|
|
23
26
|
var validation_1 = require("../../api/validation");
|
|
24
27
|
var atoms_1 = require("../../atoms");
|
|
25
28
|
var active_editor_atom_1 = require("../../atoms/active-editor.atom");
|
|
29
|
+
var watch_window_atom_1 = require("../../atoms/watch-window.atom");
|
|
26
30
|
var editing_cell_atom_1 = require("../../atoms/editing-cell.atom");
|
|
27
31
|
var formula_bar_editor_value_atom_1 = require("../../atoms/formula-bar-editor-value.atom");
|
|
28
32
|
var formula_selection_state_atom_1 = require("../../atoms/formula-selection-state.atom");
|
|
@@ -64,6 +68,7 @@ var use_keyboard_handler_1 = require("../../hooks/use-keyboard-handler");
|
|
|
64
68
|
var use_licensekey_validator_1 = require("../../hooks/use-licensekey-validator");
|
|
65
69
|
var use_move_columns_rows_1 = require("../../hooks/use-move-columns-rows");
|
|
66
70
|
var use_navigate_sheet_range_1 = require("../../hooks/use-navigate-sheet-range");
|
|
71
|
+
var evaluate_formula_1 = require("../../api/evaluate-formula");
|
|
67
72
|
var use_raf_1 = require("../../hooks/use-raf");
|
|
68
73
|
var use_resize_observer_1 = require("../../hooks/use-resize-observer");
|
|
69
74
|
var use_scale_listener_1 = require("../../hooks/use-scale-listener");
|
|
@@ -103,7 +108,7 @@ var helpers_2 = require("./helpers");
|
|
|
103
108
|
* @returns
|
|
104
109
|
*/
|
|
105
110
|
function CanvasGridComponent(props, forwardedRef) {
|
|
106
|
-
var licenseKey = props.licenseKey, sheetId = props.sheetId, instanceId = props.instanceId, _a = props.activeCell, activeCell = _a === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _a, _b = props.selections, selections = _b === void 0 ? config_1.DEFAULT_ARRAY : _b, _c = props.frozenColumnCount, frozenColumnCount = _c === void 0 ? 0 : _c, _d = props.frozenRowCount, frozenRowCount = _d === void 0 ? 0 : _d, _e = props.rowCount, rowCount = _e === void 0 ? config_1.DEFAULT_ROW_COUNT : _e, _f = props.columnCount, columnCount = _f === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _f, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _g = props.bandedRanges, bandedRanges = _g === void 0 ? config_1.DEFAULT_ARRAY : _g, _h = props.tableBorderColor, tableBorderColor = _h === void 0 ? "#008000" : _h, _j = props.filterIconColor, filterIconColor = _j === void 0 ? "#008000" : _j, conditionalFormats = props.conditionalFormats, _k = props.showFilterIcon, showFilterIcon = _k === void 0 ? true : _k, _l = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _l === void 0 ? true : _l, _m = props.showHeaders, showHeaders = _m === void 0 ? true : _m, _o = props.defaultColumnWidth, defaultColumnWidth = _o === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _o, _p = props.defaultRowHeight, defaultRowHeight = _p === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _p, _q = props.columnHeaderHeight, columnHeaderHeight = _q === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _q, _r = props.rowHeaderWidth, rowHeaderWidth = _r === void 0 ? config_1.ROW_HEADER_WIDTH : _r, _s = props.gridLineColor, gridLineColor = _s === void 0 ? config_1.GRIDLINE_COLOR : _s, _t = props.cellBackgroundColor, cellBackgroundColor = _t === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _t, _u = props.cellColor, cellColor = _u === void 0 ? config_1.DEFAULT_CELL_COLOR : _u, _v = props.headerBorderColor, headerBorderColor = _v === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _v, _w = props.headerBackgroundColor, headerBackgroundColor = _w === void 0 ? config_1.DEFAULT_HEADER_BG : _w, _x = props.headerColor, headerColor = _x === void 0 ? config_1.DEFAULT_HEADER_COLOR : _x, _y = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _y === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _y, _z = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _z === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _z, _0 = props.headerSelectedColor, headerSelectedColor = _0 === void 0 ? "white" : _0, _1 = props.headerTableBackgroundColor, headerTableBackgroundColor = _1 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _1, _2 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _2, _3 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _3 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _3, _4 = props.frozenShadowColor, frozenShadowColor = _4 === void 0 ? headerBorderColor : _4, _5 = props.frozenShadowThickness, frozenShadowThickness = _5 === void 0 ? 1 : _5, _6 = props.selectionBackgroundColor, selectionBackgroundColor = _6 === void 0 ? config_1.SELECTION_BG : _6, _7 = props.selectionBorderColor, selectionBorderColor = _7 === void 0 ? config_1.SELECTION_BORDER : _7, _8 = props.selectionDragBorderColor, selectionDragBorderColor = _8 === void 0 ? config_1.SELECTION_BORDER : _8, chartSelectedColor = props.chartSelectedColor, _9 = props.chipBackgroundColor, chipBackgroundColor = _9 === void 0 ? config_1.CHIP_COLOR : _9, _10 = props.merges, merges = _10 === void 0 ? config_1.DEFAULT_ARRAY : _10, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _11 = props.isWorkbookProtected, isWorkbookProtectedProp = _11 === void 0 ? false : _11, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, embeds = props.embeds, slicers = props.slicers, _12 = props.rowMetadata, rowMetadata = _12 === void 0 ? config_1.DEFAULT_ARRAY : _12, _13 = props.columnMetadata, columnMetadata = _13 === void 0 ? config_1.DEFAULT_ARRAY : _13, _14 = props.scale, scale = _14 === void 0 ? 1 : _14, _15 = props.zoomSpeed, zoomSpeed = _15 === void 0 ? 1 : _15, _16 = props.overscanCount, overscanCount = _16 === void 0 ? 3 : _16, _17 = props.enableEditOnEnterKey, enableEditOnEnterKey = _17 === void 0 ? true : _17, _18 = props.enableTextOverflow, enableTextOverflow = _18 === void 0 ? true : _18, _showGridLines = props.showGridLines, _19 = props.showFormulas, showFormulas = _19 === void 0 ? false : _19, _20 = props.protectFormulas, protectFormulas = _20 === void 0 ? false : _20, _21 = props.showFrozenSeparator, showFrozenSeparator = _21 === void 0 ? true : _21, _22 = props.HeaderCell, HeaderCell = _22 === void 0 ? header_cell_1.HeaderCell : _22, _23 = props.Cell, Cell = _23 === void 0 ? cell_1.Cell : _23, _24 = props.SelectionTitleComponent, SelectionTitleComponent = _24 === void 0 ? title_1.SelectionTitle : _24, _25 = props.CellEditor, CellEditor = _25 === void 0 ? cell_editor_1.CellEditor : _25, CellTooltip = props.CellTooltip, _26 = props.ContextMenu, ContextMenu = _26 === void 0 ? context_menu_1.ContextMenu : _26, _27 = props.ContextMenuWrapper, ContextMenuWrapper = _27 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _27, _28 = props.FilterBox, FilterBox = _28 === void 0 ? filter_box_1.FilterBox : _28, _29 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _29 === void 0 ? header_move_1.HeaderMoveDragComponent : _29, SuggestionsDropdown = props.SuggestionsDropdown, _30 = props.stickyEditor, stickyEditor = _30 === void 0 ? true : _30, _31 = props.scrollSnap, scrollSnap = _31 === void 0 ? false : _31, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _32 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _32 === void 0 ? 60 : _32, _33 = props.tooltipIntentInterval, tooltipIntentInterval = _33 === void 0 ? 60 : _33, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _34 = props.showHeaderMenuButton, showHeaderMenuButton = _34 === void 0 ? true : _34, _35 = props.scrollbarSize, scrollbarSize = _35 === void 0 ? config_1.SCROLLBAR_SIZE : _35, _36 = props.theme, theme = _36 === void 0 ? config_1.defaultSpreadsheetTheme : _36, _37 = props.showNotes, showNotes = _37 === void 0 ? true : _37, _38 = props.showComments, showComments = _38 === void 0 ? true : _38, locale = props.locale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, getChartComponent = props.getChartComponent, getEmbedComponent = props.getEmbedComponent, getSlicerComponent = props.getSlicerComponent, onChange = props.onChange, onChangeBatch = props.onChangeBatch, onExpandCollapse = props.onExpandCollapse, onPivotDrillDown = props.onPivotDrillDown, onDelete = props.onDelete, onChangeEditorValue = props.onChangeEditorValue, onFill = props.onFill, onRequestCalculate = props.onRequestCalculate, onChangeActiveCell = props.onChangeActiveCell, onChangeActiveSheet = props.onChangeActiveSheet, onChangeSelections = props.onChangeSelections, getSheetName = props.getSheetName, getSheetId = props.getSheetId, getCellData = props.getCellData, getNoteProp = props.getNote, getTextFormatRuns = props.getTextFormatRuns, getDataValidation = props.getDataValidation, getEffectiveFormat = props.getEffectiveFormat, getFormattedValueProp = props.getFormattedValue, getTooltipContent = props.getTooltipContent, errorResolutionComponent = props.errorResolutionComponent, getEffectiveValueProp = props.getEffectiveValue, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _39 = props.windowConditionalFormats, windowConditionalFormats = _39 === void 0 ? false : _39, _40 = props.engineConditionalFormatResults, engineConditionalFormatResults = _40 === void 0 ? false : _40, onResize = props.onResize, onAutoResize = props.onAutoResize, onHideColumn = props.onHideColumn, onHideRow = props.onHideRow, onShowColumn = props.onShowColumn, onShowRow = props.onShowRow, onGroupRows = props.onGroupRows, onUngroupRows = props.onUngroupRows, onCollapseRowGroup = props.onCollapseRowGroup, onExpandRowGroup = props.onExpandRowGroup, onGroupColumns = props.onGroupColumns, onUngroupColumns = props.onUngroupColumns, onCollapseColumnGroup = props.onCollapseColumnGroup, onExpandColumnGroup = props.onExpandColumnGroup, onSetOutlineDepth = props.onSetOutlineDepth, onDeleteRow = props.onDeleteRow, onDeleteColumn = props.onDeleteColumn, onInsertRow = props.onInsertRow, onInsertColumn = props.onInsertColumn, onInsertCellsShiftDown = props.onInsertCellsShiftDown, onInsertCellsShiftRight = props.onInsertCellsShiftRight, onDeleteCellsShiftLeft = props.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = props.onDeleteCellsShiftUp, onClearContents = props.onClearContents, onMoveColumns = props.onMoveColumns, onMoveRows = props.onMoveRows, onSelectNextSheet = props.onSelectNextSheet, onSelectPreviousSheet = props.onSelectPreviousSheet, onCreateNewSheet = props.onCreateNewSheet, onKeyDown = props.onKeyDown, onChangeFormatting = props.onChangeFormatting, onRepeatFormatting = props.onRepeatFormatting, onClearFormatting = props.onClearFormatting, onRequestEditProtectedRange = props.onRequestEditProtectedRange, onMoveChart = props.onMoveChart, onResizeChart = props.onResizeChart, onDeleteChart = props.onDeleteChart, onMoveEmbed = props.onMoveEmbed, onResizeEmbed = props.onResizeEmbed, onDeleteEmbed = props.onDeleteEmbed, onRequestEditEmbed = props.onRequestEditEmbed, onMoveSlicer = props.onMoveSlicer, onResizeSlicer = props.onResizeSlicer, onDeleteSlicer = props.onDeleteSlicer, onRequestEditSlicer = props.onRequestEditSlicer, onFillRange = props.onFillRange, disableFillRightShortcut = props.disableFillRightShortcut, onMoveSelection = props.onMoveSelection, onInsertTime = props.onInsertTime, onInsertDate = props.onInsertDate, onInsertDateTime = props.onInsertDateTime, onInsertAutoSum = props.onInsertAutoSum, onUndo = props.onUndo, onRedo = props.onRedo, onPaste = props.onPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, onCreateBasicFilter = props.onCreateBasicFilter, onRequestDefineNamedRange = props.onRequestDefineNamedRange, onRequestFormatCells = props.onRequestFormatCells, onRequestConditionalFormat = props.onRequestConditionalFormat, onRequestDataValidation = props.onRequestDataValidation, onRequestInsertComment = props.onRequestInsertComment, onRequestInsertLink = props.onRequestInsertLink, onFreezeColumn = props.onFreezeColumn, onFreezeRow = props.onFreezeRow, onUpdateNote = props.onUpdateNote, onProtectRange = props.onProtectRange, onUnProtectRange = props.onUnProtectRange, onSortRange = props.onSortRange, onRequestSearch = props.onRequestSearch, onRequestReplace = props.onRequestReplace, onRequestResize = props.onRequestResize, _41 = props.getRowHeaderText, getRowHeaderText = _41 === void 0 ? helpers_1.getDefaultRowHeader : _41, _42 = props.getColumnHeaderText, getColumnHeaderText = _42 === void 0 ? helpers_1.getDefaultColumnHeader : _42, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _43 = props.tokenizer, defaultTokenizer = _43 === void 0 ? calculator_1.tokenize : _43, onChangeScale = props.onChangeScale, onRemoveLink = props.onRemoveLink, onSelectLink = props.onSelectLink, onSplitTextToColumns = props.onSplitTextToColumns, onRemoveDuplicates = props.onRemoveDuplicates, onRequestExpand = props.onRequestExpand, cellExpandPredicate = props.cellExpandPredicate, _44 = props.StructuredResult, StructuredResult = _44 === void 0 ? cell_structured_1.StructuredResultRenderer : _44, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _45 = props.showSelectionResizeHandles, showSelectionResizeHandles = _45 === void 0 ? true : _45, enableMagicFill = props.enableMagicFill, _46 = props.enableQuickEdit, enableQuickEdit = _46 === void 0 ? true : _46, MagicFillComponent = props.MagicFillComponent, MagicFillContent = props.MagicFillContent, QuickEdit = props.QuickEdit, PasteMenu = props.PasteMenu, SuggestionAction = props.SuggestionAction, HiddenRowMarkers = props.HiddenRowMarkers, HiddenColumnMarkers = props.HiddenColumnMarkers, enableResizerOverflow = props.enableResizerOverflow, className = props.className, _47 = props.defaultFontSizePoint, defaultFontSizePoint = _47 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _47, readonly = props.readonly, _48 = props.isComparing, isComparing = _48 === void 0 ? false : _48, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
|
|
111
|
+
var licenseKey = props.licenseKey, sheetId = props.sheetId, instanceId = props.instanceId, _a = props.activeCell, activeCell = _a === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _a, _b = props.selections, selections = _b === void 0 ? config_1.DEFAULT_ARRAY : _b, _c = props.frozenColumnCount, frozenColumnCount = _c === void 0 ? 0 : _c, _d = props.frozenRowCount, frozenRowCount = _d === void 0 ? 0 : _d, _e = props.rowCount, rowCount = _e === void 0 ? config_1.DEFAULT_ROW_COUNT : _e, _f = props.columnCount, columnCount = _f === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _f, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _g = props.bandedRanges, bandedRanges = _g === void 0 ? config_1.DEFAULT_ARRAY : _g, _h = props.tableBorderColor, tableBorderColor = _h === void 0 ? "#008000" : _h, _j = props.filterIconColor, filterIconColor = _j === void 0 ? "#008000" : _j, conditionalFormats = props.conditionalFormats, _k = props.showFilterIcon, showFilterIcon = _k === void 0 ? true : _k, _l = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _l === void 0 ? true : _l, _m = props.showHeaders, showHeaders = _m === void 0 ? true : _m, _o = props.defaultColumnWidth, defaultColumnWidth = _o === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _o, _p = props.defaultRowHeight, defaultRowHeight = _p === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _p, _q = props.columnHeaderHeight, columnHeaderHeight = _q === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _q, _r = props.rowHeaderWidth, rowHeaderWidth = _r === void 0 ? config_1.ROW_HEADER_WIDTH : _r, _s = props.gridLineColor, gridLineColor = _s === void 0 ? config_1.GRIDLINE_COLOR : _s, _t = props.cellBackgroundColor, cellBackgroundColor = _t === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _t, _u = props.cellColor, cellColor = _u === void 0 ? config_1.DEFAULT_CELL_COLOR : _u, _v = props.headerBorderColor, headerBorderColor = _v === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _v, _w = props.headerBackgroundColor, headerBackgroundColor = _w === void 0 ? config_1.DEFAULT_HEADER_BG : _w, _x = props.headerColor, headerColor = _x === void 0 ? config_1.DEFAULT_HEADER_COLOR : _x, _y = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _y === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _y, _z = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _z === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _z, _0 = props.headerSelectedColor, headerSelectedColor = _0 === void 0 ? "white" : _0, _1 = props.headerTableBackgroundColor, headerTableBackgroundColor = _1 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _1, _2 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _2, _3 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _3 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _3, _4 = props.frozenShadowColor, frozenShadowColor = _4 === void 0 ? headerBorderColor : _4, _5 = props.frozenShadowThickness, frozenShadowThickness = _5 === void 0 ? 1 : _5, _6 = props.selectionBackgroundColor, selectionBackgroundColor = _6 === void 0 ? config_1.SELECTION_BG : _6, _7 = props.selectionBorderColor, selectionBorderColor = _7 === void 0 ? config_1.SELECTION_BORDER : _7, _8 = props.selectionDragBorderColor, selectionDragBorderColor = _8 === void 0 ? config_1.SELECTION_BORDER : _8, chartSelectedColor = props.chartSelectedColor, _9 = props.chipBackgroundColor, chipBackgroundColor = _9 === void 0 ? config_1.CHIP_COLOR : _9, _10 = props.merges, merges = _10 === void 0 ? config_1.DEFAULT_ARRAY : _10, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _11 = props.isWorkbookProtected, isWorkbookProtectedProp = _11 === void 0 ? false : _11, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, embeds = props.embeds, slicers = props.slicers, _12 = props.rowMetadata, rowMetadata = _12 === void 0 ? config_1.DEFAULT_ARRAY : _12, _13 = props.columnMetadata, columnMetadata = _13 === void 0 ? config_1.DEFAULT_ARRAY : _13, _14 = props.scale, scale = _14 === void 0 ? 1 : _14, _15 = props.zoomSpeed, zoomSpeed = _15 === void 0 ? 1 : _15, _16 = props.overscanCount, overscanCount = _16 === void 0 ? 3 : _16, _17 = props.enableEditOnEnterKey, enableEditOnEnterKey = _17 === void 0 ? true : _17, _18 = props.enableTextOverflow, enableTextOverflow = _18 === void 0 ? true : _18, _showGridLines = props.showGridLines, _19 = props.showFormulas, showFormulas = _19 === void 0 ? false : _19, _20 = props.protectFormulas, protectFormulas = _20 === void 0 ? false : _20, _21 = props.showFrozenSeparator, showFrozenSeparator = _21 === void 0 ? true : _21, _22 = props.HeaderCell, HeaderCell = _22 === void 0 ? header_cell_1.HeaderCell : _22, _23 = props.Cell, Cell = _23 === void 0 ? cell_1.Cell : _23, _24 = props.SelectionTitleComponent, SelectionTitleComponent = _24 === void 0 ? title_1.SelectionTitle : _24, _25 = props.CellEditor, CellEditor = _25 === void 0 ? cell_editor_1.CellEditor : _25, CellTooltip = props.CellTooltip, _26 = props.ContextMenu, ContextMenu = _26 === void 0 ? context_menu_1.ContextMenu : _26, _27 = props.ContextMenuWrapper, ContextMenuWrapper = _27 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _27, _28 = props.FilterBox, FilterBox = _28 === void 0 ? filter_box_1.FilterBox : _28, _29 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _29 === void 0 ? header_move_1.HeaderMoveDragComponent : _29, SuggestionsDropdown = props.SuggestionsDropdown, _30 = props.stickyEditor, stickyEditor = _30 === void 0 ? true : _30, _31 = props.scrollSnap, scrollSnap = _31 === void 0 ? false : _31, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _32 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _32 === void 0 ? 60 : _32, _33 = props.tooltipIntentInterval, tooltipIntentInterval = _33 === void 0 ? 60 : _33, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _34 = props.showHeaderMenuButton, showHeaderMenuButton = _34 === void 0 ? true : _34, _35 = props.scrollbarSize, scrollbarSize = _35 === void 0 ? config_1.SCROLLBAR_SIZE : _35, _36 = props.theme, theme = _36 === void 0 ? config_1.defaultSpreadsheetTheme : _36, _37 = props.showNotes, showNotes = _37 === void 0 ? true : _37, _38 = props.showComments, showComments = _38 === void 0 ? true : _38, locale = props.locale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, getChartComponent = props.getChartComponent, getEmbedComponent = props.getEmbedComponent, getSlicerComponent = props.getSlicerComponent, onChange = props.onChange, onChangeBatch = props.onChangeBatch, onExpandCollapse = props.onExpandCollapse, onPivotDrillDown = props.onPivotDrillDown, onDelete = props.onDelete, onChangeEditorValue = props.onChangeEditorValue, onFill = props.onFill, onRequestCalculate = props.onRequestCalculate, onChangeActiveCell = props.onChangeActiveCell, onChangeActiveSheet = props.onChangeActiveSheet, onChangeSelections = props.onChangeSelections, getSheetName = props.getSheetName, getSheetId = props.getSheetId, getCellData = props.getCellData, getNoteProp = props.getNote, getTextFormatRuns = props.getTextFormatRuns, getDataValidation = props.getDataValidation, getEffectiveFormat = props.getEffectiveFormat, getFormattedValueProp = props.getFormattedValue, getTooltipContent = props.getTooltipContent, errorResolutionComponent = props.errorResolutionComponent, getEffectiveValueProp = props.getEffectiveValue, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _39 = props.windowConditionalFormats, windowConditionalFormats = _39 === void 0 ? false : _39, _40 = props.engineConditionalFormatResults, engineConditionalFormatResults = _40 === void 0 ? false : _40, onResize = props.onResize, onAutoResize = props.onAutoResize, onHideColumn = props.onHideColumn, onHideRow = props.onHideRow, onShowColumn = props.onShowColumn, onShowRow = props.onShowRow, onGroupRows = props.onGroupRows, onUngroupRows = props.onUngroupRows, onCollapseRowGroup = props.onCollapseRowGroup, onExpandRowGroup = props.onExpandRowGroup, onGroupColumns = props.onGroupColumns, onUngroupColumns = props.onUngroupColumns, onCollapseColumnGroup = props.onCollapseColumnGroup, onExpandColumnGroup = props.onExpandColumnGroup, onSetOutlineDepth = props.onSetOutlineDepth, onDeleteRow = props.onDeleteRow, onDeleteColumn = props.onDeleteColumn, onInsertRow = props.onInsertRow, onInsertColumn = props.onInsertColumn, onInsertCellsShiftDown = props.onInsertCellsShiftDown, onInsertCellsShiftRight = props.onInsertCellsShiftRight, onDeleteCellsShiftLeft = props.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = props.onDeleteCellsShiftUp, onClearContents = props.onClearContents, onMoveColumns = props.onMoveColumns, onMoveRows = props.onMoveRows, onSelectNextSheet = props.onSelectNextSheet, onSelectPreviousSheet = props.onSelectPreviousSheet, onCreateNewSheet = props.onCreateNewSheet, onKeyDown = props.onKeyDown, onChangeFormatting = props.onChangeFormatting, onRepeatFormatting = props.onRepeatFormatting, onClearFormatting = props.onClearFormatting, onRequestEditProtectedRange = props.onRequestEditProtectedRange, onMoveChart = props.onMoveChart, onResizeChart = props.onResizeChart, onDeleteChart = props.onDeleteChart, onMoveEmbed = props.onMoveEmbed, onResizeEmbed = props.onResizeEmbed, onDeleteEmbed = props.onDeleteEmbed, onRequestEditEmbed = props.onRequestEditEmbed, onMoveSlicer = props.onMoveSlicer, onResizeSlicer = props.onResizeSlicer, onDeleteSlicer = props.onDeleteSlicer, onRequestEditSlicer = props.onRequestEditSlicer, onFillRange = props.onFillRange, disableFillRightShortcut = props.disableFillRightShortcut, keymap = props.keymap, onCalculateNow = props.onCalculateNow, onRequestGoTo = props.onRequestGoTo, onMoveSelection = props.onMoveSelection, onInsertTime = props.onInsertTime, onInsertDate = props.onInsertDate, onInsertDateTime = props.onInsertDateTime, onInsertAutoSum = props.onInsertAutoSum, onUndo = props.onUndo, onRedo = props.onRedo, onPaste = props.onPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, onCreateBasicFilter = props.onCreateBasicFilter, onRequestDefineNamedRange = props.onRequestDefineNamedRange, onRequestFormatCells = props.onRequestFormatCells, onRequestConditionalFormat = props.onRequestConditionalFormat, onRequestDataValidation = props.onRequestDataValidation, onRequestInsertComment = props.onRequestInsertComment, onRequestInsertLink = props.onRequestInsertLink, onFreezeColumn = props.onFreezeColumn, onFreezeRow = props.onFreezeRow, onUpdateNote = props.onUpdateNote, onProtectRange = props.onProtectRange, onUnProtectRange = props.onUnProtectRange, onSortRange = props.onSortRange, onRequestSearch = props.onRequestSearch, onRequestReplace = props.onRequestReplace, onRequestResize = props.onRequestResize, _41 = props.getRowHeaderText, getRowHeaderText = _41 === void 0 ? helpers_1.getDefaultRowHeader : _41, _42 = props.getColumnHeaderText, getColumnHeaderText = _42 === void 0 ? helpers_1.getDefaultColumnHeader : _42, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _43 = props.tokenizer, defaultTokenizer = _43 === void 0 ? calculator_1.tokenize : _43, onChangeScale = props.onChangeScale, onRemoveLink = props.onRemoveLink, onSelectLink = props.onSelectLink, onSplitTextToColumns = props.onSplitTextToColumns, onRemoveDuplicates = props.onRemoveDuplicates, onGoalSeek = props.onGoalSeek, onSubtotal = props.onSubtotal, onAdvancedFilter = props.onAdvancedFilter, onRequestExpand = props.onRequestExpand, cellExpandPredicate = props.cellExpandPredicate, _44 = props.StructuredResult, StructuredResult = _44 === void 0 ? cell_structured_1.StructuredResultRenderer : _44, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _45 = props.showSelectionResizeHandles, showSelectionResizeHandles = _45 === void 0 ? true : _45, enableMagicFill = props.enableMagicFill, _46 = props.enableQuickEdit, enableQuickEdit = _46 === void 0 ? true : _46, MagicFillComponent = props.MagicFillComponent, MagicFillContent = props.MagicFillContent, QuickEdit = props.QuickEdit, PasteMenu = props.PasteMenu, SuggestionAction = props.SuggestionAction, HiddenRowMarkers = props.HiddenRowMarkers, HiddenColumnMarkers = props.HiddenColumnMarkers, enableResizerOverflow = props.enableResizerOverflow, className = props.className, _47 = props.defaultFontSizePoint, defaultFontSizePoint = _47 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _47, readonly = props.readonly, _48 = props.isComparing, isComparing = _48 === void 0 ? false : _48, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
|
|
107
112
|
// Host-driven filter props. `hostHiddenRowRanges`
|
|
108
113
|
// supplies compact [start, end] hidden-row tuples; `getFilterValues` supplies a
|
|
109
114
|
// column's distinct values. Both let a million-row filter render without scanning
|
|
@@ -115,7 +120,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
115
120
|
// defaults to `getFormattedValue` inside `useGetValuesFromRange`.
|
|
116
121
|
getValidationSourceValue = props.getValidationSourceValue,
|
|
117
122
|
// Unused props only for api
|
|
118
|
-
onChangeBorder = props.onChangeBorder, onDuplicateSheet = props.onDuplicateSheet, onCreateConditionalFormattingRule = props.onCreateConditionalFormattingRule, onDeleteConditionalFormattingRule = props.onDeleteConditionalFormattingRule, onUpdateConditionalFormattingRule = props.onUpdateConditionalFormattingRule, onCreateDataValidationRule = props.onCreateDataValidationRule, onUpdateDataValidationRule = props.onUpdateDataValidationRule, onDeleteDataValidationRule = props.onDeleteDataValidationRule, onCreateChart = props.onCreateChart, onDeleteSheet = props.onDeleteSheet, onCreateEmbed = props.onCreateEmbed, onDecreaseIndent = props.onDecreaseIndent, onIncreaseIndent = props.onIncreaseIndent, onChangeTheme = props.onChangeTheme, onChangeDecimals = props.onChangeDecimals, onUpdateSheet = props.onUpdateSheet, onChangeBatchStream = props.onChangeBatchStream, onBlur = props.onBlur, rest = tslib_1.__rest(props, ["licenseKey", "sheetId", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enableTextOverflow", "showGridLines", "showFormulas", "protectFormulas", "showFrozenSeparator", "HeaderCell", "Cell", "SelectionTitleComponent", "CellEditor", "CellTooltip", "ContextMenu", "ContextMenuWrapper", "FilterBox", "HeaderMoveDragComponent", "SuggestionsDropdown", "stickyEditor", "scrollSnap", "scrollThrottleTimeout", "preventBrowserDefaultScroll", "mouseMoveThrottleTimeout", "tooltipIntentInterval", "selectionPolicy", "users", "userId", "renderCollaboratorCursor", "functionDescriptions", "showHeaderMenuButton", "scrollbarSize", "theme", "showNotes", "showComments", "locale", "agentSuggestions", "onReviewSuggestion", "onShowFormulas", "getDataRowCount", "getChartComponent", "getEmbedComponent", "getSlicerComponent", "onChange", "onChangeBatch", "onExpandCollapse", "onPivotDrillDown", "onDelete", "onChangeEditorValue", "onFill", "onRequestCalculate", "onChangeActiveCell", "onChangeActiveSheet", "onChangeSelections", "getSheetName", "getSheetId", "getCellData", "getNote", "getTextFormatRuns", "getDataValidation", "getEffectiveFormat", "getFormattedValue", "getTooltipContent", "errorResolutionComponent", "getEffectiveValue", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "onMoveSelection", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "onPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRemoveTable", "onCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "onCreateBasicFilter", "onRequestDefineNamedRange", "onRequestFormatCells", "onRequestConditionalFormat", "onRequestDataValidation", "onRequestInsertComment", "onRequestInsertLink", "onFreezeColumn", "onFreezeRow", "onUpdateNote", "onProtectRange", "onUnProtectRange", "onSortRange", "onRequestSearch", "onRequestReplace", "onRequestResize", "getRowHeaderText", "getColumnHeaderText", "getAdditionalCellSpacing", "tokenizer", "onChangeScale", "onRemoveLink", "onSelectLink", "onSplitTextToColumns", "onRemoveDuplicates", "onRequestExpand", "cellExpandPredicate", "StructuredResult", "getMentions", "getStructuredProperties", "getFunctionParameterSuggestions", "shouldFetchFunctionParameters", "MentionTagComponent", "MentionDropdownItemComponent", "showSelectionResizeHandles", "enableMagicFill", "enableQuickEdit", "MagicFillComponent", "MagicFillContent", "QuickEdit", "PasteMenu", "SuggestionAction", "HiddenRowMarkers", "HiddenColumnMarkers", "enableResizerOverflow", "className", "defaultFontSizePoint", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
|
|
123
|
+
onChangeBorder = props.onChangeBorder, onDuplicateSheet = props.onDuplicateSheet, onCreateConditionalFormattingRule = props.onCreateConditionalFormattingRule, onDeleteConditionalFormattingRule = props.onDeleteConditionalFormattingRule, onUpdateConditionalFormattingRule = props.onUpdateConditionalFormattingRule, onCreateDataValidationRule = props.onCreateDataValidationRule, onUpdateDataValidationRule = props.onUpdateDataValidationRule, onDeleteDataValidationRule = props.onDeleteDataValidationRule, onCreateChart = props.onCreateChart, onDeleteSheet = props.onDeleteSheet, onCreateEmbed = props.onCreateEmbed, onDecreaseIndent = props.onDecreaseIndent, onIncreaseIndent = props.onIncreaseIndent, onChangeTheme = props.onChangeTheme, onChangeDecimals = props.onChangeDecimals, onUpdateSheet = props.onUpdateSheet, onChangeBatchStream = props.onChangeBatchStream, onBlur = props.onBlur, rest = tslib_1.__rest(props, ["licenseKey", "sheetId", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enableTextOverflow", "showGridLines", "showFormulas", "protectFormulas", "showFrozenSeparator", "HeaderCell", "Cell", "SelectionTitleComponent", "CellEditor", "CellTooltip", "ContextMenu", "ContextMenuWrapper", "FilterBox", "HeaderMoveDragComponent", "SuggestionsDropdown", "stickyEditor", "scrollSnap", "scrollThrottleTimeout", "preventBrowserDefaultScroll", "mouseMoveThrottleTimeout", "tooltipIntentInterval", "selectionPolicy", "users", "userId", "renderCollaboratorCursor", "functionDescriptions", "showHeaderMenuButton", "scrollbarSize", "theme", "showNotes", "showComments", "locale", "agentSuggestions", "onReviewSuggestion", "onShowFormulas", "getDataRowCount", "getChartComponent", "getEmbedComponent", "getSlicerComponent", "onChange", "onChangeBatch", "onExpandCollapse", "onPivotDrillDown", "onDelete", "onChangeEditorValue", "onFill", "onRequestCalculate", "onChangeActiveCell", "onChangeActiveSheet", "onChangeSelections", "getSheetName", "getSheetId", "getCellData", "getNote", "getTextFormatRuns", "getDataValidation", "getEffectiveFormat", "getFormattedValue", "getTooltipContent", "errorResolutionComponent", "getEffectiveValue", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "keymap", "onCalculateNow", "onRequestGoTo", "onMoveSelection", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "onPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRemoveTable", "onCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "onCreateBasicFilter", "onRequestDefineNamedRange", "onRequestFormatCells", "onRequestConditionalFormat", "onRequestDataValidation", "onRequestInsertComment", "onRequestInsertLink", "onFreezeColumn", "onFreezeRow", "onUpdateNote", "onProtectRange", "onUnProtectRange", "onSortRange", "onRequestSearch", "onRequestReplace", "onRequestResize", "getRowHeaderText", "getColumnHeaderText", "getAdditionalCellSpacing", "tokenizer", "onChangeScale", "onRemoveLink", "onSelectLink", "onSplitTextToColumns", "onRemoveDuplicates", "onGoalSeek", "onSubtotal", "onAdvancedFilter", "onRequestExpand", "cellExpandPredicate", "StructuredResult", "getMentions", "getStructuredProperties", "getFunctionParameterSuggestions", "shouldFetchFunctionParameters", "MentionTagComponent", "MentionDropdownItemComponent", "showSelectionResizeHandles", "enableMagicFill", "enableQuickEdit", "MagicFillComponent", "MagicFillContent", "QuickEdit", "PasteMenu", "SuggestionAction", "HiddenRowMarkers", "HiddenColumnMarkers", "enableResizerOverflow", "className", "defaultFontSizePoint", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
|
|
119
124
|
/**
|
|
120
125
|
* Fire onBlur only when the cell editor blurs to an element outside the
|
|
121
126
|
* spreadsheet. Routed through `useEditable` so we hook the always-focused
|
|
@@ -1438,6 +1443,23 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1438
1443
|
if (rule.allowBlank && isBlank) {
|
|
1439
1444
|
return undefined;
|
|
1440
1445
|
}
|
|
1446
|
+
// A typed formula is validated on its RESULT once the calculator has
|
|
1447
|
+
// run (Excel enters `=5` into a whole-number cell and checks the 5) —
|
|
1448
|
+
// its text can never be decided here, so it stays flag-only.
|
|
1449
|
+
if ((0, excel_validation_kinds_1.isFormulaEntry)(value)) {
|
|
1450
|
+
return undefined;
|
|
1451
|
+
}
|
|
1452
|
+
// Excel's Whole number / Time / Text length kinds (authored or imported
|
|
1453
|
+
// with `xlsxSource`) are decided synchronously from the typed text when
|
|
1454
|
+
// their bounds are literals — Excel blocks a decimal in a whole-number
|
|
1455
|
+
// cell at entry, not after a recalc.
|
|
1456
|
+
var excelKindVerdict = (0, excel_validation_kinds_1.checkExcelValidationValue)(rule, value);
|
|
1457
|
+
if (excelKindVerdict !== undefined) {
|
|
1458
|
+
var excelDecision = (0, validation_1.decideValidationCommit)(alert, excelKindVerdict);
|
|
1459
|
+
return excelDecision === "proceed"
|
|
1460
|
+
? undefined
|
|
1461
|
+
: { decision: excelDecision, alert: alert };
|
|
1462
|
+
}
|
|
1441
1463
|
if ((0, utils_1.isDataValidationFormulaRule)(rule)) {
|
|
1442
1464
|
// Enforce synchronously only where `checkBooleanRule` can decide the typed
|
|
1443
1465
|
// value without the calculator: CUSTOM_FORMULA's sync branch is a stub, the
|
|
@@ -1994,28 +2016,17 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1994
2016
|
* shown in tooltip
|
|
1995
2017
|
*/
|
|
1996
2018
|
/**
|
|
1997
|
-
* Compose host tooltip content with the data-validation
|
|
1998
|
-
*
|
|
1999
|
-
*
|
|
2000
|
-
*
|
|
2019
|
+
* Compose host tooltip content with the data-validation messages. Host-
|
|
2020
|
+
* provided content wins; otherwise the rule's input message (Excel's "show
|
|
2021
|
+
* input message when cell is selected") or, on an Invalid cell, the rule's
|
|
2022
|
+
* custom error alert text — see `getDataValidationTooltipContent`.
|
|
2001
2023
|
*/
|
|
2002
2024
|
var getTooltipContentWithValidation = (0, react_1.useCallback)(function (tooltipSheetId, rowIndex, columnIndex) {
|
|
2003
2025
|
var hostContent = getTooltipContent === null || getTooltipContent === void 0 ? void 0 : getTooltipContent(tooltipSheetId, rowIndex, columnIndex);
|
|
2004
2026
|
if (hostContent != null) {
|
|
2005
2027
|
return hostContent;
|
|
2006
2028
|
}
|
|
2007
|
-
|
|
2008
|
-
if ((error === null || error === void 0 ? void 0 : error.type) === "Error" || (error === null || error === void 0 ? void 0 : error.type) === "Invalid") {
|
|
2009
|
-
return undefined;
|
|
2010
|
-
}
|
|
2011
|
-
var rule = getDataValidationRule(tooltipSheetId, rowIndex, columnIndex);
|
|
2012
|
-
var inputMessage = rule === null || rule === void 0 ? void 0 : rule.inputMessage;
|
|
2013
|
-
if (!inputMessage || (!inputMessage.title && !inputMessage.message)) {
|
|
2014
|
-
return undefined;
|
|
2015
|
-
}
|
|
2016
|
-
return (react_1.default.createElement("div", { className: "bg-rnc-background text-rnc-foreground p-2 shadow-md rounded-md border-l-4 border-solid border-l-blue-700 max-w-[300px] flex flex-col gap-0.5" },
|
|
2017
|
-
inputMessage.title ? (react_1.default.createElement("div", { className: "font-bold font-system text-sm" }, inputMessage.title)) : null,
|
|
2018
|
-
inputMessage.message ? (react_1.default.createElement("div", { className: "text-xs font-system whitespace-pre-wrap" }, inputMessage.message)) : null));
|
|
2029
|
+
return (0, validation_tooltip_1.getDataValidationTooltipContent)(getDataValidationRule(tooltipSheetId, rowIndex, columnIndex), getErrorValue(tooltipSheetId, rowIndex, columnIndex));
|
|
2019
2030
|
}, [getTooltipContent, getErrorValue, getDataValidationRule]);
|
|
2020
2031
|
var getTooltip = (0, use_get_tooltip_1.useGetTooltip)({
|
|
2021
2032
|
sheetId: sheetId,
|
|
@@ -2091,6 +2102,94 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2091
2102
|
onCopy: onCopy,
|
|
2092
2103
|
onCut: onCut,
|
|
2093
2104
|
}), copiedSelections = _65.copiedSelections, clearCopiedSelections = _65.clearCopiedSelections, copy = _65.copy, cut = _65.cut, paste = _65.paste, onInternalCopy = _65.onInternalCopy, onInternalCut = _65.onInternalCut, onInternalPaste = _65.onInternalPaste;
|
|
2105
|
+
/**
|
|
2106
|
+
* Paste Special dialog (context menu → Paste special…, Ctrl+Alt+V). The
|
|
2107
|
+
* dialog is host-mounted (`PasteSpecialDialogHost`); its request routes
|
|
2108
|
+
* back through the same `paste()` the submenu uses. Without a mounted host
|
|
2109
|
+
* the trigger stays undefined so the menu item is not shown and the
|
|
2110
|
+
* shortcut is not claimed (a host that has not adopted the dialog keeps
|
|
2111
|
+
* its previous behaviour instead of a dead action).
|
|
2112
|
+
*/
|
|
2113
|
+
var openPasteSpecialDialog = (0, atoms_1.useOpenPasteSpecialDialog)();
|
|
2114
|
+
var isPasteSpecialDialogMounted = (0, atoms_1.useIsPasteSpecialDialogMounted)();
|
|
2115
|
+
var requestPasteSpecial = (0, react_1.useMemo)(function () {
|
|
2116
|
+
if (!isPasteSpecialDialogMounted)
|
|
2117
|
+
return undefined;
|
|
2118
|
+
return function () {
|
|
2119
|
+
if (readonly)
|
|
2120
|
+
return;
|
|
2121
|
+
openPasteSpecialDialog({
|
|
2122
|
+
onApply: function (options) {
|
|
2123
|
+
void paste(options);
|
|
2124
|
+
},
|
|
2125
|
+
});
|
|
2126
|
+
};
|
|
2127
|
+
}, [isPasteSpecialDialogMounted, openPasteSpecialDialog, paste, readonly]);
|
|
2128
|
+
/**
|
|
2129
|
+
* Evaluate Formula dialog (context menu → Evaluate formula) for a formula
|
|
2130
|
+
* cell. Steps are scratch-evaluated through `onRequestCalculate`, the cell
|
|
2131
|
+
* editor's live-preview calculator, so nothing is written to the sheet.
|
|
2132
|
+
* Only offered while an `EvaluateFormulaDialogHost` is mounted.
|
|
2133
|
+
*/
|
|
2134
|
+
var openEvaluateFormulaDialog = (0, atoms_1.useOpenEvaluateFormulaDialog)();
|
|
2135
|
+
var isEvaluateFormulaDialogMounted = (0, atoms_1.useIsEvaluateFormulaDialogMounted)();
|
|
2136
|
+
var requestEvaluateFormula = (0, react_1.useMemo)(function () {
|
|
2137
|
+
if (!isEvaluateFormulaDialogMounted || !onRequestCalculate)
|
|
2138
|
+
return undefined;
|
|
2139
|
+
return function (evaluateSheetId, cell) {
|
|
2140
|
+
var formula = getFormulaValue(evaluateSheetId, cell.rowIndex, cell.columnIndex);
|
|
2141
|
+
if (!formula)
|
|
2142
|
+
return;
|
|
2143
|
+
openEvaluateFormulaDialog({
|
|
2144
|
+
sheetId: evaluateSheetId,
|
|
2145
|
+
cell: cell,
|
|
2146
|
+
sheetName: getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(evaluateSheetId),
|
|
2147
|
+
formula: formula,
|
|
2148
|
+
evaluate: (0, evaluate_formula_1.createExpressionEvaluator)(onRequestCalculate, evaluateSheetId, cell),
|
|
2149
|
+
});
|
|
2150
|
+
};
|
|
2151
|
+
}, [
|
|
2152
|
+
isEvaluateFormulaDialogMounted,
|
|
2153
|
+
openEvaluateFormulaDialog,
|
|
2154
|
+
getFormulaValue,
|
|
2155
|
+
getSheetName,
|
|
2156
|
+
onRequestCalculate,
|
|
2157
|
+
]);
|
|
2158
|
+
/**
|
|
2159
|
+
* Watch Window: "Add to Watch Window" is offered only while a
|
|
2160
|
+
* `WatchWindowHost` is mounted; the live getters are published below once
|
|
2161
|
+
* `navigateToSheetRange` exists.
|
|
2162
|
+
*/
|
|
2163
|
+
var addWatch = (0, watch_window_atom_1.useAddWatch)();
|
|
2164
|
+
var isWatchWindowMounted = (0, watch_window_atom_1.useIsWatchWindowMounted)();
|
|
2165
|
+
var setWatchWindowContext = (0, watch_window_atom_1.useSetWatchWindowContext)();
|
|
2166
|
+
var requestAddWatch = (0, react_1.useMemo)(function () {
|
|
2167
|
+
if (!isWatchWindowMounted)
|
|
2168
|
+
return undefined;
|
|
2169
|
+
return function (watchSheetId, cell) {
|
|
2170
|
+
return addWatch(tslib_1.__assign({ sheetId: watchSheetId }, cell));
|
|
2171
|
+
};
|
|
2172
|
+
}, [isWatchWindowMounted, addWatch]);
|
|
2173
|
+
/**
|
|
2174
|
+
* Go To (Ctrl+G / F5). A host `onRequestGoTo` wins; otherwise the built-in
|
|
2175
|
+
* dialog opens — but only while a `GoToDialogHost` is mounted, so a host
|
|
2176
|
+
* without one keeps the browser's own Ctrl+G / F5 (the keyboard handler
|
|
2177
|
+
* claims the keys only when this is defined). The built-in opener needs
|
|
2178
|
+
* `navigateToSheetRange`, which is created further down, so it is reached
|
|
2179
|
+
* through a ref.
|
|
2180
|
+
*/
|
|
2181
|
+
var openGoToDialog = (0, atoms_1.useOpenGoToDialog)();
|
|
2182
|
+
var isGoToDialogMounted = (0, atoms_1.useIsGoToDialogMounted)();
|
|
2183
|
+
var builtInGoToRef = (0, react_1.useRef)(function () { return undefined; });
|
|
2184
|
+
var requestGoTo = (0, react_1.useMemo)(function () {
|
|
2185
|
+
if (onRequestGoTo)
|
|
2186
|
+
return onRequestGoTo;
|
|
2187
|
+
if (!isGoToDialogMounted)
|
|
2188
|
+
return undefined;
|
|
2189
|
+
return function (goToSheetId, goToActiveCell, goToSelections) {
|
|
2190
|
+
return builtInGoToRef.current(goToSheetId, goToActiveCell, goToSelections);
|
|
2191
|
+
};
|
|
2192
|
+
}, [onRequestGoTo, isGoToDialogMounted]);
|
|
2094
2193
|
/**
|
|
2095
2194
|
* After formula mode
|
|
2096
2195
|
* Recover old selections
|
|
@@ -2239,7 +2338,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2239
2338
|
* Get context Menu component
|
|
2240
2339
|
*/
|
|
2241
2340
|
var getContextMenu = (0, react_1.useCallback)(function (cell) {
|
|
2242
|
-
return (react_1.default.createElement(ContextMenu, { activeCell: activeCell, selections: selections, sheetId: sheetId, frozenRows: frozenRows, frozenColumns: frozenColumns, onHideColumn: isRestricted ? undefined : onHideColumn, onShowColumn: isRestricted ? undefined : onShowColumn, onShowRow: isRestricted ? undefined : onShowRow, onHideRow: isRestricted ? undefined : onHideRow, onGroupRows: isRestricted ? undefined : onGroupRows, onUngroupRows: isRestricted ? undefined : onUngroupRows, onGroupColumns: isRestricted ? undefined : onGroupColumns, onUngroupColumns: isRestricted ? undefined : onUngroupColumns, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, onDeleteColumn: onDeleteColumn, onDeleteRow: onDeleteRow, onInsertRow: onInsertRow, onInsertColumn: onInsertColumn, onInsertCellsShiftDown: onInsertCellsShiftDown, onInsertCellsShiftRight: onInsertCellsShiftRight, onDeleteCellsShiftLeft: onDeleteCellsShiftLeft, onDeleteCellsShiftUp: onDeleteCellsShiftUp, onClearContents: onClearContents, onFreezeColumn: onFreezeColumn, onFreezeRow: onFreezeRow, focusSheet: focusSheet, onSortColumn: onSortColumn, onInsertNote: onInsertNote, onProtectRange: onProtectRange, onUnProtectRange: onUnProtectRange, onSortRange: onSortRange, onRequestDefineNamedRange: onRequestDefineNamedRange, protectedRanges: protectedRanges, isRowHeader: isRowHeader(cell.columnIndex), isColumnHeader: isColumnHeader(cell.rowIndex), selectedRowHeadersIds: selectedRowHeadersIds, selectedColumnHeadersIds: selectedColumnHeadersIds, onCopy: copy, onCut: cut, onPaste: paste, onRequestResize: onRequestResize, isSheetFocused: isSheetFocused, tables: activeTables, pivotTables: pivotTables, basicFilter: basicFilter, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, onRemoveTable: onRemoveTable, onRequestDeletePivotTable: onRequestDeletePivotTable, onPivotDrillDown: onPivotDrillDown, onRequestFormatCells: onRequestFormatCells, onRequestConditionalFormat: onRequestConditionalFormat, onRequestDataValidation: onRequestDataValidation, onClearFormatting: onClearFormatting, onCreateTable: onCreateTable, onCreateBasicFilter: onCreateBasicFilter, onInsertTableColumn: onInsertTableColumn, onDeleteTableColumn: onDeleteTableColumn, onInsertTableRow: onInsertTableRow, onDeleteTableRow: onDeleteTableRow, onFilterTable: onFilterTable, onSortTable: onSortTable, getFormattedValue: getFormattedValue, getFormattedValuesFromRange: getFormattedValuesFromRange, isTableHeader: isTableHeader, readonly: readonly, onSplitTextToColumns: onSplitTextToColumns, onRemoveDuplicates: onRemoveDuplicates, onAddQuickEdit: onAddQuickEdit, enableMagicFill: enableMagicFill }));
|
|
2341
|
+
return (react_1.default.createElement(ContextMenu, { activeCell: activeCell, selections: selections, sheetId: sheetId, frozenRows: frozenRows, frozenColumns: frozenColumns, onHideColumn: isRestricted ? undefined : onHideColumn, onShowColumn: isRestricted ? undefined : onShowColumn, onShowRow: isRestricted ? undefined : onShowRow, onHideRow: isRestricted ? undefined : onHideRow, onGroupRows: isRestricted ? undefined : onGroupRows, onUngroupRows: isRestricted ? undefined : onUngroupRows, onGroupColumns: isRestricted ? undefined : onGroupColumns, onUngroupColumns: isRestricted ? undefined : onUngroupColumns, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, onDeleteColumn: onDeleteColumn, onDeleteRow: onDeleteRow, onInsertRow: onInsertRow, onInsertColumn: onInsertColumn, onInsertCellsShiftDown: onInsertCellsShiftDown, onInsertCellsShiftRight: onInsertCellsShiftRight, onDeleteCellsShiftLeft: onDeleteCellsShiftLeft, onDeleteCellsShiftUp: onDeleteCellsShiftUp, onClearContents: onClearContents, onFreezeColumn: onFreezeColumn, onFreezeRow: onFreezeRow, focusSheet: focusSheet, onSortColumn: onSortColumn, onInsertNote: onInsertNote, onProtectRange: onProtectRange, onUnProtectRange: onUnProtectRange, onSortRange: onSortRange, onRequestDefineNamedRange: onRequestDefineNamedRange, protectedRanges: protectedRanges, isRowHeader: isRowHeader(cell.columnIndex), isColumnHeader: isColumnHeader(cell.rowIndex), selectedRowHeadersIds: selectedRowHeadersIds, selectedColumnHeadersIds: selectedColumnHeadersIds, onCopy: copy, onCut: cut, onPaste: paste, onRequestPasteSpecial: requestPasteSpecial, onRequestEvaluateFormula: requestEvaluateFormula, onRequestAddWatch: requestAddWatch, isActiveCellFormula: Boolean(getFormulaValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)), onRequestResize: onRequestResize, isSheetFocused: isSheetFocused, tables: activeTables, pivotTables: pivotTables, basicFilter: basicFilter, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, onRemoveTable: onRemoveTable, onRequestDeletePivotTable: onRequestDeletePivotTable, onPivotDrillDown: onPivotDrillDown, onRequestFormatCells: onRequestFormatCells, onRequestConditionalFormat: onRequestConditionalFormat, onRequestDataValidation: onRequestDataValidation, onClearFormatting: onClearFormatting, onCreateTable: onCreateTable, onCreateBasicFilter: onCreateBasicFilter, onInsertTableColumn: onInsertTableColumn, onDeleteTableColumn: onDeleteTableColumn, onInsertTableRow: onInsertTableRow, onDeleteTableRow: onDeleteTableRow, onFilterTable: onFilterTable, onSortTable: onSortTable, getFormattedValue: getFormattedValue, getFormattedValuesFromRange: getFormattedValuesFromRange, isTableHeader: isTableHeader, readonly: readonly, onSplitTextToColumns: onSplitTextToColumns, onRemoveDuplicates: onRemoveDuplicates, onGoalSeek: onGoalSeek, onSubtotal: onSubtotal, onAdvancedFilter: onAdvancedFilter, onChange: onChange, getCellData: getCellData, onAddQuickEdit: onAddQuickEdit, enableMagicFill: enableMagicFill }));
|
|
2243
2342
|
}, [
|
|
2244
2343
|
isRestricted,
|
|
2245
2344
|
activeCell,
|
|
@@ -2266,6 +2365,9 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2266
2365
|
copy,
|
|
2267
2366
|
paste,
|
|
2268
2367
|
cut,
|
|
2368
|
+
requestPasteSpecial,
|
|
2369
|
+
requestEvaluateFormula,
|
|
2370
|
+
getFormulaValue,
|
|
2269
2371
|
onInsertNote,
|
|
2270
2372
|
onProtectRange,
|
|
2271
2373
|
onUnProtectRange,
|
|
@@ -2304,6 +2406,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2304
2406
|
enableMagicFill,
|
|
2305
2407
|
onSplitTextToColumns,
|
|
2306
2408
|
onRemoveDuplicates,
|
|
2409
|
+
onGoalSeek,
|
|
2410
|
+
onSubtotal,
|
|
2411
|
+
onAdvancedFilter,
|
|
2412
|
+
onChange,
|
|
2413
|
+
getCellData,
|
|
2307
2414
|
onRequestDeletePivotTable,
|
|
2308
2415
|
isHiddenColumn,
|
|
2309
2416
|
isHiddenRow,
|
|
@@ -2344,6 +2451,8 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2344
2451
|
selections: selections,
|
|
2345
2452
|
selectedColumns: selectedColumns,
|
|
2346
2453
|
selectedRows: selectedRows,
|
|
2454
|
+
selectedColumnHeadersIds: selectedColumnHeadersIds,
|
|
2455
|
+
selectedRowHeadersIds: selectedRowHeadersIds,
|
|
2347
2456
|
onChangeFormatting: onChangeFormatting,
|
|
2348
2457
|
onRepeatFormatting: onRepeatFormatting,
|
|
2349
2458
|
onInsertNote: onInsertNote,
|
|
@@ -2353,6 +2462,13 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2353
2462
|
onCreateNewSheet: onCreateNewSheet,
|
|
2354
2463
|
onFillRange: onFillRange,
|
|
2355
2464
|
disableFillRightShortcut: disableFillRightShortcut,
|
|
2465
|
+
keymap: keymap,
|
|
2466
|
+
onCalculateNow: onCalculateNow,
|
|
2467
|
+
onRequestGoTo: requestGoTo,
|
|
2468
|
+
onRequestPasteSpecial: requestPasteSpecial,
|
|
2469
|
+
onChangeBatch: onChangeBatch,
|
|
2470
|
+
getUserEnteredValue: getUserEnteredStringValue,
|
|
2471
|
+
getEffectiveValue: getEffectiveValue,
|
|
2356
2472
|
onInsertTime: onInsertTime,
|
|
2357
2473
|
onInsertDate: onInsertDate,
|
|
2358
2474
|
onInsertDateTime: onInsertDateTime,
|
|
@@ -3117,6 +3233,79 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3117
3233
|
setActiveCell: setActiveCell,
|
|
3118
3234
|
flash: flash,
|
|
3119
3235
|
});
|
|
3236
|
+
// Built-in Go To: resolve against the workbook, then select + scroll. Go
|
|
3237
|
+
// To Special scans the current selection (the whole sheet for a single
|
|
3238
|
+
// cell) through the host's `getCellData`.
|
|
3239
|
+
(0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
|
|
3240
|
+
builtInGoToRef.current = function (goToSheetId, goToActiveCell, goToSelections) {
|
|
3241
|
+
var scanRange = (goToSelections === null || goToSelections === void 0 ? void 0 : goToSelections.length) && goToSelections[0]
|
|
3242
|
+
? goToSelections[0].range
|
|
3243
|
+
: {
|
|
3244
|
+
startRowIndex: 1,
|
|
3245
|
+
endRowIndex: Math.max(1, sheetRowCount - 1),
|
|
3246
|
+
startColumnIndex: 1,
|
|
3247
|
+
endColumnIndex: Math.max(1, sheetColumnCount - 1),
|
|
3248
|
+
};
|
|
3249
|
+
openGoToDialog({
|
|
3250
|
+
sheetId: goToSheetId,
|
|
3251
|
+
activeCell: goToActiveCell,
|
|
3252
|
+
namedRanges: namedRanges,
|
|
3253
|
+
getSheetId: getSheetId,
|
|
3254
|
+
getSheetName: getSheetName,
|
|
3255
|
+
rowCount: rowCount,
|
|
3256
|
+
columnCount: columnCount,
|
|
3257
|
+
onNavigate: function (range) {
|
|
3258
|
+
navigateToSheetRange(range, { enableFlash: false });
|
|
3259
|
+
focusSheet();
|
|
3260
|
+
},
|
|
3261
|
+
special: getCellData
|
|
3262
|
+
? {
|
|
3263
|
+
resolve: function (kind) {
|
|
3264
|
+
return (0, go_to_special_1.resolveGoToSpecial)(kind, {
|
|
3265
|
+
sheetId: goToSheetId,
|
|
3266
|
+
range: scanRange,
|
|
3267
|
+
getCellData: getCellData,
|
|
3268
|
+
isRowHidden: isHiddenRow,
|
|
3269
|
+
isColumnHidden: isHiddenColumn,
|
|
3270
|
+
});
|
|
3271
|
+
},
|
|
3272
|
+
onSelectRanges: function (ranges) {
|
|
3273
|
+
var first = ranges[0];
|
|
3274
|
+
if (!first)
|
|
3275
|
+
return;
|
|
3276
|
+
setActiveCell(goToSheetId, {
|
|
3277
|
+
rowIndex: first.startRowIndex,
|
|
3278
|
+
columnIndex: first.startColumnIndex,
|
|
3279
|
+
});
|
|
3280
|
+
onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(goToSheetId, ranges.map(function (range) { return ({ range: range }); }));
|
|
3281
|
+
focusSheet();
|
|
3282
|
+
},
|
|
3283
|
+
}
|
|
3284
|
+
: undefined,
|
|
3285
|
+
});
|
|
3286
|
+
};
|
|
3287
|
+
});
|
|
3288
|
+
// Watch Window live getters — republished per render while a host is
|
|
3289
|
+
// mounted so the panel tracks recalculation.
|
|
3290
|
+
(0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
|
|
3291
|
+
if (!isWatchWindowMounted)
|
|
3292
|
+
return;
|
|
3293
|
+
setWatchWindowContext({
|
|
3294
|
+
getSheetName: getSheetName,
|
|
3295
|
+
getFormattedValue: getFormattedValue,
|
|
3296
|
+
getFormula: getFormulaValue,
|
|
3297
|
+
onNavigate: function (cell) {
|
|
3298
|
+
navigateToSheetRange({
|
|
3299
|
+
sheetId: cell.sheetId,
|
|
3300
|
+
startRowIndex: cell.rowIndex,
|
|
3301
|
+
endRowIndex: cell.rowIndex,
|
|
3302
|
+
startColumnIndex: cell.columnIndex,
|
|
3303
|
+
endColumnIndex: cell.columnIndex,
|
|
3304
|
+
}, { enableFlash: false });
|
|
3305
|
+
focusSheet();
|
|
3306
|
+
},
|
|
3307
|
+
});
|
|
3308
|
+
});
|
|
3120
3309
|
// Dispatch keyboard event
|
|
3121
3310
|
var dispatchEvent = (0, react_1.useCallback)(function (event) {
|
|
3122
3311
|
var _a, _b;
|