@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,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOpenPasteSpecialDialog = exports.useRegisterPasteSpecialDialogHost = exports.useIsPasteSpecialDialogMounted = exports.pasteSpecialDialogHostCountAtom = exports.usePasteSpecialDialogState = exports.pasteSpecialDialogAtom = void 0;
|
|
4
|
+
var jotai_1 = require("jotai");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
exports.pasteSpecialDialogAtom = (0, jotai_1.atom)(null);
|
|
7
|
+
var usePasteSpecialDialogState = function () { return (0, jotai_1.useAtom)(exports.pasteSpecialDialogAtom); };
|
|
8
|
+
exports.usePasteSpecialDialogState = usePasteSpecialDialogState;
|
|
9
|
+
/**
|
|
10
|
+
* Number of mounted `PasteSpecialDialogHost`s. The grid only claims the trigger
|
|
11
|
+
* (shortcut / context-menu item) while a host is mounted, so a host that has
|
|
12
|
+
* not adopted the dialog keeps the browser default instead of a dead action.
|
|
13
|
+
*/
|
|
14
|
+
exports.pasteSpecialDialogHostCountAtom = (0, jotai_1.atom)(0);
|
|
15
|
+
/** True when at least one `PasteSpecialDialogHost` is mounted. */
|
|
16
|
+
var useIsPasteSpecialDialogMounted = function () {
|
|
17
|
+
return (0, jotai_1.useAtomValue)(exports.pasteSpecialDialogHostCountAtom) > 0;
|
|
18
|
+
};
|
|
19
|
+
exports.useIsPasteSpecialDialogMounted = useIsPasteSpecialDialogMounted;
|
|
20
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
21
|
+
var useRegisterPasteSpecialDialogHost = function () {
|
|
22
|
+
var setCount = (0, jotai_1.useSetAtom)(exports.pasteSpecialDialogHostCountAtom);
|
|
23
|
+
(0, react_1.useEffect)(function () {
|
|
24
|
+
setCount(function (count) { return count + 1; });
|
|
25
|
+
return function () { return setCount(function (count) { return count - 1; }); };
|
|
26
|
+
}, [setCount]);
|
|
27
|
+
};
|
|
28
|
+
exports.useRegisterPasteSpecialDialogHost = useRegisterPasteSpecialDialogHost;
|
|
29
|
+
/** Returns a function that opens the host-mounted Paste Special dialog. */
|
|
30
|
+
var useOpenPasteSpecialDialog = function () {
|
|
31
|
+
var setRequest = (0, jotai_1.useSetAtom)(exports.pasteSpecialDialogAtom);
|
|
32
|
+
return (0, react_1.useCallback)(function (request) { return setRequest(request); }, [setRequest]);
|
|
33
|
+
};
|
|
34
|
+
exports.useOpenPasteSpecialDialog = useOpenPasteSpecialDialog;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RemoveDuplicatesOptions } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* One column of the range being de-duplicated.
|
|
4
|
+
*/
|
|
5
|
+
export type RemoveDuplicatesDialogColumn = {
|
|
6
|
+
/** Absolute sheet column index. */
|
|
7
|
+
columnIndex: number;
|
|
8
|
+
/** Positional label, e.g. "Column B". */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Text of the first row, shown instead of `label` when "My data has headers" is on. */
|
|
11
|
+
header?: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Open-state + payload for the Remove Duplicates dialog. The context menu
|
|
15
|
+
* (which unmounts when it closes) opens the dialog by setting this atom; the
|
|
16
|
+
* dialog itself is host-mounted so it survives the menu closing. Mirrors the
|
|
17
|
+
* Sort dialog atom pattern.
|
|
18
|
+
*/
|
|
19
|
+
export type RemoveDuplicatesDialogRequest = {
|
|
20
|
+
columns: RemoveDuplicatesDialogColumn[];
|
|
21
|
+
/** Initial state of "My data has headers". */
|
|
22
|
+
hasHeader: boolean;
|
|
23
|
+
/** Routed to `onRemoveDuplicates` by the opener. */
|
|
24
|
+
onApply: (options: RemoveDuplicatesOptions) => void;
|
|
25
|
+
};
|
|
26
|
+
export declare const removeDuplicatesDialogAtom: import("jotai").PrimitiveAtom<RemoveDuplicatesDialogRequest | null> & {
|
|
27
|
+
init: RemoveDuplicatesDialogRequest | null;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Number of mounted `RemoveDuplicatesDialogHost`s. Openers fall back to an
|
|
31
|
+
* immediate de-dupe when no host is mounted, so a host that has not adopted
|
|
32
|
+
* the dialog keeps the previous one-click behaviour instead of a dead menu
|
|
33
|
+
* item.
|
|
34
|
+
*/
|
|
35
|
+
export declare const removeDuplicatesDialogHostCountAtom: import("jotai").PrimitiveAtom<number> & {
|
|
36
|
+
init: number;
|
|
37
|
+
};
|
|
38
|
+
export declare const useRemoveDuplicatesDialogState: () => [RemoveDuplicatesDialogRequest | null, (args_0: RemoveDuplicatesDialogRequest | ((prev: RemoveDuplicatesDialogRequest | null) => RemoveDuplicatesDialogRequest | null) | null) => void];
|
|
39
|
+
/** Returns a function that opens the host-mounted Remove Duplicates dialog. */
|
|
40
|
+
export declare const useOpenRemoveDuplicatesDialog: () => (request: RemoveDuplicatesDialogRequest) => void;
|
|
41
|
+
/** True when at least one `RemoveDuplicatesDialogHost` is mounted. */
|
|
42
|
+
export declare const useIsRemoveDuplicatesDialogMounted: () => boolean;
|
|
43
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
44
|
+
export declare const useRegisterRemoveDuplicatesDialogHost: () => void;
|
|
45
|
+
//# sourceMappingURL=remove-duplicates-dialog.atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicates-dialog.atom.d.ts","sourceRoot":"","sources":["../../../atoms/remove-duplicates-dialog.atom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxC,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF,eAAO,MAAM,0BAA0B;;CACW,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC;;CAAU,CAAC;AAE3D,eAAO,MAAM,8BAA8B,+LACN,CAAC;AAEtC,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,kBAG5B,6BAA6B,SAG1C,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,kCAAkC,eACQ,CAAC;AAExD,yEAAyE;AACzE,eAAO,MAAM,qCAAqC,YAMjD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useRegisterRemoveDuplicatesDialogHost = exports.useIsRemoveDuplicatesDialogMounted = exports.useOpenRemoveDuplicatesDialog = exports.useRemoveDuplicatesDialogState = exports.removeDuplicatesDialogHostCountAtom = exports.removeDuplicatesDialogAtom = void 0;
|
|
4
|
+
var jotai_1 = require("jotai");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
exports.removeDuplicatesDialogAtom = (0, jotai_1.atom)(null);
|
|
7
|
+
/**
|
|
8
|
+
* Number of mounted `RemoveDuplicatesDialogHost`s. Openers fall back to an
|
|
9
|
+
* immediate de-dupe when no host is mounted, so a host that has not adopted
|
|
10
|
+
* the dialog keeps the previous one-click behaviour instead of a dead menu
|
|
11
|
+
* item.
|
|
12
|
+
*/
|
|
13
|
+
exports.removeDuplicatesDialogHostCountAtom = (0, jotai_1.atom)(0);
|
|
14
|
+
var useRemoveDuplicatesDialogState = function () {
|
|
15
|
+
return (0, jotai_1.useAtom)(exports.removeDuplicatesDialogAtom);
|
|
16
|
+
};
|
|
17
|
+
exports.useRemoveDuplicatesDialogState = useRemoveDuplicatesDialogState;
|
|
18
|
+
/** Returns a function that opens the host-mounted Remove Duplicates dialog. */
|
|
19
|
+
var useOpenRemoveDuplicatesDialog = function () {
|
|
20
|
+
var setRequest = (0, jotai_1.useSetAtom)(exports.removeDuplicatesDialogAtom);
|
|
21
|
+
return (0, react_1.useCallback)(function (request) { return setRequest(request); }, [setRequest]);
|
|
22
|
+
};
|
|
23
|
+
exports.useOpenRemoveDuplicatesDialog = useOpenRemoveDuplicatesDialog;
|
|
24
|
+
/** True when at least one `RemoveDuplicatesDialogHost` is mounted. */
|
|
25
|
+
var useIsRemoveDuplicatesDialogMounted = function () {
|
|
26
|
+
return (0, jotai_1.useAtomValue)(exports.removeDuplicatesDialogHostCountAtom) > 0;
|
|
27
|
+
};
|
|
28
|
+
exports.useIsRemoveDuplicatesDialogMounted = useIsRemoveDuplicatesDialogMounted;
|
|
29
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
30
|
+
var useRegisterRemoveDuplicatesDialogHost = function () {
|
|
31
|
+
var setCount = (0, jotai_1.useSetAtom)(exports.removeDuplicatesDialogHostCountAtom);
|
|
32
|
+
(0, react_1.useEffect)(function () {
|
|
33
|
+
setCount(function (count) { return count + 1; });
|
|
34
|
+
return function () { return setCount(function (count) { return count - 1; }); };
|
|
35
|
+
}, [setCount]);
|
|
36
|
+
};
|
|
37
|
+
exports.useRegisterRemoveDuplicatesDialogHost = useRegisterRemoveDuplicatesDialogHost;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { SubtotalOptions } from "../types";
|
|
2
|
+
/** One column of the range being subtotalled. */
|
|
3
|
+
export type SubtotalDialogColumn = {
|
|
4
|
+
/** Absolute sheet column index. */
|
|
5
|
+
columnIndex: number;
|
|
6
|
+
/** Positional label, e.g. "Column B". */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Text of the first row, shown instead of `label` when the data has headers. */
|
|
9
|
+
header?: string;
|
|
10
|
+
};
|
|
11
|
+
/** The dialog's choices; the opener adds the `range`. */
|
|
12
|
+
export type SubtotalDialogChoices = Omit<SubtotalOptions, "range">;
|
|
13
|
+
/**
|
|
14
|
+
* Open-state + payload for the Subtotal dialog (Excel's Data → Outline →
|
|
15
|
+
* Subtotal). The context menu opens it with the range's columns; the
|
|
16
|
+
* host-mounted dialog routes the choices back through `onApply`.
|
|
17
|
+
*/
|
|
18
|
+
export type SubtotalDialogRequest = {
|
|
19
|
+
columns: SubtotalDialogColumn[];
|
|
20
|
+
/** Initial state of "My data has headers". */
|
|
21
|
+
hasHeader: boolean;
|
|
22
|
+
/** Routed to `onSubtotal` by the opener. */
|
|
23
|
+
onApply: (choices: SubtotalDialogChoices) => void;
|
|
24
|
+
};
|
|
25
|
+
export declare const subtotalDialogAtom: import("jotai").PrimitiveAtom<SubtotalDialogRequest | null> & {
|
|
26
|
+
init: SubtotalDialogRequest | null;
|
|
27
|
+
};
|
|
28
|
+
export declare const useSubtotalDialogState: () => [SubtotalDialogRequest | null, (args_0: SubtotalDialogRequest | ((prev: SubtotalDialogRequest | null) => SubtotalDialogRequest | null) | null) => void];
|
|
29
|
+
/** Number of mounted `SubtotalDialogHost`s — the menu item is offered only while > 0. */
|
|
30
|
+
export declare const subtotalDialogHostCountAtom: import("jotai").PrimitiveAtom<number> & {
|
|
31
|
+
init: number;
|
|
32
|
+
};
|
|
33
|
+
/** True when at least one `SubtotalDialogHost` is mounted. */
|
|
34
|
+
export declare const useIsSubtotalDialogMounted: () => boolean;
|
|
35
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
36
|
+
export declare const useRegisterSubtotalDialogHost: () => void;
|
|
37
|
+
/** Returns a function that opens the host-mounted Subtotal dialog. */
|
|
38
|
+
export declare const useOpenSubtotalDialog: () => (request: SubtotalDialogRequest) => void;
|
|
39
|
+
//# sourceMappingURL=subtotal-dialog.atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtotal-dialog.atom.d.ts","sourceRoot":"","sources":["../../../atoms/subtotal-dialog.atom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,iDAAiD;AACjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,OAAO,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAA2C,CAAC;AAE3E,eAAO,MAAM,sBAAsB,+JAAoC,CAAC;AAExE,yFAAyF;AACzF,eAAO,MAAM,2BAA2B;;CAAU,CAAC;AAEnD,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B,eACQ,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,6BAA6B,YAMzC,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,kBAGpB,qBAAqB,SAGlC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOpenSubtotalDialog = exports.useRegisterSubtotalDialogHost = exports.useIsSubtotalDialogMounted = exports.subtotalDialogHostCountAtom = exports.useSubtotalDialogState = exports.subtotalDialogAtom = void 0;
|
|
4
|
+
var jotai_1 = require("jotai");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
exports.subtotalDialogAtom = (0, jotai_1.atom)(null);
|
|
7
|
+
var useSubtotalDialogState = function () { return (0, jotai_1.useAtom)(exports.subtotalDialogAtom); };
|
|
8
|
+
exports.useSubtotalDialogState = useSubtotalDialogState;
|
|
9
|
+
/** Number of mounted `SubtotalDialogHost`s — the menu item is offered only while > 0. */
|
|
10
|
+
exports.subtotalDialogHostCountAtom = (0, jotai_1.atom)(0);
|
|
11
|
+
/** True when at least one `SubtotalDialogHost` is mounted. */
|
|
12
|
+
var useIsSubtotalDialogMounted = function () {
|
|
13
|
+
return (0, jotai_1.useAtomValue)(exports.subtotalDialogHostCountAtom) > 0;
|
|
14
|
+
};
|
|
15
|
+
exports.useIsSubtotalDialogMounted = useIsSubtotalDialogMounted;
|
|
16
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
17
|
+
var useRegisterSubtotalDialogHost = function () {
|
|
18
|
+
var setCount = (0, jotai_1.useSetAtom)(exports.subtotalDialogHostCountAtom);
|
|
19
|
+
(0, react_1.useEffect)(function () {
|
|
20
|
+
setCount(function (count) { return count + 1; });
|
|
21
|
+
return function () { return setCount(function (count) { return count - 1; }); };
|
|
22
|
+
}, [setCount]);
|
|
23
|
+
};
|
|
24
|
+
exports.useRegisterSubtotalDialogHost = useRegisterSubtotalDialogHost;
|
|
25
|
+
/** Returns a function that opens the host-mounted Subtotal dialog. */
|
|
26
|
+
var useOpenSubtotalDialog = function () {
|
|
27
|
+
var setRequest = (0, jotai_1.useSetAtom)(exports.subtotalDialogAtom);
|
|
28
|
+
return (0, react_1.useCallback)(function (request) { return setRequest(request); }, [setRequest]);
|
|
29
|
+
};
|
|
30
|
+
exports.useOpenSubtotalDialog = useOpenSubtotalDialog;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SplitTextOptions } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Open-state + payload for the Text to Columns dialog (Excel's Data → Text
|
|
4
|
+
* to Columns wizard: Delimited / Fixed width). The context menu opens it
|
|
5
|
+
* with a preview of the selected column's texts; the host-mounted dialog
|
|
6
|
+
* routes the chosen delimiter or column breaks back through `onApply`.
|
|
7
|
+
*/
|
|
8
|
+
export type TextToColumnsDialogRequest = {
|
|
9
|
+
/** Texts of the first cells of the selected column (for the preview / ruler). */
|
|
10
|
+
preview: string[];
|
|
11
|
+
/** Routed to `onSplitTextToColumns` by the opener. */
|
|
12
|
+
onApply: (options: {
|
|
13
|
+
delimiter: string;
|
|
14
|
+
} & SplitTextOptions) => void;
|
|
15
|
+
};
|
|
16
|
+
export declare const textToColumnsDialogAtom: import("jotai").PrimitiveAtom<TextToColumnsDialogRequest | null> & {
|
|
17
|
+
init: TextToColumnsDialogRequest | null;
|
|
18
|
+
};
|
|
19
|
+
export declare const useTextToColumnsDialogState: () => [TextToColumnsDialogRequest | null, (args_0: TextToColumnsDialogRequest | ((prev: TextToColumnsDialogRequest | null) => TextToColumnsDialogRequest | null) | null) => void];
|
|
20
|
+
/**
|
|
21
|
+
* Number of mounted `TextToColumnsDialogHost`s. The context menu only offers
|
|
22
|
+
* "Fixed width…" while a host is mounted, so a host that has not adopted the
|
|
23
|
+
* dialog keeps its one-click delimiter items and no dead entry.
|
|
24
|
+
*/
|
|
25
|
+
export declare const textToColumnsDialogHostCountAtom: import("jotai").PrimitiveAtom<number> & {
|
|
26
|
+
init: number;
|
|
27
|
+
};
|
|
28
|
+
/** True when at least one `TextToColumnsDialogHost` is mounted. */
|
|
29
|
+
export declare const useIsTextToColumnsDialogMounted: () => boolean;
|
|
30
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
31
|
+
export declare const useRegisterTextToColumnsDialogHost: () => void;
|
|
32
|
+
/** Returns a function that opens the host-mounted Text to Columns dialog. */
|
|
33
|
+
export declare const useOpenTextToColumnsDialog: () => (request: TextToColumnsDialogRequest) => void;
|
|
34
|
+
//# sourceMappingURL=text-to-columns-dialog.atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-to-columns-dialog.atom.d.ts","sourceRoot":"","sources":["../../../atoms/text-to-columns-dialog.atom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,uBAAuB;;CAEnC,CAAC;AAEF,eAAO,MAAM,2BAA2B,mLACN,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC;;CAAU,CAAC;AAExD,mEAAmE;AACnE,eAAO,MAAM,+BAA+B,eACQ,CAAC;AAErD,yEAAyE;AACzE,eAAO,MAAM,kCAAkC,YAM9C,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,kBAGzB,0BAA0B,SAGvC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOpenTextToColumnsDialog = exports.useRegisterTextToColumnsDialogHost = exports.useIsTextToColumnsDialogMounted = exports.textToColumnsDialogHostCountAtom = exports.useTextToColumnsDialogState = exports.textToColumnsDialogAtom = void 0;
|
|
4
|
+
var jotai_1 = require("jotai");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
exports.textToColumnsDialogAtom = (0, jotai_1.atom)(null);
|
|
7
|
+
var useTextToColumnsDialogState = function () {
|
|
8
|
+
return (0, jotai_1.useAtom)(exports.textToColumnsDialogAtom);
|
|
9
|
+
};
|
|
10
|
+
exports.useTextToColumnsDialogState = useTextToColumnsDialogState;
|
|
11
|
+
/**
|
|
12
|
+
* Number of mounted `TextToColumnsDialogHost`s. The context menu only offers
|
|
13
|
+
* "Fixed width…" while a host is mounted, so a host that has not adopted the
|
|
14
|
+
* dialog keeps its one-click delimiter items and no dead entry.
|
|
15
|
+
*/
|
|
16
|
+
exports.textToColumnsDialogHostCountAtom = (0, jotai_1.atom)(0);
|
|
17
|
+
/** True when at least one `TextToColumnsDialogHost` is mounted. */
|
|
18
|
+
var useIsTextToColumnsDialogMounted = function () {
|
|
19
|
+
return (0, jotai_1.useAtomValue)(exports.textToColumnsDialogHostCountAtom) > 0;
|
|
20
|
+
};
|
|
21
|
+
exports.useIsTextToColumnsDialogMounted = useIsTextToColumnsDialogMounted;
|
|
22
|
+
/** Registers the calling component as a dialog host for its lifetime. */
|
|
23
|
+
var useRegisterTextToColumnsDialogHost = function () {
|
|
24
|
+
var setCount = (0, jotai_1.useSetAtom)(exports.textToColumnsDialogHostCountAtom);
|
|
25
|
+
(0, react_1.useEffect)(function () {
|
|
26
|
+
setCount(function (count) { return count + 1; });
|
|
27
|
+
return function () { return setCount(function (count) { return count - 1; }); };
|
|
28
|
+
}, [setCount]);
|
|
29
|
+
};
|
|
30
|
+
exports.useRegisterTextToColumnsDialogHost = useRegisterTextToColumnsDialogHost;
|
|
31
|
+
/** Returns a function that opens the host-mounted Text to Columns dialog. */
|
|
32
|
+
var useOpenTextToColumnsDialog = function () {
|
|
33
|
+
var setRequest = (0, jotai_1.useSetAtom)(exports.textToColumnsDialogAtom);
|
|
34
|
+
return (0, react_1.useCallback)(function (request) { return setRequest(request); }, [setRequest]);
|
|
35
|
+
};
|
|
36
|
+
exports.useOpenTextToColumnsDialog = useOpenTextToColumnsDialog;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { SheetCoordinate } from "../types";
|
|
2
|
+
/** A watched cell (Excel's Watch Window row). */
|
|
3
|
+
export type WatchWindowEntry = SheetCoordinate;
|
|
4
|
+
/**
|
|
5
|
+
* What the grid publishes so the host-mounted panel can show live values
|
|
6
|
+
* and jump to a cell. Republished on every grid render while a host is
|
|
7
|
+
* mounted, so values track recalculation.
|
|
8
|
+
*/
|
|
9
|
+
export type WatchWindowContext = {
|
|
10
|
+
getSheetName?: (sheetId: number) => string | undefined;
|
|
11
|
+
getFormattedValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined;
|
|
12
|
+
getFormula: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined | null;
|
|
13
|
+
onNavigate: (cell: SheetCoordinate) => void;
|
|
14
|
+
};
|
|
15
|
+
export declare const watchWindowEntriesAtom: import("jotai").PrimitiveAtom<SheetCoordinate[]> & {
|
|
16
|
+
init: SheetCoordinate[];
|
|
17
|
+
};
|
|
18
|
+
export declare const watchWindowOpenAtom: import("jotai").PrimitiveAtom<boolean> & {
|
|
19
|
+
init: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare const watchWindowContextAtom: import("jotai").PrimitiveAtom<WatchWindowContext | null> & {
|
|
22
|
+
init: WatchWindowContext | null;
|
|
23
|
+
};
|
|
24
|
+
/** Number of mounted `WatchWindowHost`s — the grid offers "Add watch" only then. */
|
|
25
|
+
export declare const watchWindowHostCountAtom: import("jotai").PrimitiveAtom<number> & {
|
|
26
|
+
init: number;
|
|
27
|
+
};
|
|
28
|
+
export declare const useIsWatchWindowMounted: () => boolean;
|
|
29
|
+
export declare const useRegisterWatchWindowHost: () => void;
|
|
30
|
+
export declare const useWatchWindowEntries: () => [SheetCoordinate[], (args_0: SheetCoordinate[] | ((prev: SheetCoordinate[]) => SheetCoordinate[])) => void];
|
|
31
|
+
export declare const useWatchWindowOpen: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
|
|
32
|
+
export declare const useWatchWindowContext: () => WatchWindowContext | null;
|
|
33
|
+
export declare const useSetWatchWindowContext: () => (args_0: WatchWindowContext | ((prev: WatchWindowContext | null) => WatchWindowContext | null) | null) => void;
|
|
34
|
+
/** Adds a cell (once) and opens the panel. */
|
|
35
|
+
export declare const useAddWatch: () => (cell: SheetCoordinate) => void;
|
|
36
|
+
export declare const useRemoveWatch: () => (cell: SheetCoordinate) => void;
|
|
37
|
+
//# sourceMappingURL=watch-window.atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-window.atom.d.ts","sourceRoot":"","sources":["../../../atoms/watch-window.atom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD,iBAAiB,EAAE,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAA+B,CAAC;AACnE,eAAO,MAAM,mBAAmB;;CAAc,CAAC;AAC/C,eAAO,MAAM,sBAAsB;;CAAwC,CAAC;AAE5E,oFAAoF;AACpF,eAAO,MAAM,wBAAwB;;CAAU,CAAC;AAEhD,eAAO,MAAM,uBAAuB,eACQ,CAAC;AAE7C,eAAO,MAAM,0BAA0B,YAMtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,mHAAwC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,2EAAqC,CAAC;AACrE,eAAO,MAAM,qBAAqB,iCAA6C,CAAC;AAChF,eAAO,MAAM,wBAAwB,sHACD,CAAC;AAOrC,8CAA8C;AAC9C,eAAO,MAAM,WAAW,eAIb,eAAe,SAUzB,CAAC;AAEF,eAAO,MAAM,cAAc,eAGhB,eAAe,SAMzB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useRemoveWatch = exports.useAddWatch = exports.useSetWatchWindowContext = exports.useWatchWindowContext = exports.useWatchWindowOpen = exports.useWatchWindowEntries = exports.useRegisterWatchWindowHost = exports.useIsWatchWindowMounted = exports.watchWindowHostCountAtom = exports.watchWindowContextAtom = exports.watchWindowOpenAtom = exports.watchWindowEntriesAtom = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var jotai_1 = require("jotai");
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
exports.watchWindowEntriesAtom = (0, jotai_1.atom)([]);
|
|
8
|
+
exports.watchWindowOpenAtom = (0, jotai_1.atom)(false);
|
|
9
|
+
exports.watchWindowContextAtom = (0, jotai_1.atom)(null);
|
|
10
|
+
/** Number of mounted `WatchWindowHost`s — the grid offers "Add watch" only then. */
|
|
11
|
+
exports.watchWindowHostCountAtom = (0, jotai_1.atom)(0);
|
|
12
|
+
var useIsWatchWindowMounted = function () {
|
|
13
|
+
return (0, jotai_1.useAtomValue)(exports.watchWindowHostCountAtom) > 0;
|
|
14
|
+
};
|
|
15
|
+
exports.useIsWatchWindowMounted = useIsWatchWindowMounted;
|
|
16
|
+
var useRegisterWatchWindowHost = function () {
|
|
17
|
+
var setCount = (0, jotai_1.useSetAtom)(exports.watchWindowHostCountAtom);
|
|
18
|
+
(0, react_1.useEffect)(function () {
|
|
19
|
+
setCount(function (count) { return count + 1; });
|
|
20
|
+
return function () { return setCount(function (count) { return count - 1; }); };
|
|
21
|
+
}, [setCount]);
|
|
22
|
+
};
|
|
23
|
+
exports.useRegisterWatchWindowHost = useRegisterWatchWindowHost;
|
|
24
|
+
var useWatchWindowEntries = function () { return (0, jotai_1.useAtom)(exports.watchWindowEntriesAtom); };
|
|
25
|
+
exports.useWatchWindowEntries = useWatchWindowEntries;
|
|
26
|
+
var useWatchWindowOpen = function () { return (0, jotai_1.useAtom)(exports.watchWindowOpenAtom); };
|
|
27
|
+
exports.useWatchWindowOpen = useWatchWindowOpen;
|
|
28
|
+
var useWatchWindowContext = function () { return (0, jotai_1.useAtomValue)(exports.watchWindowContextAtom); };
|
|
29
|
+
exports.useWatchWindowContext = useWatchWindowContext;
|
|
30
|
+
var useSetWatchWindowContext = function () {
|
|
31
|
+
return (0, jotai_1.useSetAtom)(exports.watchWindowContextAtom);
|
|
32
|
+
};
|
|
33
|
+
exports.useSetWatchWindowContext = useSetWatchWindowContext;
|
|
34
|
+
var sameCell = function (a, b) {
|
|
35
|
+
return a.sheetId === b.sheetId &&
|
|
36
|
+
a.rowIndex === b.rowIndex &&
|
|
37
|
+
a.columnIndex === b.columnIndex;
|
|
38
|
+
};
|
|
39
|
+
/** Adds a cell (once) and opens the panel. */
|
|
40
|
+
var useAddWatch = function () {
|
|
41
|
+
var setEntries = (0, jotai_1.useSetAtom)(exports.watchWindowEntriesAtom);
|
|
42
|
+
var setOpen = (0, jotai_1.useSetAtom)(exports.watchWindowOpenAtom);
|
|
43
|
+
return (0, react_1.useCallback)(function (cell) {
|
|
44
|
+
setEntries(function (entries) {
|
|
45
|
+
return entries.some(function (entry) { return sameCell(entry, cell); })
|
|
46
|
+
? entries
|
|
47
|
+
: tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(entries), false), [cell], false);
|
|
48
|
+
});
|
|
49
|
+
setOpen(true);
|
|
50
|
+
}, [setEntries, setOpen]);
|
|
51
|
+
};
|
|
52
|
+
exports.useAddWatch = useAddWatch;
|
|
53
|
+
var useRemoveWatch = function () {
|
|
54
|
+
var setEntries = (0, jotai_1.useSetAtom)(exports.watchWindowEntriesAtom);
|
|
55
|
+
return (0, react_1.useCallback)(function (cell) {
|
|
56
|
+
return setEntries(function (entries) {
|
|
57
|
+
return entries.filter(function (entry) { return !sameCell(entry, cell); });
|
|
58
|
+
});
|
|
59
|
+
}, [setEntries]);
|
|
60
|
+
};
|
|
61
|
+
exports.useRemoveWatch = useRemoveWatch;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { AdvancedFilterOptions } from "../../types";
|
|
3
|
+
export type AdvancedFilterDialogProps = {
|
|
4
|
+
/** Controls visibility. */
|
|
5
|
+
open: boolean;
|
|
6
|
+
onOpenChange(open: boolean): void;
|
|
7
|
+
/** Default "List range" (A1 reference of the data block around the active cell). */
|
|
8
|
+
initialListRange: string;
|
|
9
|
+
/** Emits the resolved options; the host routes them to `onAdvancedFilter`. */
|
|
10
|
+
onApply(options: AdvancedFilterOptions): void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Excel's Advanced Filter dialog: filter in place or copy to another
|
|
14
|
+
* location, a list range, a criteria range (header row + criteria rows),
|
|
15
|
+
* the copy destination and "Unique records only".
|
|
16
|
+
*/
|
|
17
|
+
export declare const AdvancedFilterDialog: React.MemoExoticComponent<({ open, onOpenChange, initialListRange, onApply }: AdvancedFilterDialogProps) => React.JSX.Element>;
|
|
18
|
+
/**
|
|
19
|
+
* Host-mounted, atom-driven wrapper around {@link AdvancedFilterDialog}.
|
|
20
|
+
* Mount once in the host; the context menu opens it via
|
|
21
|
+
* `useOpenAdvancedFilterDialog` and only offers the item while a host is
|
|
22
|
+
* mounted.
|
|
23
|
+
*/
|
|
24
|
+
export declare const AdvancedFilterDialogHost: {
|
|
25
|
+
(): React.JSX.Element;
|
|
26
|
+
displayName: string;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/advanced-filter-dialog/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAMtE,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,MAAM,yBAAyB,GAAG;IACtC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,oFAAoF;IACpF,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAQF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,gFACqB,yBAAyB,uBAsK9E,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;CAcpC,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdvancedFilterDialogHost = exports.AdvancedFilterDialog = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var icons_1 = require("@rowsncolumns/icons");
|
|
6
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
7
|
+
var utils_1 = require("@rowsncolumns/utils");
|
|
8
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
9
|
+
var advanced_filter_dialog_atom_1 = require("../../atoms/advanced-filter-dialog.atom");
|
|
10
|
+
var parseRange = function (text) {
|
|
11
|
+
var _a;
|
|
12
|
+
var trimmed = text.trim().replace(/^[^!]*!/, "");
|
|
13
|
+
if (!/^\$?[A-Za-z]{1,3}\$?\d+(:\$?[A-Za-z]{1,3}\$?\d+)?$/.test(trimmed))
|
|
14
|
+
return undefined;
|
|
15
|
+
return (_a = (0, utils_1.addressToSelection)(trimmed)) === null || _a === void 0 ? void 0 : _a.range;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Excel's Advanced Filter dialog: filter in place or copy to another
|
|
19
|
+
* location, a list range, a criteria range (header row + criteria rows),
|
|
20
|
+
* the copy destination and "Unique records only".
|
|
21
|
+
*/
|
|
22
|
+
exports.AdvancedFilterDialog = (0, react_1.memo)(function (_a) {
|
|
23
|
+
var open = _a.open, onOpenChange = _a.onOpenChange, initialListRange = _a.initialListRange, onApply = _a.onApply;
|
|
24
|
+
var _b = tslib_1.__read((0, react_1.useState)("filter"), 2), action = _b[0], setAction = _b[1];
|
|
25
|
+
var _c = tslib_1.__read((0, react_1.useState)(initialListRange), 2), listRange = _c[0], setListRange = _c[1];
|
|
26
|
+
var _d = tslib_1.__read((0, react_1.useState)(""), 2), criteriaRange = _d[0], setCriteriaRange = _d[1];
|
|
27
|
+
var _e = tslib_1.__read((0, react_1.useState)(""), 2), copyTo = _e[0], setCopyTo = _e[1];
|
|
28
|
+
var _f = tslib_1.__read((0, react_1.useState)(false), 2), uniqueOnly = _f[0], setUniqueOnly = _f[1];
|
|
29
|
+
var _g = tslib_1.__read((0, react_1.useState)(undefined), 2), error = _g[0], setError = _g[1];
|
|
30
|
+
(0, react_1.useEffect)(function () {
|
|
31
|
+
if (open) {
|
|
32
|
+
setAction("filter");
|
|
33
|
+
setListRange(initialListRange);
|
|
34
|
+
setCriteriaRange("");
|
|
35
|
+
setCopyTo("");
|
|
36
|
+
setUniqueOnly(false);
|
|
37
|
+
setError(undefined);
|
|
38
|
+
}
|
|
39
|
+
// Only reset on open transitions.
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
}, [open]);
|
|
42
|
+
var submit = (0, react_1.useCallback)(function (event) {
|
|
43
|
+
var _a;
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
var list = parseRange(listRange);
|
|
46
|
+
if (!list) {
|
|
47
|
+
setError("List range must be a range reference, e.g. A1:C20.");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
var criteria = parseRange(criteriaRange);
|
|
51
|
+
if (!criteria) {
|
|
52
|
+
setError("Criteria range must be a range reference, e.g. E1:F3.");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
var destination;
|
|
56
|
+
if (action === "copy") {
|
|
57
|
+
var cell = (0, utils_1.addressToCell)((_a = copyTo.trim().replace(/^[^!]*!/, "").split(":")[0]) !== null && _a !== void 0 ? _a : "");
|
|
58
|
+
if (!copyTo.trim() || !cell) {
|
|
59
|
+
setError("Copy to must be a cell reference, e.g. H1.");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
destination = cell;
|
|
63
|
+
}
|
|
64
|
+
setError(undefined);
|
|
65
|
+
onApply({
|
|
66
|
+
listRange: list,
|
|
67
|
+
criteriaRange: criteria,
|
|
68
|
+
action: action,
|
|
69
|
+
copyTo: destination,
|
|
70
|
+
uniqueOnly: uniqueOnly,
|
|
71
|
+
});
|
|
72
|
+
onOpenChange(false);
|
|
73
|
+
}, [action, listRange, criteriaRange, copyTo, uniqueOnly, onApply, onOpenChange]);
|
|
74
|
+
return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange },
|
|
75
|
+
react_1.default.createElement(ui_1.DialogContent, { className: "w-[400px] max-w-[92vw] pointer-events-auto" },
|
|
76
|
+
react_1.default.createElement(ui_1.DialogTitle, null, "Advanced filter"),
|
|
77
|
+
react_1.default.createElement(ui_1.DialogDescription, null, "Filter a list with a criteria range: conditions in one row AND together, rows OR together."),
|
|
78
|
+
react_1.default.createElement(ui_1.DialogCloseButton, { onClick: function () { return onOpenChange(false); } },
|
|
79
|
+
react_1.default.createElement(icons_1.Cross1Icon, null)),
|
|
80
|
+
react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-3 font-system text-sm" },
|
|
81
|
+
react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: submit },
|
|
82
|
+
react_1.default.createElement("div", { className: "flex flex-col gap-1", role: "radiogroup", "aria-label": "Action" },
|
|
83
|
+
react_1.default.createElement("label", { className: "flex items-center gap-1" },
|
|
84
|
+
react_1.default.createElement("input", { type: "radio", name: "advanced-filter-action", value: "filter", checked: action === "filter", onChange: function () { return setAction("filter"); } }),
|
|
85
|
+
"Filter the list, in-place"),
|
|
86
|
+
react_1.default.createElement("label", { className: "flex items-center gap-1" },
|
|
87
|
+
react_1.default.createElement("input", { type: "radio", name: "advanced-filter-action", value: "copy", checked: action === "copy", onChange: function () { return setAction("copy"); } }),
|
|
88
|
+
"Copy to another location")),
|
|
89
|
+
react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
|
|
90
|
+
"List range:",
|
|
91
|
+
react_1.default.createElement(ui_1.Input, { value: listRange, "aria-label": "List range", onChange: function (e) {
|
|
92
|
+
setListRange(e.target.value);
|
|
93
|
+
setError(undefined);
|
|
94
|
+
} })),
|
|
95
|
+
react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
|
|
96
|
+
"Criteria range:",
|
|
97
|
+
react_1.default.createElement(ui_1.Input, { autoFocus: true, value: criteriaRange, "aria-label": "Criteria range", placeholder: "e.g. E1:F3", onChange: function (e) {
|
|
98
|
+
setCriteriaRange(e.target.value);
|
|
99
|
+
setError(undefined);
|
|
100
|
+
} })),
|
|
101
|
+
action === "copy" ? (react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
|
|
102
|
+
"Copy to:",
|
|
103
|
+
react_1.default.createElement(ui_1.Input, { value: copyTo, "aria-label": "Copy to", placeholder: "e.g. H1", onChange: function (e) {
|
|
104
|
+
setCopyTo(e.target.value);
|
|
105
|
+
setError(undefined);
|
|
106
|
+
} }))) : null,
|
|
107
|
+
react_1.default.createElement("label", { className: "flex items-center gap-1" },
|
|
108
|
+
react_1.default.createElement("input", { type: "checkbox", name: "uniqueOnly", checked: uniqueOnly, onChange: function (e) { return setUniqueOnly(e.target.checked); } }),
|
|
109
|
+
"Unique records only"),
|
|
110
|
+
error ? (react_1.default.createElement("div", { role: "alert", className: "text-xs text-rnc-destructive" }, error)) : null,
|
|
111
|
+
react_1.default.createElement(ui_1.Separator, null),
|
|
112
|
+
react_1.default.createElement("div", { className: "flex justify-end gap-2" },
|
|
113
|
+
react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
|
|
114
|
+
react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm" }, "OK")))))));
|
|
115
|
+
});
|
|
116
|
+
exports.AdvancedFilterDialog.displayName = "AdvancedFilterDialog";
|
|
117
|
+
/**
|
|
118
|
+
* Host-mounted, atom-driven wrapper around {@link AdvancedFilterDialog}.
|
|
119
|
+
* Mount once in the host; the context menu opens it via
|
|
120
|
+
* `useOpenAdvancedFilterDialog` and only offers the item while a host is
|
|
121
|
+
* mounted.
|
|
122
|
+
*/
|
|
123
|
+
var AdvancedFilterDialogHost = function () {
|
|
124
|
+
var _a;
|
|
125
|
+
(0, advanced_filter_dialog_atom_1.useRegisterAdvancedFilterDialogHost)();
|
|
126
|
+
var _b = tslib_1.__read((0, advanced_filter_dialog_atom_1.useAdvancedFilterDialogState)(), 2), request = _b[0], setRequest = _b[1];
|
|
127
|
+
var close = (0, react_1.useCallback)(function () { return setRequest(null); }, [setRequest]);
|
|
128
|
+
return (react_1.default.createElement(exports.AdvancedFilterDialog, { open: request != null, onOpenChange: function (open) {
|
|
129
|
+
if (!open)
|
|
130
|
+
close();
|
|
131
|
+
}, initialListRange: (_a = request === null || request === void 0 ? void 0 : request.listRange) !== null && _a !== void 0 ? _a : "", onApply: function (options) { return request === null || request === void 0 ? void 0 : request.onApply(options); } }));
|
|
132
|
+
};
|
|
133
|
+
exports.AdvancedFilterDialogHost = AdvancedFilterDialogHost;
|
|
134
|
+
exports.AdvancedFilterDialogHost.displayName = "AdvancedFilterDialogHost";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IterativeCalculationOptions } from "../../types";
|
|
3
|
+
/** Excel's defaults (File → Options → Formulas → Calculation options). */
|
|
4
|
+
export declare const DEFAULT_ITERATIVE_CALCULATION: Required<IterativeCalculationOptions>;
|
|
5
|
+
/**
|
|
6
|
+
* Normalise a form draft the way Excel does: iterations are a whole number
|
|
7
|
+
* 1…32767, maximum change is a non-negative number; anything else falls
|
|
8
|
+
* back to the current value.
|
|
9
|
+
*/
|
|
10
|
+
export declare const normalizeIterativeCalculation: (draft: {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
maxIterations: string;
|
|
13
|
+
maxChange: string;
|
|
14
|
+
}, current: IterativeCalculationOptions | undefined) => IterativeCalculationOptions;
|
|
15
|
+
export type CalculationOptionsDialogProps = {
|
|
16
|
+
open: boolean;
|
|
17
|
+
onOpenChange(open: boolean): void;
|
|
18
|
+
/** The workbook's current policy (host state / engine setting). */
|
|
19
|
+
value?: IterativeCalculationOptions | null;
|
|
20
|
+
/**
|
|
21
|
+
* Receives the new policy on OK. Legacy engine: feed it back into the
|
|
22
|
+
* `iterativeCalculation` prop of `useSpreadsheetState`; rnc engine: the
|
|
23
|
+
* `set-iterative-calculation` command.
|
|
24
|
+
*/
|
|
25
|
+
onChange(next: IterativeCalculationOptions): void;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Excel's iterative-calculation options (enable / maximum iterations /
|
|
29
|
+
* maximum change) as a dialog. Purely presentational — the host owns the
|
|
30
|
+
* setting and applies it through `onChange`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const CalculationOptionsDialog: React.MemoExoticComponent<({ open, onOpenChange, value, onChange }: CalculationOptionsDialogProps) => React.JSX.Element>;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/calculation-options-dialog/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE/D,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,2BAA2B,CAK7E,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACrE,SAAS,2BAA2B,GAAG,SAAS,KAC/C,2BAeF,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,mEAAmE;IACnE,KAAK,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,sEACO,6BAA6B,uBAgFxE,CAAC"}
|