@rowsncolumns/spreadsheet 10.6.4 → 10.7.0
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/autocomplete.d.ts +42 -0
- package/dist/cjs/api/autocomplete.d.ts.map +1 -0
- package/dist/cjs/api/autocomplete.js +114 -0
- package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
- package/dist/cjs/api/banded-ranges.js +51 -1
- package/dist/cjs/api/error-checking.d.ts +82 -0
- package/dist/cjs/api/error-checking.d.ts.map +1 -0
- package/dist/cjs/api/error-checking.js +207 -0
- package/dist/cjs/api/move-overwrite.d.ts +8 -2
- package/dist/cjs/api/move-overwrite.d.ts.map +1 -1
- package/dist/cjs/api/move-overwrite.js +19 -3
- package/dist/cjs/api/selections.d.ts +2 -2
- package/dist/cjs/api/validation.d.ts +39 -1
- package/dist/cjs/api/validation.d.ts.map +1 -1
- package/dist/cjs/api/validation.js +87 -1
- package/dist/cjs/atoms/cell-input-context.atom.d.ts +4 -1
- package/dist/cjs/atoms/cell-input-context.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/enter-key-direction.atom.d.ts +11 -0
- package/dist/cjs/atoms/enter-key-direction.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/enter-key-direction.atom.js +13 -0
- package/dist/cjs/atoms/index.d.ts +1 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +1 -0
- package/dist/cjs/atoms/paste-menu.atom.d.ts +22 -0
- package/dist/cjs/atoms/paste-menu.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/paste-menu.atom.js +13 -1
- package/dist/cjs/atoms/pick-list.atom.d.ts +15 -0
- package/dist/cjs/atoms/pick-list.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/pick-list.atom.js +7 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +305 -70
- package/dist/cjs/components/canvas-grid/typings.d.ts +96 -11
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.d.ts +25 -0
- package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.js +39 -1
- package/dist/cjs/components/cell/cell-background.d.ts +16 -0
- package/dist/cjs/components/cell/cell-background.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-background.js +141 -54
- package/dist/cjs/components/cell/cell-text-runs.d.ts +12 -5
- package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-text-runs.js +18 -20
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +26 -21
- package/dist/cjs/components/cell/typings.d.ts +9 -0
- package/dist/cjs/components/cell/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.d.ts +22 -2
- package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.js +32 -8
- package/dist/cjs/components/cell-editor/index.d.ts +7 -1
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +85 -13
- package/dist/cjs/components/cell-indicator/index.d.ts +41 -0
- package/dist/cjs/components/cell-indicator/index.d.ts.map +1 -0
- package/dist/cjs/components/cell-indicator/index.js +90 -0
- package/dist/cjs/components/cell-input/cell-input.d.ts +10 -2
- package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/cell-input.js +5 -3
- package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/formula-bar-cell-input.js +9 -2
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts +27 -1
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline-math.js +48 -1
- package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline.js +36 -92
- package/dist/cjs/components/cell-structured/types.d.ts +6 -0
- package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
- package/dist/cjs/components/data-table-dialog/index.d.ts +22 -0
- package/dist/cjs/components/data-table-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/data-table-dialog/index.js +93 -0
- package/dist/cjs/components/error-check-smart-tag/index.d.ts +27 -0
- package/dist/cjs/components/error-check-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/error-check-smart-tag/index.js +39 -0
- package/dist/cjs/components/forecast-sheet-dialog/index.d.ts +26 -0
- package/dist/cjs/components/forecast-sheet-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/forecast-sheet-dialog/index.js +92 -0
- package/dist/cjs/components/paste-special-dialog/index.d.ts +3 -3
- package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/paste-special-dialog/index.js +61 -23
- package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
- package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
- package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +196 -0
- package/dist/cjs/components/protect-sheet-dialog/constants.d.ts +3 -0
- package/dist/cjs/components/protect-sheet-dialog/constants.d.ts.map +1 -0
- package/dist/cjs/components/protect-sheet-dialog/constants.js +5 -0
- package/dist/cjs/components/protect-sheet-dialog/index.d.ts +2 -2
- package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/protect-sheet-dialog/index.js +5 -3
- package/dist/cjs/components/scenario-manager-dialog/index.d.ts +51 -0
- package/dist/cjs/components/scenario-manager-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/scenario-manager-dialog/index.js +257 -0
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +9 -4
- package/dist/cjs/components/selection/paste-menu.d.ts +14 -1
- package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -1
- package/dist/cjs/components/selection/paste-menu.js +78 -6
- package/dist/cjs/components/selection/paste-options.d.ts +28 -0
- package/dist/cjs/components/selection/paste-options.d.ts.map +1 -0
- package/dist/cjs/components/selection/paste-options.js +70 -0
- package/dist/cjs/components/selection/types.d.ts +12 -1
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/selection-drop-menu/index.d.ts +18 -0
- package/dist/cjs/components/selection-drop-menu/index.d.ts.map +1 -0
- package/dist/cjs/components/selection-drop-menu/index.js +62 -0
- package/dist/cjs/components/solver-dialog/index.d.ts +57 -0
- package/dist/cjs/components/solver-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/solver-dialog/index.js +204 -0
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts +3 -2
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/sparkline-actions.js +6 -2
- package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/table-style-selector.js +33 -2
- package/dist/cjs/config.d.ts +5 -4
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +13 -9
- package/dist/cjs/helpers.d.ts +5 -0
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +8 -4
- package/dist/cjs/hooks/use-cell-renderer.d.ts +12 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +6 -3
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts +36 -2
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +131 -5
- package/dist/cjs/hooks/use-editable.d.ts +6 -0
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts +45 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +91 -7
- package/dist/cjs/hooks/use-keyboard-handler.d.ts +5 -1
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +10 -1
- package/dist/cjs/hooks/use-selection-drag-copy.d.ts +55 -0
- package/dist/cjs/hooks/use-selection-drag-copy.d.ts.map +1 -0
- package/dist/cjs/hooks/use-selection-drag-copy.js +274 -0
- package/dist/cjs/hooks/use-selection-renderer.d.ts +8 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +7 -2
- package/dist/cjs/hooks/use-selection.d.ts +59 -1
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +270 -61
- package/dist/cjs/index.d.ts +6 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +50 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/api/autocomplete.d.ts +42 -0
- package/dist/esm/api/autocomplete.d.ts.map +1 -0
- package/dist/esm/api/autocomplete.js +91 -0
- package/dist/esm/api/banded-ranges.d.ts.map +1 -1
- package/dist/esm/api/banded-ranges.js +52 -2
- package/dist/esm/api/error-checking.d.ts +82 -0
- package/dist/esm/api/error-checking.d.ts.map +1 -0
- package/dist/esm/api/error-checking.js +156 -0
- package/dist/esm/api/move-overwrite.d.ts +8 -2
- package/dist/esm/api/move-overwrite.d.ts.map +1 -1
- package/dist/esm/api/move-overwrite.js +17 -2
- package/dist/esm/api/selections.d.ts +2 -2
- package/dist/esm/api/validation.d.ts +39 -1
- package/dist/esm/api/validation.d.ts.map +1 -1
- package/dist/esm/api/validation.js +70 -0
- package/dist/esm/atoms/cell-input-context.atom.d.ts +4 -1
- package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -1
- package/dist/esm/atoms/enter-key-direction.atom.d.ts +11 -0
- package/dist/esm/atoms/enter-key-direction.atom.d.ts.map +1 -0
- package/dist/esm/atoms/enter-key-direction.atom.js +8 -0
- package/dist/esm/atoms/index.d.ts +1 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +1 -0
- package/dist/esm/atoms/paste-menu.atom.d.ts +22 -0
- package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -1
- package/dist/esm/atoms/paste-menu.atom.js +10 -1
- package/dist/esm/atoms/pick-list.atom.d.ts +15 -0
- package/dist/esm/atoms/pick-list.atom.d.ts.map +1 -0
- package/dist/esm/atoms/pick-list.atom.js +3 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +239 -13
- package/dist/esm/components/canvas-grid/typings.d.ts +96 -11
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.d.ts +25 -0
- package/dist/esm/components/cell/alignment.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.js +33 -0
- package/dist/esm/components/cell/cell-background.d.ts +16 -0
- package/dist/esm/components/cell/cell-background.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-background.js +106 -36
- package/dist/esm/components/cell/cell-text-runs.d.ts +12 -5
- package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-text-runs.js +17 -22
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +25 -20
- package/dist/esm/components/cell/typings.d.ts +9 -0
- package/dist/esm/components/cell/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.d.ts +22 -2
- package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.js +25 -7
- package/dist/esm/components/cell-editor/index.d.ts +7 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +80 -9
- package/dist/esm/components/cell-indicator/index.d.ts +41 -0
- package/dist/esm/components/cell-indicator/index.d.ts.map +1 -0
- package/dist/esm/components/cell-indicator/index.js +76 -0
- package/dist/esm/components/cell-input/cell-input.d.ts +10 -2
- package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/cell-input.js +5 -3
- package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/formula-bar-cell-input.js +9 -2
- package/dist/esm/components/cell-structured/sparkline-math.d.ts +27 -1
- package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline-math.js +35 -0
- package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline.js +34 -88
- package/dist/esm/components/cell-structured/types.d.ts +6 -0
- package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
- package/dist/esm/components/data-table-dialog/index.d.ts +22 -0
- package/dist/esm/components/data-table-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/data-table-dialog/index.js +75 -0
- package/dist/esm/components/error-check-smart-tag/index.d.ts +27 -0
- package/dist/esm/components/error-check-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/error-check-smart-tag/index.js +33 -0
- package/dist/esm/components/forecast-sheet-dialog/index.d.ts +26 -0
- package/dist/esm/components/forecast-sheet-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/forecast-sheet-dialog/index.js +83 -0
- package/dist/esm/components/paste-special-dialog/index.d.ts +3 -3
- package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/paste-special-dialog/index.js +58 -23
- package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
- package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
- package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +177 -0
- package/dist/esm/components/protect-sheet-dialog/constants.d.ts +3 -0
- package/dist/esm/components/protect-sheet-dialog/constants.d.ts.map +1 -0
- package/dist/esm/components/protect-sheet-dialog/constants.js +2 -0
- package/dist/esm/components/protect-sheet-dialog/index.d.ts +2 -2
- package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/protect-sheet-dialog/index.js +3 -2
- package/dist/esm/components/scenario-manager-dialog/index.d.ts +51 -0
- package/dist/esm/components/scenario-manager-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/scenario-manager-dialog/index.js +213 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +9 -4
- package/dist/esm/components/selection/paste-menu.d.ts +14 -1
- package/dist/esm/components/selection/paste-menu.d.ts.map +1 -1
- package/dist/esm/components/selection/paste-menu.js +76 -8
- package/dist/esm/components/selection/paste-options.d.ts +28 -0
- package/dist/esm/components/selection/paste-options.d.ts.map +1 -0
- package/dist/esm/components/selection/paste-options.js +62 -0
- package/dist/esm/components/selection/types.d.ts +12 -1
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/selection-drop-menu/index.d.ts +18 -0
- package/dist/esm/components/selection-drop-menu/index.d.ts.map +1 -0
- package/dist/esm/components/selection-drop-menu/index.js +56 -0
- package/dist/esm/components/solver-dialog/index.d.ts +57 -0
- package/dist/esm/components/solver-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/solver-dialog/index.js +176 -0
- package/dist/esm/components/toolbar/sparkline-actions.d.ts +3 -2
- package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -1
- package/dist/esm/components/toolbar/sparkline-actions.js +6 -2
- package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/table-style-selector.js +29 -3
- package/dist/esm/config.d.ts +5 -4
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +12 -8
- package/dist/esm/helpers.d.ts +5 -0
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +8 -4
- package/dist/esm/hooks/use-cell-renderer.d.ts +12 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +5 -2
- package/dist/esm/hooks/use-copy-paste-cut.d.ts +36 -2
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +117 -6
- package/dist/esm/hooks/use-editable.d.ts +6 -0
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.d.ts +45 -3
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +81 -6
- package/dist/esm/hooks/use-keyboard-handler.d.ts +5 -1
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +10 -1
- package/dist/esm/hooks/use-selection-drag-copy.d.ts +55 -0
- package/dist/esm/hooks/use-selection-drag-copy.d.ts.map +1 -0
- package/dist/esm/hooks/use-selection-drag-copy.js +245 -0
- package/dist/esm/hooks/use-selection-renderer.d.ts +8 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +7 -2
- package/dist/esm/hooks/use-selection.d.ts +59 -1
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +245 -52
- package/dist/esm/index.d.ts +6 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +50 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +6 -5
- package/dist/cjs/components/cell-error/index.d.ts +0 -14
- package/dist/cjs/components/cell-error/index.d.ts.map +0 -1
- package/dist/cjs/components/cell-error/index.js +0 -24
- package/dist/esm/components/cell-error/index.d.ts +0 -14
- package/dist/esm/components/cell-error/index.d.ts.map +0 -1
- package/dist/esm/components/cell-error/index.js +0 -18
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDirectionFromKey = exports.isFillSelectionCommit = exports.shouldShowCalendarPopup = void 0;
|
|
3
|
+
exports.getDirectionFromKey = exports.getEnterKeyDirection = exports.isArrayFormulaCommit = exports.isFillSelectionCommit = exports.shouldShowCalendarPopup = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
4
5
|
var grid_1 = require("@rowsncolumns/grid");
|
|
5
6
|
var utils_1 = require("@rowsncolumns/utils");
|
|
6
7
|
var shouldShowCalendarPopup = function (numberFormat) {
|
|
@@ -14,20 +15,43 @@ exports.shouldShowCalendarPopup = shouldShowCalendarPopup;
|
|
|
14
15
|
* selected cell and the active cell does not move. Only `ctrlKey` counts — on macOS Cmd+Enter is
|
|
15
16
|
* the in-cell line break (see `useEditorKeyDownPM`) and never reaches the submit path.
|
|
16
17
|
*/
|
|
17
|
-
var isFillSelectionCommit = function (e) { return (e === null || e === void 0 ? void 0 : e.key) === "Enter" && e.ctrlKey === true; };
|
|
18
|
+
var isFillSelectionCommit = function (e) { return (e === null || e === void 0 ? void 0 : e.key) === "Enter" && e.ctrlKey === true && e.shiftKey !== true; };
|
|
18
19
|
exports.isFillSelectionCommit = isFillSelectionCommit;
|
|
19
20
|
/**
|
|
20
|
-
*
|
|
21
|
+
* Excel's legacy array entry: Ctrl+Shift+Enter (Windows), ⇧⌘Return or ⌃⇧Return (Mac) commits the
|
|
22
|
+
* entry as one array formula over the selection ("Keyboard shortcuts in Excel").
|
|
23
|
+
*/
|
|
24
|
+
var isArrayFormulaCommit = function (e) {
|
|
25
|
+
return (e === null || e === void 0 ? void 0 : e.key) === "Enter" &&
|
|
26
|
+
e.shiftKey === true &&
|
|
27
|
+
(e.ctrlKey === true || e.metaKey === true);
|
|
28
|
+
};
|
|
29
|
+
exports.isArrayFormulaCommit = isArrayFormulaCommit;
|
|
30
|
+
var ENTER_DIRECTIONS = {
|
|
31
|
+
down: [grid_1.Direction.Down, grid_1.Direction.Up],
|
|
32
|
+
up: [grid_1.Direction.Up, grid_1.Direction.Down],
|
|
33
|
+
right: [grid_1.Direction.Right, grid_1.Direction.Left],
|
|
34
|
+
left: [grid_1.Direction.Left, grid_1.Direction.Right],
|
|
35
|
+
};
|
|
36
|
+
/** Where Enter (`isShift`: Shift+Enter) moves the active cell; `null` when it stays. */
|
|
37
|
+
var getEnterKeyDirection = function (isShift, enterKeyDirection) {
|
|
38
|
+
if (enterKeyDirection === void 0) { enterKeyDirection = "down"; }
|
|
39
|
+
if (enterKeyDirection === "none")
|
|
40
|
+
return null;
|
|
41
|
+
var _a = tslib_1.__read(ENTER_DIRECTIONS[enterKeyDirection], 2), forward = _a[0], back = _a[1];
|
|
42
|
+
return isShift ? back : forward;
|
|
43
|
+
};
|
|
44
|
+
exports.getEnterKeyDirection = getEnterKeyDirection;
|
|
45
|
+
/**
|
|
46
|
+
* Get next cell direction from key code. Enter follows `enterKeyDirection`, and is `null` when
|
|
47
|
+
* Enter does not move.
|
|
21
48
|
* @param code
|
|
22
49
|
* @param isShift
|
|
23
50
|
* @returns
|
|
24
51
|
*/
|
|
25
|
-
var getDirectionFromKey = function (code, isShift) {
|
|
52
|
+
var getDirectionFromKey = function (code, isShift, enterKeyDirection) {
|
|
26
53
|
if (code === "Enter") {
|
|
27
|
-
|
|
28
|
-
return grid_1.Direction.Up;
|
|
29
|
-
}
|
|
30
|
-
return grid_1.Direction.Down;
|
|
54
|
+
return (0, exports.getEnterKeyDirection)(isShift, enterKeyDirection);
|
|
31
55
|
}
|
|
32
56
|
if (code === "Tab") {
|
|
33
57
|
if (isShift) {
|
|
@@ -147,6 +147,12 @@ export type CellEditorProps = SharedEditorProps & {
|
|
|
147
147
|
* Mention dropdown component
|
|
148
148
|
*/
|
|
149
149
|
MentionDropdownItemComponent?: CanvasGridProps["MentionDropdownItemComponent"];
|
|
150
|
+
/**
|
|
151
|
+
* Excel's AutoComplete for cell values: the text entries of the edited
|
|
152
|
+
* cell's column block (read once per edit, on the first keystroke). Omit to
|
|
153
|
+
* turn AutoComplete off.
|
|
154
|
+
*/
|
|
155
|
+
getAutoCompleteEntries?: () => string[];
|
|
150
156
|
};
|
|
151
|
-
export declare const CellEditor: React.MemoExoticComponent<({ value, effectiveValue, isNewValue, onChange, sheetId, editingSheetId, cell, position, format, locale, formulaLocale, scale, autoFocus, maxWidth, maxHeight, containerWidth, onSubmit, onCancel, getNextFocusableCell, dataValidation, getRangeValues, getRangeValuesAsync, horizontalAlignment, editingSheetName, address, isScrolling, showFormulaHelp, onHideFormulaHelp, onShowFormulaHelp, onKeyDown, tokenizer, defaultBackgroundColor, defaultTextColor, theme, functionDescriptions, getNamedRanges, getTableNames, getTableColumnNames, getStructuredProperties, onRequestCalculate, editorBorderColor, isPointerDevice, SuggestionsDropdown, stickyEditor, defaultFontSizePoint, textFormatRuns, getMentions, getFunctionParameterSuggestions, shouldFetchFunctionParameters, MentionTagComponent, MentionDropdownItemComponent, navigationMode, readOnly, onCopy, onPaste, onCut, onBlur, }: CellEditorProps) => React.JSX.Element>;
|
|
157
|
+
export declare const CellEditor: React.MemoExoticComponent<({ value, effectiveValue, isNewValue, onChange, sheetId, editingSheetId, cell, position, format, locale, formulaLocale, scale, autoFocus, maxWidth, maxHeight, containerWidth, onSubmit, onCancel, getNextFocusableCell, dataValidation, getRangeValues, getRangeValuesAsync, horizontalAlignment, editingSheetName, address, isScrolling, showFormulaHelp, onHideFormulaHelp, onShowFormulaHelp, onKeyDown, tokenizer, defaultBackgroundColor, defaultTextColor, theme, functionDescriptions, getNamedRanges, getTableNames, getTableColumnNames, getStructuredProperties, onRequestCalculate, editorBorderColor, isPointerDevice, SuggestionsDropdown, stickyEditor, defaultFontSizePoint, textFormatRuns, getMentions, getFunctionParameterSuggestions, shouldFetchFunctionParameters, MentionTagComponent, MentionDropdownItemComponent, navigationMode, readOnly, onCopy, onPaste, onCut, onBlur, getAutoCompleteEntries, }: CellEditorProps) => React.JSX.Element>;
|
|
152
158
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/cell-editor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EAEtB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAEL,KAAK,aAAa,EAQnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAyD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/cell-editor/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var ui_1 = require("@rowsncolumns/ui");
|
|
6
6
|
var utils_1 = require("@rowsncolumns/utils");
|
|
7
7
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
8
|
+
var autocomplete_1 = require("../../api/autocomplete");
|
|
8
9
|
var atoms_1 = require("../../atoms");
|
|
10
|
+
var enter_key_direction_atom_1 = require("../../atoms/enter-key-direction.atom");
|
|
9
11
|
var active_editor_atom_1 = require("../../atoms/active-editor.atom");
|
|
10
12
|
var formula_mode_atom_1 = require("../../atoms/formula-mode.atom");
|
|
11
13
|
var formula_selection_state_atom_1 = require("../../atoms/formula-selection-state.atom");
|
|
@@ -21,17 +23,18 @@ var formula_result_preview_1 = require("./formula-result-preview");
|
|
|
21
23
|
var helpers_2 = require("./helpers");
|
|
22
24
|
var style_1 = require("./style");
|
|
23
25
|
exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
24
|
-
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
25
|
-
var
|
|
26
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
27
|
+
var _m = _a.value, value = _m === void 0 ? "" : _m, effectiveValue = _a.effectiveValue, isNewValue = _a.isNewValue, onChange = _a.onChange, sheetId = _a.sheetId, editingSheetId = _a.editingSheetId, cell = _a.cell, position = _a.position, format = _a.format, locale = _a.locale, formulaLocale = _a.formulaLocale, _o = _a.scale, scale = _o === void 0 ? 1 : _o, autoFocus = _a.autoFocus, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, containerWidth = _a.containerWidth, onSubmit = _a.onSubmit, onCancel = _a.onCancel, getNextFocusableCell = _a.getNextFocusableCell, dataValidation = _a.dataValidation, getRangeValues = _a.getRangeValues, getRangeValuesAsync = _a.getRangeValuesAsync, horizontalAlignment = _a.horizontalAlignment, editingSheetName = _a.editingSheetName, address = _a.address, isScrolling = _a.isScrolling, showFormulaHelp = _a.showFormulaHelp, onHideFormulaHelp = _a.onHideFormulaHelp, onShowFormulaHelp = _a.onShowFormulaHelp, onKeyDown = _a.onKeyDown, tokenizer = _a.tokenizer, defaultBackgroundColor = _a.defaultBackgroundColor, defaultTextColor = _a.defaultTextColor, theme = _a.theme, functionDescriptions = _a.functionDescriptions, getNamedRanges = _a.getNamedRanges, getTableNames = _a.getTableNames, getTableColumnNames = _a.getTableColumnNames, getStructuredProperties = _a.getStructuredProperties, onRequestCalculate = _a.onRequestCalculate, editorBorderColor = _a.editorBorderColor, isPointerDevice = _a.isPointerDevice, SuggestionsDropdown = _a.SuggestionsDropdown, stickyEditor = _a.stickyEditor, defaultFontSizePoint = _a.defaultFontSizePoint, textFormatRuns = _a.textFormatRuns, getMentions = _a.getMentions, getFunctionParameterSuggestions = _a.getFunctionParameterSuggestions, shouldFetchFunctionParameters = _a.shouldFetchFunctionParameters, MentionTagComponent = _a.MentionTagComponent, MentionDropdownItemComponent = _a.MentionDropdownItemComponent, navigationMode = _a.navigationMode, _p = _a.readOnly, readOnly = _p === void 0 ? false : _p, onCopy = _a.onCopy, onPaste = _a.onPaste, onCut = _a.onCut, onBlur = _a.onBlur, getAutoCompleteEntries = _a.getAutoCompleteEntries;
|
|
26
28
|
var editorBorderOutlineColor = editorBorderColor
|
|
27
29
|
? (0, utils_1.lightenColor)(0.5, editorBorderColor)
|
|
28
30
|
: undefined;
|
|
29
|
-
var
|
|
31
|
+
var _q = position.x, x = _q === void 0 ? 0 : _q, _r = position.y, y = _r === void 0 ? 0 : _r, cellWidth = position.width, cellHeight = position.height;
|
|
30
32
|
var formulaMode = (0, formula_mode_atom_1.useFormulaModeValue)();
|
|
31
33
|
var editorRef = (0, react_1.useRef)(null);
|
|
32
34
|
var setCellEditorInstance = (0, atoms_1.useSetCellEditorInstance)();
|
|
33
35
|
var mergedEditorRef = (0, use_merge_refs_1.useMergeRefs)(editorRef, setCellEditorInstance);
|
|
34
36
|
var setActiveEditor = (0, active_editor_atom_1.useSetActiveEditor)();
|
|
37
|
+
var enterKeyDirection = (0, enter_key_direction_atom_1.useEnterKeyDirection)();
|
|
35
38
|
var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
|
|
36
39
|
var activeEditor = (0, active_editor_atom_1.useActiveEditor)();
|
|
37
40
|
var isActiveEditor = editorRef.current === activeEditor;
|
|
@@ -40,7 +43,7 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
40
43
|
var numberFormat = format === null || format === void 0 ? void 0 : format.numberFormat;
|
|
41
44
|
var backgroundColor = format === null || format === void 0 ? void 0 : format.backgroundColor;
|
|
42
45
|
var indent = ((_b = format === null || format === void 0 ? void 0 : format.indent) !== null && _b !== void 0 ? _b : 0) + ((_c = format === null || format === void 0 ? void 0 : format.relativeIndent) !== null && _c !== void 0 ? _c : 0);
|
|
43
|
-
var
|
|
46
|
+
var _s = textFormat !== null && textFormat !== void 0 ? textFormat : {}, color = _s.color, cellfontFamily = _s.fontFamily, italic = _s.italic, bold = _s.bold, underline = _s.underline;
|
|
44
47
|
var fontSizePt = (_d = textFormat === null || textFormat === void 0 ? void 0 : textFormat.fontSize) !== null && _d !== void 0 ? _d : defaultFontSizePoint;
|
|
45
48
|
// Fall back to the theme body font so the editor agrees with the painter
|
|
46
49
|
// when the format did not come through the grid's effective-format merge.
|
|
@@ -81,7 +84,7 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
81
84
|
// Get dimension of the text value
|
|
82
85
|
var isInvisible = cellWidth === 0 && cellHeight === 0;
|
|
83
86
|
var borderWidth = 2;
|
|
84
|
-
var
|
|
87
|
+
var _t = tslib_1.__read((0, use_text_dimensions_1.useTextDimension)({
|
|
85
88
|
value: value,
|
|
86
89
|
fontSize: fontSize,
|
|
87
90
|
fontFamily: fontFamily,
|
|
@@ -91,7 +94,7 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
91
94
|
width: cellWidth,
|
|
92
95
|
height: cellHeight,
|
|
93
96
|
borderWidth: borderWidth,
|
|
94
|
-
}), 2), width =
|
|
97
|
+
}), 2), width = _t[0], height = _t[1];
|
|
95
98
|
// Mounted ref
|
|
96
99
|
(0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
|
|
97
100
|
isMounted.current = true;
|
|
@@ -131,25 +134,49 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
131
134
|
}
|
|
132
135
|
onChange === null || onChange === void 0 ? void 0 : onChange(newValue, textFormatRuns, editingSheetId, cell);
|
|
133
136
|
}, [onChange, editingSheetId, cell]);
|
|
137
|
+
// The AutoComplete entry last written after the caret (see `getAutoComplete`).
|
|
138
|
+
var lastCompletionRef = (0, react_1.useRef)(undefined);
|
|
134
139
|
// Submit handler
|
|
135
140
|
var handleSubmit = (0, react_1.useCallback)(function (newValue, textFormatRuns, e) {
|
|
136
141
|
if (!cell || (0, utils_1.isNil)(editingSheetId)) {
|
|
137
142
|
return;
|
|
138
143
|
}
|
|
144
|
+
// An accepted AutoComplete entry is committed as the column spells it
|
|
145
|
+
// ("ap" + Enter over "Apple" enters "Apple"), as Excel does.
|
|
146
|
+
var completion = lastCompletionRef.current;
|
|
147
|
+
lastCompletionRef.current = undefined;
|
|
148
|
+
var acceptsCompletion = completion !== undefined &&
|
|
149
|
+
newValue !== completion &&
|
|
150
|
+
newValue.toLowerCase() === completion.toLowerCase();
|
|
151
|
+
var submittedValue = acceptsCompletion ? completion : newValue;
|
|
152
|
+
var submittedRuns = acceptsCompletion ? undefined : textFormatRuns;
|
|
139
153
|
// Ctrl+Enter commits into the whole selection and stays put (Excel); every other
|
|
140
154
|
// commit key moves the active cell in its direction.
|
|
141
155
|
var fillSelection = (0, helpers_2.isFillSelectionCommit)(e);
|
|
142
|
-
|
|
143
|
-
|
|
156
|
+
// Ctrl+Shift+Enter / ⇧⌘Return / ⌃⇧Return: a legacy array over the selection, in place.
|
|
157
|
+
var arrayFormula = (0, helpers_2.isArrayFormulaCommit)(e);
|
|
158
|
+
var direction = e && !fillSelection && !arrayFormula
|
|
159
|
+
? (0, helpers_2.getDirectionFromKey)(e.key, e.shiftKey, enterKeyDirection)
|
|
144
160
|
: undefined;
|
|
145
161
|
var nextActiveCell = direction
|
|
146
162
|
? getNextFocusableCell === null || getNextFocusableCell === void 0 ? void 0 : getNextFocusableCell(editingSheetId, cell, direction)
|
|
147
163
|
: undefined;
|
|
148
164
|
// Submit value
|
|
149
|
-
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(
|
|
165
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(submittedValue, submittedRuns, editingSheetId, cell, nextActiveCell, undefined, arrayFormula
|
|
166
|
+
? { arrayFormula: true }
|
|
167
|
+
: fillSelection
|
|
168
|
+
? { fillSelection: true }
|
|
169
|
+
: undefined);
|
|
150
170
|
// Reset active editor
|
|
151
171
|
setActiveEditor(undefined);
|
|
152
|
-
}, [
|
|
172
|
+
}, [
|
|
173
|
+
onSubmit,
|
|
174
|
+
editingSheetId,
|
|
175
|
+
cell,
|
|
176
|
+
getNextFocusableCell,
|
|
177
|
+
setActiveEditor,
|
|
178
|
+
enterKeyDirection,
|
|
179
|
+
]);
|
|
153
180
|
// A read-only view has no caret for an arrow to move: the arrow leaves
|
|
154
181
|
// the view and moves the active cell, as it does with no editor open.
|
|
155
182
|
// Routed through the submit path, which a read-only view turns into
|
|
@@ -167,8 +194,53 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
167
194
|
}, [readOnly, value, handleSubmit, onKeyDown]);
|
|
168
195
|
// Prevent grid contextmenu from popping up
|
|
169
196
|
var onContextMenu = (0, react_1.useCallback)(function (e) { return e.stopPropagation(); }, []);
|
|
197
|
+
// AutoComplete for cell values: the column block's entries, read once per
|
|
198
|
+
// edited cell on the first keystroke. Not over a list validation (its own
|
|
199
|
+
// dropdown offers the entries) and never in formula mode.
|
|
200
|
+
var autoCompleteRef = (0, react_1.useRef)(null);
|
|
201
|
+
var editingKey = cell
|
|
202
|
+
? "".concat(editingSheetId !== null && editingSheetId !== void 0 ? editingSheetId : sheetId, ":").concat(cell.rowIndex, ":").concat(cell.columnIndex)
|
|
203
|
+
: "";
|
|
204
|
+
var hasListValidation = ((_h = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation.condition) === null || _h === void 0 ? void 0 : _h.type) === "ONE_OF_LIST" ||
|
|
205
|
+
((_j = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation.condition) === null || _j === void 0 ? void 0 : _j.type) === "ONE_OF_RANGE";
|
|
206
|
+
var getAutoComplete = (0, react_1.useCallback)(function (typed) {
|
|
207
|
+
var _a;
|
|
208
|
+
lastCompletionRef.current = undefined;
|
|
209
|
+
if (!getAutoCompleteEntries || readOnly || hasListValidation) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
if (((_a = autoCompleteRef.current) === null || _a === void 0 ? void 0 : _a.key) !== editingKey) {
|
|
213
|
+
autoCompleteRef.current = {
|
|
214
|
+
key: editingKey,
|
|
215
|
+
entries: getAutoCompleteEntries(),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
var match = (0, autocomplete_1.findAutoCompleteMatch)(typed, autoCompleteRef.current.entries);
|
|
219
|
+
lastCompletionRef.current = match;
|
|
220
|
+
return match;
|
|
221
|
+
}, [getAutoCompleteEntries, readOnly, hasListValidation, editingKey]);
|
|
222
|
+
// Excel's Pick From Drop-down List (Alt+↓): the column's entries as this
|
|
223
|
+
// cell's dropdown, until the editor moves to another cell.
|
|
224
|
+
var _u = tslib_1.__read((0, atoms_1.usePickList)(), 2), pickList = _u[0], setPickList = _u[1];
|
|
225
|
+
var pickListOptions = pickList &&
|
|
226
|
+
cell &&
|
|
227
|
+
pickList.sheetId === (editingSheetId !== null && editingSheetId !== void 0 ? editingSheetId : sheetId) &&
|
|
228
|
+
pickList.cell.rowIndex === cell.rowIndex &&
|
|
229
|
+
pickList.cell.columnIndex === cell.columnIndex
|
|
230
|
+
? pickList.entries.map(function (title) { return ({ title: title }); })
|
|
231
|
+
: undefined;
|
|
232
|
+
(0, react_1.useEffect)(function () {
|
|
233
|
+
if (pickList && !pickListOptions) {
|
|
234
|
+
setPickList(null);
|
|
235
|
+
}
|
|
236
|
+
}, [pickList, pickListOptions, setPickList]);
|
|
237
|
+
var handleCancel = (0, react_1.useCallback)(function (e) {
|
|
238
|
+
setPickList(null);
|
|
239
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);
|
|
240
|
+
}, [onCancel, setPickList]);
|
|
170
241
|
// Dropdown options
|
|
171
|
-
var
|
|
242
|
+
var _v = tslib_1.__read((0, react_1.useState)(undefined), 2), validationOptions = _v[0], setOptions = _v[1];
|
|
243
|
+
var options = validationOptions !== null && validationOptions !== void 0 ? validationOptions : pickListOptions;
|
|
172
244
|
(0, react_1.useEffect)(function () {
|
|
173
245
|
var _a, _b, _c;
|
|
174
246
|
var isActive = true;
|
|
@@ -301,11 +373,11 @@ exports.CellEditor = (0, react_1.memo)(function (_a) {
|
|
|
301
373
|
: "",
|
|
302
374
|
address)) : null,
|
|
303
375
|
formulaMode && onRequestCalculate ? (react_1.default.createElement(formula_result_preview_1.FormulaResultPreview, { value: value, formulaLocale: formulaLocale, onRequestCalculate: onRequestCalculate })) : null)) : null,
|
|
304
|
-
react_1.default.createElement(ui_1.ProseMirrorEditor, { ref: mergedEditorRef, formulaMode: formulaMode, autoFocus: autoFocus, value: value, isNewValue: isNewValue, onFocus: handleFocus, onBlur: onBlur, onChange: handleChange, onKeyDown: handleKeyDown, onSubmit: handleSubmit, onCancel:
|
|
376
|
+
react_1.default.createElement(ui_1.ProseMirrorEditor, { ref: mergedEditorRef, formulaMode: formulaMode, autoFocus: autoFocus, value: value, isNewValue: isNewValue, onFocus: handleFocus, onBlur: onBlur, onChange: handleChange, onKeyDown: handleKeyDown, onSubmit: handleSubmit, onCancel: handleCancel, disabled: readOnly, tokenizer: tokenizer, formulaLocale: formulaLocale, locale: locale, onFormulaStateChange: handleFormulaStateChange, name: "celleditor", showDropdown: isActiveEditor && !readOnly, isActive: isActiveEditor, dropdownStyles: style_1.dropdownStyles, options: readOnly ? undefined : options, isOptionSelected: (options === null || options === void 0 ? void 0 : options.length) && !readOnly ? isOptionSelected : undefined, functionDescriptions: functionDescriptions, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getTableColumnNames: getTableColumnNames, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, onShowFormulaHelp: onShowFormulaHelp, SuggestionsDropdown: SuggestionsDropdown, stickyEditor: stickyEditor, textFormatRuns: textFormatRuns, resolveRunColor: resolveRunColor, getMentions: getMentions, getFunctionParameterSuggestions: getFunctionParameterSuggestions, shouldFetchFunctionParameters: shouldFetchFunctionParameters, MentionTagComponent: MentionTagComponent, MentionDropdownItemComponent: MentionDropdownItemComponent, getStructuredProperties: getStructuredProperties, navigationMode: navigationMode, onCopy: onCopy, onCut: onCut, onPaste: onPaste, cellFontFamily: formulaMode ? undefined : cellfontFamily !== null && cellfontFamily !== void 0 ? cellfontFamily : undefined, getAutoComplete: getAutoCompleteEntries ? getAutoComplete : undefined }),
|
|
305
377
|
!formulaMode &&
|
|
306
378
|
!readOnly &&
|
|
307
379
|
isPointerDevice &&
|
|
308
|
-
(0, helpers_2.shouldShowCalendarPopup)(numberFormat) ? (react_1.default.createElement(calendar_popup_1.CalendarPopup, { value: (
|
|
380
|
+
(0, helpers_2.shouldShowCalendarPopup)(numberFormat) ? (react_1.default.createElement(calendar_popup_1.CalendarPopup, { value: (_l = (_k = effectiveValue === null || effectiveValue === void 0 ? void 0 : effectiveValue.nv) !== null && _k !== void 0 ? _k : effectiveValue === null || effectiveValue === void 0 ? void 0 : effectiveValue.numberValue) !== null && _l !== void 0 ? _l : undefined, onEscapeKeyDown: function () { var _a; return (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, onSubmit: function (value) {
|
|
309
381
|
return handleSubmit((0, utils_1.ssfFormat)((0, utils_1.getDefaultDateFormat)(locale), value));
|
|
310
382
|
} })) : null));
|
|
311
383
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Context as CanvasContext } from "konva/lib/Context";
|
|
2
|
+
import React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Excel's in-cell markers, painted at the current zoom (`scale`):
|
|
5
|
+
* - a note: red ◥ in the top-right corner;
|
|
6
|
+
* - a threaded comment: a purple speech-bubble tab in the top-right corner;
|
|
7
|
+
* - an error-checking flag: green ◤ in the top-left corner (formula errors, numbers stored as text);
|
|
8
|
+
* - "Circle Invalid Data": a red ellipse around a cell that fails its data validation.
|
|
9
|
+
*
|
|
10
|
+
* Excel does not mark a cell that fails data validation unless Data → Data Validation →
|
|
11
|
+
* Circle Invalid Data is on.
|
|
12
|
+
*/
|
|
13
|
+
type CornerProps = {
|
|
14
|
+
/** The cell's top-left corner on the canvas. */
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
scale: number;
|
|
20
|
+
};
|
|
21
|
+
/** Red ◥ in the cell's top-right corner. */
|
|
22
|
+
export declare const paintNoteIndicator: (context: Pick<CanvasContext, "beginPath" | "moveTo" | "lineTo" | "closePath" | "fill" | "setAttr">, { x, y, width, scale }: Omit<CornerProps, "height">) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Purple threaded-comment marker in the cell's top-right corner: a small speech bubble tucked in
|
|
25
|
+
* the corner, its tail pointing down-left into the cell.
|
|
26
|
+
*/
|
|
27
|
+
export declare const paintCommentIndicator: (context: Pick<CanvasContext, "beginPath" | "moveTo" | "lineTo" | "closePath" | "fill" | "setAttr">, { x, y, width, scale }: Omit<CornerProps, "height">) => void;
|
|
28
|
+
/** Green ◤ in the cell's top-left corner. */
|
|
29
|
+
export declare const paintErrorIndicator: (context: Pick<CanvasContext, "beginPath" | "moveTo" | "lineTo" | "closePath" | "fill" | "setAttr">, { x, y, scale }: Omit<CornerProps, "height" | "width">) => void;
|
|
30
|
+
/** Red ellipse around the cell ("Circle Invalid Data"). */
|
|
31
|
+
export declare const paintInvalidCircle: (context: Pick<CanvasContext, "beginPath" | "ellipse" | "stroke" | "setAttr">, { x, y, width, height, scale }: CornerProps) => void;
|
|
32
|
+
export type CellIndicatorsProps = CornerProps & {
|
|
33
|
+
showNote?: boolean;
|
|
34
|
+
showComment?: boolean;
|
|
35
|
+
showErrorIndicator?: boolean;
|
|
36
|
+
circleInvalid?: boolean;
|
|
37
|
+
};
|
|
38
|
+
/** Every marker a cell carries, in one Konva shape. */
|
|
39
|
+
export declare const CellIndicators: ({ x, y, width, height, scale, showNote, showComment, showErrorIndicator, circleInvalid, }: CellIndicatorsProps) => React.JSX.Element | null;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/cell-indicator/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B;;;;;;;;;GASG;AAEH,KAAK,WAAW,GAAG;IACjB,gDAAgD;IAChD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,GAC7B,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,EAClG,wBAAwB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,SAWpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,EAClG,wBAAwB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,SAgBpD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,GAC9B,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,EAClG,iBAAiB,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,SAUvD,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,kBAAkB,GAC7B,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,EAC5E,gCAAgC,WAAW,SAe5C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,cAAc,GAAI,2FAU5B,mBAAmB,6BAyBrB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CellIndicators = exports.paintInvalidCircle = exports.paintErrorIndicator = exports.paintCommentIndicator = exports.paintNoteIndicator = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
var react_konva_1 = require("react-konva");
|
|
7
|
+
var config_1 = require("../../config");
|
|
8
|
+
/** Red ◥ in the cell's top-right corner. */
|
|
9
|
+
var paintNoteIndicator = function (context, _a) {
|
|
10
|
+
var x = _a.x, y = _a.y, width = _a.width, scale = _a.scale;
|
|
11
|
+
var size = config_1.INDICATOR_SIZE * scale;
|
|
12
|
+
var right = x + width;
|
|
13
|
+
context.beginPath();
|
|
14
|
+
context.setAttr("fillStyle", config_1.NOTE_COLOR);
|
|
15
|
+
context.moveTo(right - size, y);
|
|
16
|
+
context.lineTo(right, y);
|
|
17
|
+
context.lineTo(right, y + size);
|
|
18
|
+
context.closePath();
|
|
19
|
+
context.fill();
|
|
20
|
+
};
|
|
21
|
+
exports.paintNoteIndicator = paintNoteIndicator;
|
|
22
|
+
/**
|
|
23
|
+
* Purple threaded-comment marker in the cell's top-right corner: a small speech bubble tucked in
|
|
24
|
+
* the corner, its tail pointing down-left into the cell.
|
|
25
|
+
*/
|
|
26
|
+
var paintCommentIndicator = function (context, _a) {
|
|
27
|
+
var x = _a.x, y = _a.y, width = _a.width, scale = _a.scale;
|
|
28
|
+
var size = config_1.INDICATOR_SIZE * scale;
|
|
29
|
+
var right = x + width;
|
|
30
|
+
var bubbleHeight = size * 0.75;
|
|
31
|
+
var tail = size * 0.35;
|
|
32
|
+
context.beginPath();
|
|
33
|
+
context.setAttr("fillStyle", config_1.COMMENT_COLOR);
|
|
34
|
+
context.moveTo(right - size, y);
|
|
35
|
+
context.lineTo(right, y);
|
|
36
|
+
context.lineTo(right, y + bubbleHeight);
|
|
37
|
+
context.lineTo(right - size + tail, y + bubbleHeight);
|
|
38
|
+
// Tail
|
|
39
|
+
context.lineTo(right - size, y + size);
|
|
40
|
+
context.closePath();
|
|
41
|
+
context.fill();
|
|
42
|
+
};
|
|
43
|
+
exports.paintCommentIndicator = paintCommentIndicator;
|
|
44
|
+
/** Green ◤ in the cell's top-left corner. */
|
|
45
|
+
var paintErrorIndicator = function (context, _a) {
|
|
46
|
+
var x = _a.x, y = _a.y, scale = _a.scale;
|
|
47
|
+
var size = config_1.INDICATOR_SIZE * scale;
|
|
48
|
+
context.beginPath();
|
|
49
|
+
context.setAttr("fillStyle", config_1.ERROR_COLOR);
|
|
50
|
+
context.moveTo(x, y);
|
|
51
|
+
context.lineTo(x + size, y);
|
|
52
|
+
context.lineTo(x, y + size);
|
|
53
|
+
context.closePath();
|
|
54
|
+
context.fill();
|
|
55
|
+
};
|
|
56
|
+
exports.paintErrorIndicator = paintErrorIndicator;
|
|
57
|
+
/** Red ellipse around the cell ("Circle Invalid Data"). */
|
|
58
|
+
var paintInvalidCircle = function (context, _a) {
|
|
59
|
+
var x = _a.x, y = _a.y, width = _a.width, height = _a.height, scale = _a.scale;
|
|
60
|
+
context.beginPath();
|
|
61
|
+
context.setAttr("strokeStyle", config_1.INVALID_COLOR);
|
|
62
|
+
context.setAttr("lineWidth", 1.5 * scale);
|
|
63
|
+
context.ellipse(x + width / 2, y + height / 2, width / 2 + 3 * scale, height / 2 + 2 * scale, 0, 0, Math.PI * 2);
|
|
64
|
+
context.stroke();
|
|
65
|
+
};
|
|
66
|
+
exports.paintInvalidCircle = paintInvalidCircle;
|
|
67
|
+
/** Every marker a cell carries, in one Konva shape. */
|
|
68
|
+
var CellIndicators = function (_a) {
|
|
69
|
+
var x = _a.x, y = _a.y, width = _a.width, height = _a.height, scale = _a.scale, showNote = _a.showNote, showComment = _a.showComment, showErrorIndicator = _a.showErrorIndicator, circleInvalid = _a.circleInvalid;
|
|
70
|
+
if (!showNote && !showComment && !showErrorIndicator && !circleInvalid) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return (react_1.default.createElement(react_konva_1.Shape, { sceneFunc: function (context) {
|
|
74
|
+
// Inside the 1 px grid line at the cell's top / left edge.
|
|
75
|
+
var top = y + 1;
|
|
76
|
+
if (showErrorIndicator) {
|
|
77
|
+
(0, exports.paintErrorIndicator)(context, { x: x + 1, y: top, scale: scale });
|
|
78
|
+
}
|
|
79
|
+
if (showComment) {
|
|
80
|
+
(0, exports.paintCommentIndicator)(context, { x: x, y: top, width: width, scale: scale });
|
|
81
|
+
}
|
|
82
|
+
else if (showNote) {
|
|
83
|
+
(0, exports.paintNoteIndicator)(context, { x: x, y: top, width: width, scale: scale });
|
|
84
|
+
}
|
|
85
|
+
if (circleInvalid) {
|
|
86
|
+
(0, exports.paintInvalidCircle)(context, { x: x, y: y, width: width, height: height, scale: scale });
|
|
87
|
+
}
|
|
88
|
+
}, listening: false, perfectDrawEnabled: false }));
|
|
89
|
+
};
|
|
90
|
+
exports.CellIndicators = CellIndicators;
|
|
@@ -9,7 +9,11 @@ export type CellInputProps = RichTextEditorAttribues & {
|
|
|
9
9
|
fontFamily?: string;
|
|
10
10
|
fontSize?: number;
|
|
11
11
|
lineHeight?: number;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* `direction` is where the commit key moves the active cell: `null` for an Enter that stays put
|
|
14
|
+
* (`enterKeyDirection: "none"`), `undefined` for a commit without a key.
|
|
15
|
+
*/
|
|
16
|
+
onSubmit?(value: string, textFormatRuns?: TextFormatRun[], direction?: Direction | null, e?: React.KeyboardEvent<HTMLDivElement>): void;
|
|
13
17
|
onChange: ProseMirrorEditorProps["onChange"];
|
|
14
18
|
onCancel?(e?: React.KeyboardEvent<HTMLDivElement>): void;
|
|
15
19
|
persistFocus?: boolean;
|
|
@@ -75,7 +79,11 @@ export declare const CellInput: React.NamedExoticComponent<RichTextEditorAttribu
|
|
|
75
79
|
fontFamily?: string;
|
|
76
80
|
fontSize?: number;
|
|
77
81
|
lineHeight?: number;
|
|
78
|
-
|
|
82
|
+
/**
|
|
83
|
+
* `direction` is where the commit key moves the active cell: `null` for an Enter that stays put
|
|
84
|
+
* (`enterKeyDirection: "none"`), `undefined` for a commit without a key.
|
|
85
|
+
*/
|
|
86
|
+
onSubmit?(value: string, textFormatRuns?: TextFormatRun[], direction?: Direction | null, e?: React.KeyboardEvent<HTMLDivElement>): void;
|
|
79
87
|
onChange: ProseMirrorEditorProps["onChange"];
|
|
80
88
|
onCancel?(e?: React.KeyboardEvent<HTMLDivElement>): void;
|
|
81
89
|
persistFocus?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-input.d.ts","sourceRoot":"","sources":["../../../../components/cell-input/cell-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,uBAAuB,EACvB,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAyD,MAAM,OAAO,CAAC;AAuB9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cell-input.d.ts","sourceRoot":"","sources":["../../../../components/cell-input/cell-input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ var sheet_context_atom_1 = require("../../atoms/sheet-context.atom");
|
|
|
12
12
|
var show_formula_help_atom_1 = require("../../atoms/show-formula-help.atom");
|
|
13
13
|
var config_1 = require("../../config");
|
|
14
14
|
var helpers_1 = require("../../helpers");
|
|
15
|
+
var enter_key_direction_atom_1 = require("../../atoms/enter-key-direction.atom");
|
|
15
16
|
var helpers_2 = require("../cell-editor/helpers");
|
|
16
17
|
var style_1 = require("./style");
|
|
17
18
|
exports.CellInput = (0, react_2.memo)((0, react_2.forwardRef)(function (_a, forwardedRef) {
|
|
@@ -20,6 +21,7 @@ exports.CellInput = (0, react_2.memo)((0, react_2.forwardRef)(function (_a, forw
|
|
|
20
21
|
var editorRef = (0, react_2.useRef)(null);
|
|
21
22
|
var isActiveEditor = editorRef.current === (0, active_editor_atom_1.useActiveEditor)();
|
|
22
23
|
var setActiveEditor = (0, active_editor_atom_1.useSetActiveEditor)();
|
|
24
|
+
var enterKeyDirection = (0, enter_key_direction_atom_1.useEnterKeyDirection)();
|
|
23
25
|
var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
|
|
24
26
|
// Show formula help dropdown
|
|
25
27
|
var showFormulaHelp = (0, show_formula_help_atom_1.useShowFormulaHelpValue)();
|
|
@@ -52,12 +54,12 @@ exports.CellInput = (0, react_2.memo)((0, react_2.forwardRef)(function (_a, forw
|
|
|
52
54
|
}, [onFocus, setActiveEditor]);
|
|
53
55
|
// Keydown handler
|
|
54
56
|
var handleSubmit = (0, react_2.useCallback)(function (newValue, textFormatRuns, e) {
|
|
55
|
-
var direction = e && (0, helpers_2.getDirectionFromKey)(e.key, e.shiftKey);
|
|
57
|
+
var direction = e && (0, helpers_2.getDirectionFromKey)(e.key, e.shiftKey, enterKeyDirection);
|
|
56
58
|
// Submit value
|
|
57
|
-
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(newValue, textFormatRuns, direction);
|
|
59
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(newValue, textFormatRuns, direction, e);
|
|
58
60
|
// Reset active editor
|
|
59
61
|
setActiveEditor(undefined);
|
|
60
|
-
}, [onSubmit, setActiveEditor]);
|
|
62
|
+
}, [onSubmit, setActiveEditor, enterKeyDirection]);
|
|
61
63
|
var handleCancel = (0, react_2.useCallback)(function (e) {
|
|
62
64
|
onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);
|
|
63
65
|
// Reset active editor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-bar-cell-input.d.ts","sourceRoot":"","sources":["../../../../components/cell-input/formula-bar-cell-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAGnE,OAAO,KAA6C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"formula-bar-cell-input.d.ts","sourceRoot":"","sources":["../../../../components/cell-input/formula-bar-cell-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,oBAAoB,CAAC;AAGnE,OAAO,KAA6C,MAAM,OAAO,CAAC;AAclE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,KAAK,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IACvE;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,eAAe,uIASvB,oBAAoB,uBAwLxB,CAAC"}
|
|
@@ -10,6 +10,7 @@ var editing_cell_atom_1 = require("../../atoms/editing-cell.atom");
|
|
|
10
10
|
var sheet_context_atom_1 = require("../../atoms/sheet-context.atom");
|
|
11
11
|
var formula_bar_editor_value_atom_1 = require("../../atoms/formula-bar-editor-value.atom");
|
|
12
12
|
var use_merge_refs_1 = require("../../hooks/use-merge.refs");
|
|
13
|
+
var helpers_1 = require("../cell-editor/helpers");
|
|
13
14
|
var cell_input_1 = require("./cell-input");
|
|
14
15
|
exports.FormulaBarInput = (0, react_1.memo)(function (_a) {
|
|
15
16
|
var _b;
|
|
@@ -83,9 +84,15 @@ exports.FormulaBarInput = (0, react_1.memo)(function (_a) {
|
|
|
83
84
|
}
|
|
84
85
|
}, [sheetId, editingCell, makeEditable, isEditInProgress]);
|
|
85
86
|
// User submits a value
|
|
86
|
-
var handleSubmit = (0, react_1.useCallback)(function (value, textFormatRuns, direction) {
|
|
87
|
+
var handleSubmit = (0, react_1.useCallback)(function (value, textFormatRuns, direction, e) {
|
|
87
88
|
if (editingCell) {
|
|
88
|
-
|
|
89
|
+
// Ctrl+Shift+Enter / ⇧⌘Return from the bar enters an array, in place (Excel).
|
|
90
|
+
var arrayFormula = (0, helpers_1.isArrayFormulaCommit)(e);
|
|
91
|
+
submitEditor === null || submitEditor === void 0 ? void 0 : submitEditor(value, textFormatRuns, editingSheetId, editingCell,
|
|
92
|
+
// `null`: an Enter that commits in place ("After pressing Enter, move selection" off).
|
|
93
|
+
arrayFormula || direction === null
|
|
94
|
+
? undefined
|
|
95
|
+
: getNextFocusableCell === null || getNextFocusableCell === void 0 ? void 0 : getNextFocusableCell(editingSheetId, editingCell, direction), undefined, arrayFormula ? { arrayFormula: true } : undefined);
|
|
89
96
|
}
|
|
90
97
|
returnFocusToSheet();
|
|
91
98
|
}, [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CellInterface, SparkLineResult, SparkLineResultOptions, StructuredResult } from "@rowsncolumns/common-types";
|
|
1
|
+
import type { CellInterface, ColorIndex, SparkLineResult, SparkLineResultOptions, StructuredResult } from "@rowsncolumns/common-types";
|
|
2
2
|
/**
|
|
3
3
|
* Pure geometry/series helpers for the in-cell sparkline painter.
|
|
4
4
|
* Kept free of canvas/react imports so the math is unit-testable.
|
|
@@ -74,4 +74,30 @@ export declare const sparklineGroupAxisFor: (sparkline: SparkLineResult, getGrou
|
|
|
74
74
|
* min/max are drawn pinned at the axis edge, like Excel.
|
|
75
75
|
*/
|
|
76
76
|
export declare const clampToExtents: (value: number, min: number, max: number) => number;
|
|
77
|
+
/** The colours a sparkline paints with where its options carry none. */
|
|
78
|
+
export type SparklineDefaultColors = {
|
|
79
|
+
series: string;
|
|
80
|
+
negative: string;
|
|
81
|
+
markers: string;
|
|
82
|
+
high: string;
|
|
83
|
+
low: string;
|
|
84
|
+
first: string;
|
|
85
|
+
last: string;
|
|
86
|
+
};
|
|
87
|
+
/** A theme slot and Excel tint, as `<x14:color* theme="N" tint="…"/>` writes it. */
|
|
88
|
+
export type SparklineThemeColor = {
|
|
89
|
+
theme: ColorIndex;
|
|
90
|
+
tint?: number;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Excel's Sparkline Style 1, what Excel gives every new sparkline group: Accent 1 darker 50% for the
|
|
94
|
+
* series and markers, Accent 2 for negative points, Accent 1 for high/low, Accent 1 lighter 40% for
|
|
95
|
+
* first/last. Theme references, so they resolve through the workbook's theme.
|
|
96
|
+
*/
|
|
97
|
+
export declare const EXCEL_DEFAULT_SPARKLINE_STYLE: Record<keyof SparklineDefaultColors, SparklineThemeColor>;
|
|
98
|
+
/** Style 1 under the Office 2013–2022 theme (Accent 1 #4472C4, Accent 2 #ED7D31): the painter's
|
|
99
|
+
* fallback when no theme resolves it. */
|
|
100
|
+
export declare const OFFICE_DEFAULT_SPARKLINE_COLORS: SparklineDefaultColors;
|
|
101
|
+
/** Excel's default sparkline colours resolved through a theme (`resolve` maps a theme colour to CSS). */
|
|
102
|
+
export declare const resolveDefaultSparklineColors: (resolve: (color: SparklineThemeColor) => string | undefined) => SparklineDefaultColors;
|
|
77
103
|
//# sourceMappingURL=sparkline-math.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparkline-math.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/sparkline-math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,sBAAsB,KAC/B,aAAa,EA0Bf,CAAC;AAEF,gGAAgG;AAChG,MAAM,MAAM,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,aAAa,CAAC,aAAa,CAAC,EACnC,SAAS,sBAAsB,GAAG,SAAS,EAC3C,WAAW,OAAO,EAClB,QAAQ,oBAAoB,KAC3B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CA2B5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,YAAY,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EACjD,SAAS,sBAAsB,GAAG,SAAS,EAC3C,WAAW,OAAO,KACjB,oBAAoB,GAAG,SAgBzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,eAAe,EAC1B,UAAU,MAAM;IAAE,OAAO,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,SAAS,EAC/E,oBAAoB,CAAC,IAAI,EAAE,aAAa,KAAK,gBAAgB,GAAG,SAAS,GAAG,IAAI,KAC/E,oBAAoB,GAAG,SAmBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,KAAK,MAAM,EACX,KAAK,MAAM,KACV,MAA6C,CAAC"}
|
|
1
|
+
{"version":3,"file":"sparkline-math.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/sparkline-math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,sBAAsB,KAC/B,aAAa,EA0Bf,CAAC;AAEF,gGAAgG;AAChG,MAAM,MAAM,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,aAAa,CAAC,aAAa,CAAC,EACnC,SAAS,sBAAsB,GAAG,SAAS,EAC3C,WAAW,OAAO,EAClB,QAAQ,oBAAoB,KAC3B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CA2B5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,YAAY,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EACjD,SAAS,sBAAsB,GAAG,SAAS,EAC3C,WAAW,OAAO,KACjB,oBAAoB,GAAG,SAgBzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,eAAe,EAC1B,UAAU,MAAM;IAAE,OAAO,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,SAAS,EAC/E,oBAAoB,CAAC,IAAI,EAAE,aAAa,KAAK,gBAAgB,GAAG,SAAS,GAAG,IAAI,KAC/E,oBAAoB,GAAG,SAmBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,KAAK,MAAM,EACX,KAAK,MAAM,KACV,MAA6C,CAAC;AAEjD,wEAAwE;AACxE,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAChD,MAAM,sBAAsB,EAC5B,mBAAmB,CASpB,CAAC;AAEF;yCACyC;AACzC,eAAO,MAAM,+BAA+B,EAAE,sBAQ7C,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,6BAA6B,GACxC,SAAS,CAAC,KAAK,EAAE,mBAAmB,KAAK,MAAM,GAAG,SAAS,KAC1D,sBAOF,CAAC"}
|