@rowsncolumns/spreadsheet 10.2.74 → 10.2.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/excel-validation-kinds.d.ts +71 -0
- package/dist/cjs/api/excel-validation-kinds.d.ts.map +1 -0
- package/dist/cjs/api/excel-validation-kinds.js +304 -0
- package/dist/cjs/api/fill-series.d.ts +38 -0
- package/dist/cjs/api/fill-series.d.ts.map +1 -0
- package/dist/cjs/api/fill-series.js +89 -0
- package/dist/cjs/api/go-to-special.d.ts +32 -0
- package/dist/cjs/api/go-to-special.d.ts.map +1 -0
- package/dist/cjs/api/go-to-special.js +111 -0
- package/dist/cjs/api/spreadsheet-api.d.ts +6 -2
- package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/cjs/api/spreadsheet-api.js +9 -3
- package/dist/cjs/api/validation-tooltip.d.ts +17 -0
- package/dist/cjs/api/validation-tooltip.d.ts.map +1 -0
- package/dist/cjs/api/validation-tooltip.js +42 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts +28 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/advanced-filter-dialog.atom.js +32 -0
- package/dist/cjs/atoms/fill-options.atom.d.ts +36 -0
- package/dist/cjs/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-options.atom.js +11 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.js +14 -0
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts +11 -1
- package/dist/cjs/atoms/go-to-dialog.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts +29 -0
- package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/goal-seek-dialog.atom.js +30 -0
- package/dist/cjs/atoms/index.d.ts +3 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +3 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.d.ts +39 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/subtotal-dialog.atom.js +30 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts +34 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/text-to-columns-dialog.atom.js +36 -0
- package/dist/cjs/atoms/watch-window.atom.d.ts +37 -0
- package/dist/cjs/atoms/watch-window.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/watch-window.atom.js +61 -0
- package/dist/cjs/components/advanced-filter-dialog/index.d.ts +28 -0
- package/dist/cjs/components/advanced-filter-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/advanced-filter-dialog/index.js +134 -0
- package/dist/cjs/components/calculation-options-dialog/index.d.ts +33 -0
- package/dist/cjs/components/calculation-options-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/calculation-options-dialog/index.js +69 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +328 -71
- package/dist/cjs/components/canvas-grid/typings.d.ts +31 -5
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.d.ts +30 -0
- package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
- package/dist/cjs/components/cell/alignment.js +56 -1
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +15 -7
- package/dist/cjs/components/cell-diff/index.d.ts +3 -2
- package/dist/cjs/components/cell-diff/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.d.ts +9 -0
- package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.js +8 -1
- package/dist/cjs/components/cell-editor/helpers.spec.js +14 -0
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +7 -3
- package/dist/cjs/components/context-menu/index.d.ts +6 -1
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +146 -3
- package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-component.js +16 -1
- package/dist/cjs/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/cjs/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/fill-series-dialog/index.js +156 -0
- package/dist/cjs/components/go-to-dialog/index.d.ts +11 -1
- package/dist/cjs/components/go-to-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/go-to-dialog/index.js +67 -24
- package/dist/cjs/components/goal-seek-dialog/index.d.ts +32 -0
- package/dist/cjs/components/goal-seek-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/goal-seek-dialog/index.js +149 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/cjs/components/selection/fill-options-menu.js +65 -0
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +4 -2
- package/dist/cjs/components/selection/types.d.ts +11 -1
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/subtotal-dialog/index.d.ts +30 -0
- package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/subtotal-dialog/index.js +126 -0
- package/dist/cjs/components/text-to-columns-dialog/index.d.ts +37 -0
- package/dist/cjs/components/text-to-columns-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/text-to-columns-dialog/index.js +166 -0
- package/dist/cjs/components/toolbar/background-color-selector.d.ts +13 -1
- package/dist/cjs/components/toolbar/background-color-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/background-color-selector.js +57 -11
- package/dist/cjs/components/toolbar/cell-style-selector.d.ts +15 -2
- package/dist/cjs/components/toolbar/cell-style-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/cell-style-selector.js +56 -3
- package/dist/cjs/components/toolbar/fill-selectors.d.ts +49 -0
- package/dist/cjs/components/toolbar/fill-selectors.d.ts.map +1 -0
- package/dist/cjs/components/toolbar/fill-selectors.js +196 -0
- package/dist/cjs/components/toolbar/index.d.ts +1 -0
- package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/index.js +1 -0
- package/dist/cjs/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-format-selector.js +15 -3
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-horizontal-align-selector.js +23 -4
- package/dist/cjs/components/watch-window/index.d.ts +25 -0
- package/dist/cjs/components/watch-window/index.d.ts.map +1 -0
- package/dist/cjs/components/watch-window/index.js +63 -0
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +17 -6
- package/dist/cjs/hooks/use-editable.d.ts +11 -2
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +8 -0
- package/dist/cjs/hooks/use-editor-submit.d.ts +32 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +111 -2
- package/dist/cjs/hooks/use-get-tooltip.d.ts.map +1 -1
- package/dist/cjs/hooks/use-get-tooltip.js +7 -2
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +27 -14
- package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +21 -4
- package/dist/cjs/hooks/use-selection.d.ts +54 -4
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +232 -37
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +156 -5
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +19 -1
- package/dist/esm/api/excel-validation-kinds.d.ts +71 -0
- package/dist/esm/api/excel-validation-kinds.d.ts.map +1 -0
- package/dist/esm/api/excel-validation-kinds.js +287 -0
- package/dist/esm/api/fill-series.d.ts +38 -0
- package/dist/esm/api/fill-series.d.ts.map +1 -0
- package/dist/esm/api/fill-series.js +78 -0
- package/dist/esm/api/go-to-special.d.ts +32 -0
- package/dist/esm/api/go-to-special.d.ts.map +1 -0
- package/dist/esm/api/go-to-special.js +96 -0
- package/dist/esm/api/spreadsheet-api.d.ts +6 -2
- package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/esm/api/spreadsheet-api.js +8 -3
- package/dist/esm/api/validation-tooltip.d.ts +17 -0
- package/dist/esm/api/validation-tooltip.d.ts.map +1 -0
- package/dist/esm/api/validation-tooltip.js +34 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts +28 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/advanced-filter-dialog.atom.js +21 -0
- package/dist/esm/atoms/fill-options.atom.d.ts +36 -0
- package/dist/esm/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-options.atom.js +5 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-series-dialog.atom.js +9 -0
- package/dist/esm/atoms/go-to-dialog.atom.d.ts +11 -1
- package/dist/esm/atoms/go-to-dialog.atom.d.ts.map +1 -1
- package/dist/esm/atoms/goal-seek-dialog.atom.d.ts +29 -0
- package/dist/esm/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/goal-seek-dialog.atom.js +21 -0
- package/dist/esm/atoms/index.d.ts +3 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +3 -0
- package/dist/esm/atoms/subtotal-dialog.atom.d.ts +39 -0
- package/dist/esm/atoms/subtotal-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/subtotal-dialog.atom.js +21 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts +34 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/text-to-columns-dialog.atom.js +25 -0
- package/dist/esm/atoms/watch-window.atom.d.ts +37 -0
- package/dist/esm/atoms/watch-window.atom.d.ts.map +1 -0
- package/dist/esm/atoms/watch-window.atom.js +37 -0
- package/dist/esm/components/advanced-filter-dialog/index.d.ts +28 -0
- package/dist/esm/components/advanced-filter-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/advanced-filter-dialog/index.js +125 -0
- package/dist/esm/components/calculation-options-dialog/index.d.ts +33 -0
- package/dist/esm/components/calculation-options-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/calculation-options-dialog/index.js +61 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +266 -26
- package/dist/esm/components/canvas-grid/typings.d.ts +31 -5
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.d.ts +30 -0
- package/dist/esm/components/cell/alignment.d.ts.map +1 -1
- package/dist/esm/components/cell/alignment.js +51 -0
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +16 -8
- package/dist/esm/components/cell-diff/index.d.ts +3 -2
- package/dist/esm/components/cell-diff/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.d.ts +9 -0
- package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.js +6 -0
- package/dist/esm/components/cell-editor/helpers.spec.js +15 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +8 -4
- package/dist/esm/components/context-menu/index.d.ts +6 -1
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +139 -4
- package/dist/esm/components/embeds/embed-component.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-component.js +17 -1
- package/dist/esm/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/esm/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/fill-series-dialog/index.js +151 -0
- package/dist/esm/components/go-to-dialog/index.d.ts +11 -1
- package/dist/esm/components/go-to-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/go-to-dialog/index.js +63 -23
- package/dist/esm/components/goal-seek-dialog/index.d.ts +32 -0
- package/dist/esm/components/goal-seek-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/goal-seek-dialog/index.js +125 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/esm/components/selection/fill-options-menu.js +63 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +4 -2
- package/dist/esm/components/selection/types.d.ts +11 -1
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/subtotal-dialog/index.d.ts +30 -0
- package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/subtotal-dialog/index.js +115 -0
- package/dist/esm/components/text-to-columns-dialog/index.d.ts +37 -0
- package/dist/esm/components/text-to-columns-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/text-to-columns-dialog/index.js +147 -0
- package/dist/esm/components/toolbar/background-color-selector.d.ts +13 -1
- package/dist/esm/components/toolbar/background-color-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/background-color-selector.js +61 -11
- package/dist/esm/components/toolbar/cell-style-selector.d.ts +15 -2
- package/dist/esm/components/toolbar/cell-style-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/cell-style-selector.js +46 -2
- package/dist/esm/components/toolbar/fill-selectors.d.ts +49 -0
- package/dist/esm/components/toolbar/fill-selectors.d.ts.map +1 -0
- package/dist/esm/components/toolbar/fill-selectors.js +162 -0
- package/dist/esm/components/toolbar/index.d.ts +1 -0
- package/dist/esm/components/toolbar/index.d.ts.map +1 -1
- package/dist/esm/components/toolbar/index.js +1 -0
- package/dist/esm/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-format-selector.js +14 -2
- package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
- package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-horizontal-align-selector.js +21 -5
- package/dist/esm/components/watch-window/index.d.ts +25 -0
- package/dist/esm/components/watch-window/index.d.ts.map +1 -0
- package/dist/esm/components/watch-window/index.js +54 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +17 -6
- package/dist/esm/hooks/use-editable.d.ts +11 -2
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +8 -0
- package/dist/esm/hooks/use-editor-submit.d.ts +32 -3
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +82 -3
- package/dist/esm/hooks/use-get-tooltip.d.ts.map +1 -1
- package/dist/esm/hooks/use-get-tooltip.js +7 -2
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +27 -14
- package/dist/esm/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +22 -5
- package/dist/esm/hooks/use-selection.d.ts +54 -4
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +220 -36
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +11 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +156 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +18 -0
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +7 -7
|
@@ -11,6 +11,13 @@ var scheduler_1 = require("../api/scheduler");
|
|
|
11
11
|
var config_1 = require("../config");
|
|
12
12
|
var helpers_1 = require("../helpers");
|
|
13
13
|
var use_callback_ref_1 = require("./use-callback-ref");
|
|
14
|
+
/** Ctrl on every platform; Cmd is accepted as an alias on macOS (Excel for Mac uses Ctrl). */
|
|
15
|
+
var isFillToggleModifier = function (e) {
|
|
16
|
+
return e.ctrlKey || e.metaKey;
|
|
17
|
+
};
|
|
18
|
+
var fillGestureOptions = function (e) {
|
|
19
|
+
return e.ctrlKey || e.metaKey ? { modifier: "toggle" } : undefined;
|
|
20
|
+
};
|
|
14
21
|
var defaultIsHidden = function () { return false; };
|
|
15
22
|
var defaultSelectionSpan = function () { return true; };
|
|
16
23
|
var getPossibleActiveCellFromSelections = function (selections) {
|
|
@@ -45,23 +52,90 @@ var boundsSubsetOfSelection = function (range, selection) {
|
|
|
45
52
|
range.startColumnIndex >= selection.startColumnIndex &&
|
|
46
53
|
range.endColumnIndex <= selection.endColumnIndex);
|
|
47
54
|
};
|
|
55
|
+
var cellInRange = function (cell, range) {
|
|
56
|
+
return cell.rowIndex >= range.startRowIndex &&
|
|
57
|
+
cell.rowIndex <= range.endRowIndex &&
|
|
58
|
+
cell.columnIndex >= range.startColumnIndex &&
|
|
59
|
+
cell.columnIndex <= range.endColumnIndex;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Resolve a fill-handle drag to a shrink of `selection` (Excel "drag back inside the selection").
|
|
63
|
+
* `coords` is the cell under the pointer. A shrink needs a multi-cell selection and a pointer that
|
|
64
|
+
* is inside it but short of its bottom-right corner along at least one axis; the axis with the
|
|
65
|
+
* larger travel wins (rows first on a tie), mirroring how a fill picks its direction. Returns
|
|
66
|
+
* `undefined` when the drag is not a shrink (outside the selection, single cell, or still at the
|
|
67
|
+
* corner) — the caller then treats it as a regular fill.
|
|
68
|
+
*/
|
|
69
|
+
var fillShrinkFor = function (selection, coords) {
|
|
70
|
+
var isSingleCell = selection.startRowIndex === selection.endRowIndex &&
|
|
71
|
+
selection.startColumnIndex === selection.endColumnIndex;
|
|
72
|
+
if (isSingleCell || !cellInRange(coords, selection))
|
|
73
|
+
return undefined;
|
|
74
|
+
var rowsExcluded = selection.endRowIndex - coords.rowIndex;
|
|
75
|
+
var colsExcluded = selection.endColumnIndex - coords.columnIndex;
|
|
76
|
+
if (rowsExcluded <= 0 && colsExcluded <= 0)
|
|
77
|
+
return undefined;
|
|
78
|
+
if (rowsExcluded >= colsExcluded) {
|
|
79
|
+
return {
|
|
80
|
+
clearRange: tslib_1.__assign(tslib_1.__assign({}, selection), { startRowIndex: coords.rowIndex + 1 }),
|
|
81
|
+
remaining: tslib_1.__assign(tslib_1.__assign({}, selection), { endRowIndex: coords.rowIndex }),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
clearRange: tslib_1.__assign(tslib_1.__assign({}, selection), { startColumnIndex: coords.columnIndex + 1 }),
|
|
86
|
+
remaining: tslib_1.__assign(tslib_1.__assign({}, selection), { endColumnIndex: coords.columnIndex }),
|
|
87
|
+
};
|
|
88
|
+
};
|
|
48
89
|
/**
|
|
49
90
|
* Hook to enable selection in datagrid
|
|
50
91
|
* @param initialSelection
|
|
51
92
|
*/
|
|
52
93
|
var useSelection = function (_a) {
|
|
53
|
-
var sheetId = _a.sheetId, activeCell = _a.activeCell, onChangeActiveCell = _a.onChangeActiveCell, selections = _a.selections, onChangeSelections = _a.onChangeSelections, _b = _a.columnCount, columnCount = _b === void 0 ? 0 : _b, _c = _a.rowCount, rowCount = _c === void 0 ? 0 : _c, _d = _a.selectionPolicy, selectionPolicy = _d === void 0 ? "multiple" : _d, _e = _a.newSelectionMode, newSelectionMode = _e === void 0 ? "clear" : _e, _f = _a.allowDeselectSelection, allowDeselectSelection = _f === void 0 ? true : _f, onFill = _a.onFill, _g = _a.isHiddenRow, isHiddenRow = _g === void 0 ? defaultIsHidden : _g, _h = _a.isHiddenColumn, isHiddenColumn = _h === void 0 ? defaultIsHidden : _h, _j = _a.alwaysScrollToActiveCell, alwaysScrollToActiveCell = _j === void 0 ? true : _j, _k = _a.selectionTopBound, selectionTopBound = _k === void 0 ? 0 : _k, _l = _a.selectionBottomBound, selectionBottomBound = _l === void 0 ? rowCount : _l, _m = _a.selectionLeftBound, selectionLeftBound = _m === void 0 ? 0 : _m, _o = _a.selectionRightBound, selectionRightBound = _o === void 0 ? columnCount : _o, mouseDownInterceptor = _a.mouseDownInterceptor, mouseMoveInterceptor = _a.mouseMoveInterceptor, _p = _a.mergedCells, mergedCells = _p === void 0 ? config_1.DEFAULT_ARRAY : _p, _q = _a.canSelectionSpanMergedCells, canSelectionSpanMergedCells = _q === void 0 ? defaultSelectionSpan : _q, getValue = _a.getValue, onMoveSelection = _a.onMoveSelection, getCellCoordsFromOffset = _a.getCellCoordsFromOffset, getCellBounds = _a.getCellBounds, getViewPort = _a.getViewPort, focus = _a.focus, scrollToCell = _a.scrollToCell, isMergedCell = _a.isMergedCell, enableSelectOnEnterKey = _a.enableSelectOnEnterKey, formulaMode = _a.formulaMode, isTouchDevice = _a.isTouchDevice, getDataRowCount = _a.getDataRowCount, isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, _r = _a.enableDataBoundaryNavigation, enableDataBoundaryNavigation = _r === void 0 ? false : _r;
|
|
94
|
+
var sheetId = _a.sheetId, activeCell = _a.activeCell, onChangeActiveCell = _a.onChangeActiveCell, selections = _a.selections, onChangeSelections = _a.onChangeSelections, _b = _a.columnCount, columnCount = _b === void 0 ? 0 : _b, _c = _a.rowCount, rowCount = _c === void 0 ? 0 : _c, _d = _a.selectionPolicy, selectionPolicy = _d === void 0 ? "multiple" : _d, _e = _a.newSelectionMode, newSelectionMode = _e === void 0 ? "clear" : _e, _f = _a.allowDeselectSelection, allowDeselectSelection = _f === void 0 ? true : _f, onFill = _a.onFill, onFillHandleRelease = _a.onFillHandleRelease, onFillShrink = _a.onFillShrink, _g = _a.isHiddenRow, isHiddenRow = _g === void 0 ? defaultIsHidden : _g, _h = _a.isHiddenColumn, isHiddenColumn = _h === void 0 ? defaultIsHidden : _h, _j = _a.alwaysScrollToActiveCell, alwaysScrollToActiveCell = _j === void 0 ? true : _j, _k = _a.selectionTopBound, selectionTopBound = _k === void 0 ? 0 : _k, _l = _a.selectionBottomBound, selectionBottomBound = _l === void 0 ? rowCount : _l, _m = _a.selectionLeftBound, selectionLeftBound = _m === void 0 ? 0 : _m, _o = _a.selectionRightBound, selectionRightBound = _o === void 0 ? columnCount : _o, mouseDownInterceptor = _a.mouseDownInterceptor, mouseMoveInterceptor = _a.mouseMoveInterceptor, _p = _a.mergedCells, mergedCells = _p === void 0 ? config_1.DEFAULT_ARRAY : _p, _q = _a.canSelectionSpanMergedCells, canSelectionSpanMergedCells = _q === void 0 ? defaultSelectionSpan : _q, getValue = _a.getValue, onMoveSelection = _a.onMoveSelection, getCellCoordsFromOffset = _a.getCellCoordsFromOffset, getCellBounds = _a.getCellBounds, getViewPort = _a.getViewPort, focus = _a.focus, scrollToCell = _a.scrollToCell, isMergedCell = _a.isMergedCell, enableSelectOnEnterKey = _a.enableSelectOnEnterKey, formulaMode = _a.formulaMode, isTouchDevice = _a.isTouchDevice, getDataRowCount = _a.getDataRowCount, isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, _r = _a.enableDataBoundaryNavigation, enableDataBoundaryNavigation = _r === void 0 ? false : _r;
|
|
54
95
|
var _s = tslib_1.__read((0, react_1.useState)(), 2), fillSelection = _s[0], setFillSelection = _s[1];
|
|
96
|
+
var _t = tslib_1.__read((0, react_1.useState)(), 2), fillShrink = _t[0], setFillShrink = _t[1];
|
|
97
|
+
var fillShrinkRef = (0, react_1.useRef)(undefined);
|
|
98
|
+
// Ctrl/Cmd state of the fill-handle drag, sampled on every mousemove (mouseup carries the
|
|
99
|
+
// modifier too, but a key released mid-drag should still count — Excel reads it at drop time,
|
|
100
|
+
// and the last move before the drop is the closest we get to that without a keyup listener).
|
|
101
|
+
var fillModifierRef = (0, react_1.useRef)(undefined);
|
|
55
102
|
var selectionStart = (0, react_1.useRef)(null);
|
|
56
103
|
var selectionEnd = (0, react_1.useRef)(null);
|
|
57
104
|
var isSelecting = (0, react_1.useRef)(false);
|
|
58
105
|
var isFilling = (0, react_1.useRef)(false);
|
|
106
|
+
/** Mouse button that grabbed the fill handle (a right-button drag opens the fill menu). */
|
|
107
|
+
var fillButtonRef = (0, react_1.useRef)("left");
|
|
108
|
+
/**
|
|
109
|
+
* One-shot, capture-phase `contextmenu` suppressor for a fill-handle
|
|
110
|
+
* gesture. Ctrl+click is the macOS context-menu gesture and a right-button
|
|
111
|
+
* release always fires `contextmenu`; neither may reach the grid's cell
|
|
112
|
+
* context menu while the user is dragging the fill handle.
|
|
113
|
+
*/
|
|
114
|
+
var contextMenuSuppressorRef = (0, react_1.useRef)(null);
|
|
115
|
+
var releaseContextMenuSuppressor = (0, react_1.useCallback)(function () {
|
|
116
|
+
var handler = contextMenuSuppressorRef.current;
|
|
117
|
+
if (!handler)
|
|
118
|
+
return;
|
|
119
|
+
contextMenuSuppressorRef.current = null;
|
|
120
|
+
document.removeEventListener("contextmenu", handler, true);
|
|
121
|
+
}, []);
|
|
122
|
+
var suppressNextContextMenu = (0, react_1.useCallback)(function () {
|
|
123
|
+
if (contextMenuSuppressorRef.current)
|
|
124
|
+
return;
|
|
125
|
+
var handler = function (e) {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
e.stopPropagation();
|
|
128
|
+
releaseContextMenuSuppressor();
|
|
129
|
+
};
|
|
130
|
+
contextMenuSuppressorRef.current = handler;
|
|
131
|
+
document.addEventListener("contextmenu", handler, true);
|
|
132
|
+
}, [releaseContextMenuSuppressor]);
|
|
59
133
|
var selectionsRef = (0, react_1.useRef)([]);
|
|
60
134
|
var fillSelectionRef = (0, react_1.useRef)(undefined);
|
|
61
135
|
var onChangeSelectionsRef = (0, use_callback_ref_1.useCallbackRef)(onChangeSelections);
|
|
62
136
|
/* Drag drop selection */
|
|
63
137
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
64
|
-
var
|
|
138
|
+
var _u = tslib_1.__read((0, react_1.useReducer)(function (s) { return s + 1; }, 0), 2), _ = _u[0], forceRender = _u[1];
|
|
65
139
|
var isDragging = (0, react_1.useRef)(false);
|
|
66
140
|
var hasUserMovedSelection = (0, react_1.useRef)(false);
|
|
67
141
|
var initialDraggedSelection = (0, react_1.useRef)(undefined);
|
|
@@ -86,6 +160,9 @@ var useSelection = function (_a) {
|
|
|
86
160
|
(0, grid_3.useIsomorphicLayoutEffect)(function () {
|
|
87
161
|
fillSelectionRef.current = fillSelection;
|
|
88
162
|
}, [fillSelection]);
|
|
163
|
+
(0, grid_3.useIsomorphicLayoutEffect)(function () {
|
|
164
|
+
fillShrinkRef.current = fillShrink;
|
|
165
|
+
}, [fillShrink]);
|
|
89
166
|
/* Check if cell is out of bounds */
|
|
90
167
|
var isCellOutOfBounds = (0, react_1.useCallback)(function (cell) {
|
|
91
168
|
return cell.rowIndex < 0 || cell.columnIndex < 0;
|
|
@@ -1060,6 +1137,7 @@ var useSelection = function (_a) {
|
|
|
1060
1137
|
var coords = getCellCoordsFromOffset(e.clientX, e.clientY, false);
|
|
1061
1138
|
if (!coords)
|
|
1062
1139
|
return;
|
|
1140
|
+
fillModifierRef.current = fillGestureOptions(e);
|
|
1063
1141
|
var selections = selectionsRef.current;
|
|
1064
1142
|
var range = selectionFromStartEnd(activeCellRef.current, coords);
|
|
1065
1143
|
var hasSelections = selections.length > 0;
|
|
@@ -1068,6 +1146,22 @@ var useSelection = function (_a) {
|
|
|
1068
1146
|
: getCellBounds(activeCellRef.current);
|
|
1069
1147
|
if (!range)
|
|
1070
1148
|
return;
|
|
1149
|
+
/**
|
|
1150
|
+
* Drag-back shrink (Excel): the handle sits at the selection's bottom-right corner; dragging
|
|
1151
|
+
* it up or left while staying INSIDE a multi-cell selection excludes the dragged-over rows
|
|
1152
|
+
* (or columns). Those cells are greyed now and cleared on release; the selection shrinks to
|
|
1153
|
+
* the rest. Dragging PAST the first row/column is an ordinary fill in that direction.
|
|
1154
|
+
*/
|
|
1155
|
+
var shrink = hasSelections
|
|
1156
|
+
? fillShrinkFor(activeCellBounds, coords)
|
|
1157
|
+
: undefined;
|
|
1158
|
+
if (shrink) {
|
|
1159
|
+
setFillSelection(undefined);
|
|
1160
|
+
setFillShrink(shrink);
|
|
1161
|
+
scrollToCell(coords);
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1164
|
+
setFillShrink(undefined);
|
|
1071
1165
|
var direction = range.startRowIndex < activeCellBounds.startRowIndex
|
|
1072
1166
|
? grid_4.Direction.Up
|
|
1073
1167
|
: range.endRowIndex > activeCellBounds.endRowIndex
|
|
@@ -1109,24 +1203,59 @@ var useSelection = function (_a) {
|
|
|
1109
1203
|
selectionTopBound,
|
|
1110
1204
|
]);
|
|
1111
1205
|
/**
|
|
1112
|
-
* When user releases mouse on the fill handle
|
|
1206
|
+
* When user releases mouse on the fill handle. Excel reads the Ctrl toggle
|
|
1207
|
+
* at RELEASE (the user can press/let go of Ctrl mid-drag), so the modifier
|
|
1208
|
+
* comes from the mouseup event, not the mousedown.
|
|
1113
1209
|
*/
|
|
1114
|
-
var handleFillMouseUp = (0, react_1.useCallback)(function () {
|
|
1210
|
+
var handleFillMouseUp = (0, react_1.useCallback)(function (e) {
|
|
1211
|
+
var _a;
|
|
1115
1212
|
isFilling.current = false;
|
|
1213
|
+
var toggle = isFillToggleModifier(e);
|
|
1214
|
+
var button = fillButtonRef.current;
|
|
1116
1215
|
/* Remove listener */
|
|
1117
1216
|
document.removeEventListener("mousemove", handleFillMouseMove);
|
|
1118
1217
|
document.removeEventListener("mouseup", handleFillMouseUp);
|
|
1218
|
+
// The right-button (or macOS Ctrl+click) `contextmenu` event follows this
|
|
1219
|
+
// mouseup; keep swallowing it for one tick, then drop the suppressor so a
|
|
1220
|
+
// later, unrelated right-click still opens the cell context menu.
|
|
1221
|
+
setTimeout(releaseContextMenuSuppressor, 0);
|
|
1119
1222
|
/* Exit early */
|
|
1120
1223
|
if (!activeCellRef.current) {
|
|
1121
1224
|
return;
|
|
1122
1225
|
}
|
|
1123
1226
|
// Active fill selection
|
|
1124
1227
|
var fillSelection = fillSelectionRef.current;
|
|
1228
|
+
var shrink = fillShrinkRef.current;
|
|
1229
|
+
// Modifier for a drag-back shrink: the last move's state, else the release's.
|
|
1230
|
+
var gestureOptions = (_a = fillModifierRef.current) !== null && _a !== void 0 ? _a : (toggle ? { modifier: "toggle" } : undefined);
|
|
1231
|
+
fillModifierRef.current = undefined;
|
|
1125
1232
|
/* Update last selection */
|
|
1126
1233
|
setFillSelection(undefined);
|
|
1234
|
+
setFillShrink(undefined);
|
|
1127
1235
|
/* Use ref, as we are binding to document */
|
|
1128
1236
|
var selections = selectionsRef.current;
|
|
1129
1237
|
var activeCell = activeCellRef.current;
|
|
1238
|
+
/* Drag-back inside the selection: clear the excluded cells, keep the rest selected */
|
|
1239
|
+
if (activeCell && shrink) {
|
|
1240
|
+
focus();
|
|
1241
|
+
onFillShrink === null || onFillShrink === void 0 ? void 0 : onFillShrink(sheetId, activeCell, shrink.clearRange, gestureOptions);
|
|
1242
|
+
var len_1 = selections.length;
|
|
1243
|
+
var shrunkSelections = len_1
|
|
1244
|
+
? selections.map(function (sel, i) {
|
|
1245
|
+
return len_1 - 1 === i ? tslib_1.__assign(tslib_1.__assign({}, sel), { range: shrink.remaining }) : sel;
|
|
1246
|
+
})
|
|
1247
|
+
: [{ range: shrink.remaining }];
|
|
1248
|
+
onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(shrunkSelections);
|
|
1249
|
+
// The active cell normally anchors the surviving corner; if it fell in the cleared band,
|
|
1250
|
+
// move it to the remaining range's top-left so it never points at a deselected cell.
|
|
1251
|
+
if (!cellInRange(activeCell, shrink.remaining)) {
|
|
1252
|
+
onChangeActiveCell === null || onChangeActiveCell === void 0 ? void 0 : onChangeActiveCell(sheetId, {
|
|
1253
|
+
rowIndex: shrink.remaining.startRowIndex,
|
|
1254
|
+
columnIndex: shrink.remaining.startColumnIndex,
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
return;
|
|
1258
|
+
}
|
|
1130
1259
|
if (!activeCell || !fillSelection) {
|
|
1131
1260
|
return;
|
|
1132
1261
|
}
|
|
@@ -1139,8 +1268,11 @@ var useSelection = function (_a) {
|
|
|
1139
1268
|
}
|
|
1140
1269
|
/* Focus on the grid */
|
|
1141
1270
|
focus();
|
|
1142
|
-
/* Callback
|
|
1143
|
-
|
|
1271
|
+
/* Callback — a right-button drag fills nothing yet: the grid opens the
|
|
1272
|
+
* fill menu and issues `onFill` with the entry the user picks. */
|
|
1273
|
+
if (button === "left") {
|
|
1274
|
+
onFill === null || onFill === void 0 ? void 0 : onFill(sheetId, activeCell, fillSelection, selections, undefined, undefined, toggle ? { modifier: "toggle" } : undefined);
|
|
1275
|
+
}
|
|
1144
1276
|
/* Modify last selection */
|
|
1145
1277
|
var curSelections = selectionsRef.current;
|
|
1146
1278
|
var len = curSelections.length;
|
|
@@ -1153,14 +1285,40 @@ var useSelection = function (_a) {
|
|
|
1153
1285
|
})
|
|
1154
1286
|
: [{ range: newBounds }];
|
|
1155
1287
|
onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(newSelections);
|
|
1156
|
-
|
|
1288
|
+
onFillHandleRelease === null || onFillHandleRelease === void 0 ? void 0 : onFillHandleRelease({
|
|
1289
|
+
sheetId: sheetId,
|
|
1290
|
+
activeCell: activeCell,
|
|
1291
|
+
fillSelection: fillSelection,
|
|
1292
|
+
selections: selections,
|
|
1293
|
+
toggle: toggle,
|
|
1294
|
+
button: button,
|
|
1295
|
+
});
|
|
1296
|
+
}, [
|
|
1297
|
+
focus,
|
|
1298
|
+
handleFillMouseMove,
|
|
1299
|
+
onChangeSelections,
|
|
1300
|
+
onChangeActiveCell,
|
|
1301
|
+
onFill,
|
|
1302
|
+
onFillHandleRelease,
|
|
1303
|
+
onFillShrink,
|
|
1304
|
+
releaseContextMenuSuppressor,
|
|
1305
|
+
sheetId,
|
|
1306
|
+
]);
|
|
1157
1307
|
var handleFillMouseDown = (0, react_1.useCallback)(function (e) {
|
|
1158
1308
|
e.stopPropagation();
|
|
1159
1309
|
e.preventDefault();
|
|
1310
|
+
var isRightButton = e.button === grid_4.MouseButtonCodes.right;
|
|
1311
|
+
fillButtonRef.current = isRightButton ? "right" : "left";
|
|
1312
|
+
// Ctrl+drag on the handle must never become the macOS Ctrl+click
|
|
1313
|
+
// context-menu gesture, and a right-button drag must not open the cell
|
|
1314
|
+
// context menu on release — swallow that gesture's `contextmenu`.
|
|
1315
|
+
if (isRightButton || isFillToggleModifier(e)) {
|
|
1316
|
+
suppressNextContextMenu();
|
|
1317
|
+
}
|
|
1160
1318
|
isFilling.current = true;
|
|
1161
1319
|
document.addEventListener("mousemove", handleFillMouseMove);
|
|
1162
1320
|
document.addEventListener("mouseup", handleFillMouseUp);
|
|
1163
|
-
}, [handleFillMouseMove, handleFillMouseUp]);
|
|
1321
|
+
}, [handleFillMouseMove, handleFillMouseUp, suppressNextContextMenu]);
|
|
1164
1322
|
/**
|
|
1165
1323
|
* Remove the last selection from state
|
|
1166
1324
|
*/
|
|
@@ -1402,10 +1560,17 @@ var useSelection = function (_a) {
|
|
|
1402
1560
|
// Add a ref. makeEditable renders way too often
|
|
1403
1561
|
var handleKeyDownRef = (0, use_callback_ref_1.useCallbackRef)(handleKeyDown);
|
|
1404
1562
|
/**
|
|
1405
|
-
* Double-click fill handle
|
|
1406
|
-
* 1.
|
|
1407
|
-
*
|
|
1408
|
-
*
|
|
1563
|
+
* Double-click fill handle — Excel's AutoFill rules:
|
|
1564
|
+
* 1. Pick the adjacent column: the one LEFT of the selection when its cell on the selection's top
|
|
1565
|
+
* row is non-blank, else the one on the RIGHT; neither → nothing happens.
|
|
1566
|
+
* 2. Extent = that column's contiguous data block below the selection (End+Down semantics: a
|
|
1567
|
+
* blank ends the block; only a blank in the very first row below the selection is skipped,
|
|
1568
|
+
* and only when the row after it is non-blank).
|
|
1569
|
+
* 3. Never overwrite: the fill halts before the first pre-existing non-blank cell in the fill
|
|
1570
|
+
* column(s) themselves.
|
|
1571
|
+
* 4. Ctrl (Cmd on Mac) held → the same copy↔series inversion as a Ctrl+drag (`options.modifier`).
|
|
1572
|
+
* Scans are row-by-row through `getValue` and bounded by the sheet's data extent, so the cost is
|
|
1573
|
+
* O(rows of the adjacent block), never O(sheet).
|
|
1409
1574
|
*/
|
|
1410
1575
|
var handleFillDoubleClick = (0, react_1.useCallback)(function (e) {
|
|
1411
1576
|
e.stopPropagation();
|
|
@@ -1423,33 +1588,60 @@ var useSelection = function (_a) {
|
|
|
1423
1588
|
var endRow = currentBounds.endRowIndex;
|
|
1424
1589
|
var leftCol = currentBounds.startColumnIndex;
|
|
1425
1590
|
var rightCol = currentBounds.endColumnIndex;
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
if (leftCol > selectionLeftBound) {
|
|
1432
|
-
|
|
1433
|
-
if (!(0, grid_1.isNull)(leftValue)) {
|
|
1434
|
-
hasAdjacentData = true;
|
|
1435
|
-
}
|
|
1591
|
+
var hasValue = function (rowIndex, columnIndex) {
|
|
1592
|
+
return !(0, grid_1.isNull)(getValue(sheetId, rowIndex, columnIndex));
|
|
1593
|
+
};
|
|
1594
|
+
// 1. Adjacent column: left first, then right — judged on the selection's top row.
|
|
1595
|
+
var adjacentColumn;
|
|
1596
|
+
if (leftCol > selectionLeftBound && hasValue(startRow, leftCol - 1)) {
|
|
1597
|
+
adjacentColumn = leftCol - 1;
|
|
1436
1598
|
}
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
if (!(0, grid_1.isNull)(rightValue)) {
|
|
1441
|
-
hasAdjacentData = true;
|
|
1442
|
-
}
|
|
1599
|
+
else if (rightCol < selectionRightBound &&
|
|
1600
|
+
hasValue(startRow, rightCol + 1)) {
|
|
1601
|
+
adjacentColumn = rightCol + 1;
|
|
1443
1602
|
}
|
|
1444
|
-
|
|
1445
|
-
if (!hasAdjacentData)
|
|
1603
|
+
if (adjacentColumn === undefined)
|
|
1446
1604
|
return;
|
|
1447
|
-
//
|
|
1448
|
-
//
|
|
1605
|
+
// The last row that can hold data — bounds every scan below. `getDataRowCount` is the legacy
|
|
1606
|
+
// `sheetData.length` contract (rows are 1-based, so the count is lastDataRow + 1); the rnc
|
|
1607
|
+
// engine's windowed path answers with the same shape (its 1-based `sheet_extents` max_row + 1).
|
|
1449
1608
|
var dataRowCount = getDataRowCount === null || getDataRowCount === void 0 ? void 0 : getDataRowCount(sheetId);
|
|
1450
|
-
var
|
|
1451
|
-
|
|
1452
|
-
|
|
1609
|
+
var lastDataRow = Math.min(selectionBottomBound, dataRowCount !== undefined ? dataRowCount - 1 : selectionBottomBound);
|
|
1610
|
+
if (lastDataRow <= endRow)
|
|
1611
|
+
return;
|
|
1612
|
+
// 2. Walk the adjacent column's contiguous block below the selection.
|
|
1613
|
+
var adjacentEnd = endRow;
|
|
1614
|
+
var row = endRow + 1;
|
|
1615
|
+
if (!hasValue(row, adjacentColumn)) {
|
|
1616
|
+
// End+Down: skip exactly one blank directly below the selection when data resumes after it.
|
|
1617
|
+
if (row + 1 <= lastDataRow && hasValue(row + 1, adjacentColumn)) {
|
|
1618
|
+
row += 1;
|
|
1619
|
+
}
|
|
1620
|
+
else {
|
|
1621
|
+
return;
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
while (row <= lastDataRow && hasValue(row, adjacentColumn)) {
|
|
1625
|
+
adjacentEnd = row;
|
|
1626
|
+
row += 1;
|
|
1627
|
+
}
|
|
1628
|
+
if (adjacentEnd <= endRow)
|
|
1629
|
+
return;
|
|
1630
|
+
// 3. Stop before the first pre-existing value in the fill column(s) — existing data is kept.
|
|
1631
|
+
var targetRow = adjacentEnd;
|
|
1632
|
+
for (var r = endRow + 1; r <= adjacentEnd; r++) {
|
|
1633
|
+
var occupied = false;
|
|
1634
|
+
for (var c = leftCol; c <= rightCol; c++) {
|
|
1635
|
+
if (hasValue(r, c)) {
|
|
1636
|
+
occupied = true;
|
|
1637
|
+
break;
|
|
1638
|
+
}
|
|
1639
|
+
}
|
|
1640
|
+
if (occupied) {
|
|
1641
|
+
targetRow = r - 1;
|
|
1642
|
+
break;
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1453
1645
|
// No additional rows to fill
|
|
1454
1646
|
if (targetRow <= endRow)
|
|
1455
1647
|
return;
|
|
@@ -1463,8 +1655,10 @@ var useSelection = function (_a) {
|
|
|
1463
1655
|
var newFillSelection = { range: fillRange };
|
|
1464
1656
|
// Focus on the grid
|
|
1465
1657
|
focus();
|
|
1466
|
-
// Callback to perform the fill
|
|
1467
|
-
|
|
1658
|
+
// 4. Callback to perform the fill (Ctrl/Cmd on the double-click toggles
|
|
1659
|
+
// copy↔series exactly like a Ctrl+drag)
|
|
1660
|
+
var toggle = isFillToggleModifier(e);
|
|
1661
|
+
onFill === null || onFill === void 0 ? void 0 : onFill(sheetId, activeCell, newFillSelection, selections, undefined, undefined, toggle ? { modifier: "toggle" } : undefined);
|
|
1468
1662
|
// Update selection to the new range
|
|
1469
1663
|
var curSelections = selectionsRef.current;
|
|
1470
1664
|
var len = curSelections.length;
|
|
@@ -1503,6 +1697,7 @@ var useSelection = function (_a) {
|
|
|
1503
1697
|
onFillHandleMouseDown: handleFillMouseDown,
|
|
1504
1698
|
onFillHandleDoubleClick: handleFillDoubleClick,
|
|
1505
1699
|
fillSelection: fillSelection,
|
|
1700
|
+
fillShrink: fillShrink,
|
|
1506
1701
|
clearLastSelection: handleClearLastSelection,
|
|
1507
1702
|
modifySelection: modifySelection,
|
|
1508
1703
|
selectAll: selectAll,
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -8,11 +8,23 @@ export * from "./components/sheet-status";
|
|
|
8
8
|
export * from "./components/cell-tooltip";
|
|
9
9
|
export * from "./components/insert-function-dialog";
|
|
10
10
|
export * from "./components/sort-range-dialog";
|
|
11
|
+
export * from "./components/fill-series-dialog";
|
|
12
|
+
export * from "./components/selection/fill-options-menu";
|
|
13
|
+
export * from "./api/fill-series";
|
|
14
|
+
export { type FillHandleRelease } from "./hooks/use-selection";
|
|
11
15
|
export * from "./components/paste-special-dialog";
|
|
12
16
|
export * from "./components/go-to-dialog";
|
|
13
17
|
export * from "./components/evaluate-formula-dialog";
|
|
18
|
+
export * from "./components/watch-window";
|
|
19
|
+
export * from "./components/calculation-options-dialog";
|
|
14
20
|
export { resolveGoToReference, type GoToResolverContext } from "./api/go-to";
|
|
21
|
+
export * from "./api/go-to-special";
|
|
22
|
+
export * from "./api/excel-validation-kinds";
|
|
15
23
|
export * from "./components/remove-duplicates-dialog";
|
|
24
|
+
export * from "./components/text-to-columns-dialog";
|
|
25
|
+
export * from "./components/subtotal-dialog";
|
|
26
|
+
export * from "./components/goal-seek-dialog";
|
|
27
|
+
export * from "./components/advanced-filter-dialog";
|
|
16
28
|
export * from "./components/validation-alert-dialog";
|
|
17
29
|
export * from "./components/cell-input";
|
|
18
30
|
export * from "./components/formula-bar";
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.tsx"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.tsx"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sBAAsB,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -12,12 +12,23 @@ tslib_1.__exportStar(require("./components/sheet-status"), exports);
|
|
|
12
12
|
tslib_1.__exportStar(require("./components/cell-tooltip"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./components/insert-function-dialog"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./components/sort-range-dialog"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./components/fill-series-dialog"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./components/selection/fill-options-menu"), exports);
|
|
17
|
+
tslib_1.__exportStar(require("./api/fill-series"), exports);
|
|
15
18
|
tslib_1.__exportStar(require("./components/paste-special-dialog"), exports);
|
|
16
19
|
tslib_1.__exportStar(require("./components/go-to-dialog"), exports);
|
|
17
20
|
tslib_1.__exportStar(require("./components/evaluate-formula-dialog"), exports);
|
|
21
|
+
tslib_1.__exportStar(require("./components/watch-window"), exports);
|
|
22
|
+
tslib_1.__exportStar(require("./components/calculation-options-dialog"), exports);
|
|
18
23
|
var go_to_1 = require("./api/go-to");
|
|
19
24
|
Object.defineProperty(exports, "resolveGoToReference", { enumerable: true, get: function () { return go_to_1.resolveGoToReference; } });
|
|
25
|
+
tslib_1.__exportStar(require("./api/go-to-special"), exports);
|
|
26
|
+
tslib_1.__exportStar(require("./api/excel-validation-kinds"), exports);
|
|
20
27
|
tslib_1.__exportStar(require("./components/remove-duplicates-dialog"), exports);
|
|
28
|
+
tslib_1.__exportStar(require("./components/text-to-columns-dialog"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./components/subtotal-dialog"), exports);
|
|
30
|
+
tslib_1.__exportStar(require("./components/goal-seek-dialog"), exports);
|
|
31
|
+
tslib_1.__exportStar(require("./components/advanced-filter-dialog"), exports);
|
|
21
32
|
tslib_1.__exportStar(require("./components/validation-alert-dialog"), exports);
|
|
22
33
|
tslib_1.__exportStar(require("./components/cell-input"), exports);
|
|
23
34
|
tslib_1.__exportStar(require("./components/formula-bar"), exports);
|
package/dist/cjs/release-date.js
CHANGED
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.releaseDate = void 0;
|
|
5
5
|
exports.releaseDate =
|
|
6
6
|
// @ts-ignore
|
|
7
|
-
(_a = new Date("2026-09-
|
|
7
|
+
(_a = new Date("2026-09-17")) !== null && _a !== void 0 ? _a : new Date("2025-06-18");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/fill-patterns.ts","../../api/font-loader.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table.ts","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/index.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/validation-alert.atom.ts","../../components/bottom-bar/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.spec.ts","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-function-dialog/index.tsx","../../components/loading-indicator/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/maybe.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/excel-validation-kinds.ts","../../api/fill-patterns.ts","../../api/fill-series.ts","../../api/font-loader.ts","../../api/go-to-special.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table.ts","../../api/validation-tooltip.tsx","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/advanced-filter-dialog.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/fill-options.atom.ts","../../atoms/fill-series-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/goal-seek-dialog.atom.ts","../../atoms/index.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/subtotal-dialog.atom.ts","../../atoms/text-to-columns-dialog.atom.ts","../../atoms/validation-alert.atom.ts","../../atoms/watch-window.atom.ts","../../components/advanced-filter-dialog/index.tsx","../../components/bottom-bar/index.tsx","../../components/calculation-options-dialog/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.spec.ts","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/fill-series-dialog/index.tsx","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/goal-seek-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-function-dialog/index.tsx","../../components/loading-indicator/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/fill-options-menu.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/subtotal-dialog/index.tsx","../../components/text-to-columns-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/fill-selectors.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../components/watch-window/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/maybe.ts"],"version":"5.8.3"}
|