@rowsncolumns/spreadsheet 10.2.77 → 10.3.1
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/insert-options.d.ts +67 -0
- package/dist/cjs/api/insert-options.d.ts.map +1 -0
- package/dist/cjs/api/insert-options.js +104 -0
- package/dist/cjs/api/move-overwrite.d.ts +14 -0
- package/dist/cjs/api/move-overwrite.d.ts.map +1 -0
- package/dist/cjs/api/move-overwrite.js +29 -0
- package/dist/cjs/api/multi-selection.d.ts +59 -0
- package/dist/cjs/api/multi-selection.d.ts.map +1 -0
- package/dist/cjs/api/multi-selection.js +166 -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/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.js +34 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts +21 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-options.atom.js +11 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.js +42 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/sheet-context.atom.js +15 -2
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +298 -68
- package/dist/cjs/components/canvas-grid/typings.d.ts +47 -5
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.js +2 -2
- 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 +3 -3
- package/dist/cjs/components/cell-input/cell-input.d.ts +13 -0
- package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/cell-input.js +8 -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 +3 -1
- package/dist/cjs/components/context-menu/index.d.ts +16 -1
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +245 -24
- package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.js +4 -3
- package/dist/cjs/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/floating-cell-editor/index.js +13 -5
- package/dist/cjs/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/cjs/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-cells-dialog/index.js +84 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-options-smart-tag/index.js +41 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.js +34 -0
- package/dist/cjs/components/resizer/index.d.ts.map +1 -1
- package/dist/cjs/components/resizer/index.js +10 -5
- 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 +8 -0
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/sheet-search/index.d.ts.map +1 -1
- package/dist/cjs/components/sheet-search/index.js +6 -2
- package/dist/cjs/config.d.ts +6 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +8 -3
- package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/cjs/hooks/use-context-setter.js +5 -1
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +25 -3
- package/dist/cjs/hooks/use-editor-change.d.ts +4 -1
- package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-change.js +4 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts +8 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +9 -1
- package/dist/cjs/hooks/use-header-actions.d.ts.map +1 -1
- package/dist/cjs/hooks/use-header-actions.js +17 -10
- package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-move-columns-rows.js +27 -15
- package/dist/cjs/hooks/use-selection-move.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-move.js +14 -6
- package/dist/cjs/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +26 -2
- package/dist/cjs/hooks/use-selection-resize.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-resize.js +13 -6
- package/dist/cjs/hooks/use-selection.d.ts +13 -5
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +107 -31
- package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-table-resizer.js +16 -8
- package/dist/cjs/hooks/use-touch.d.ts.map +1 -1
- package/dist/cjs/hooks/use-touch.js +16 -8
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/insert-options.d.ts +67 -0
- package/dist/esm/api/insert-options.d.ts.map +1 -0
- package/dist/esm/api/insert-options.js +91 -0
- package/dist/esm/api/move-overwrite.d.ts +14 -0
- package/dist/esm/api/move-overwrite.d.ts.map +1 -0
- package/dist/esm/api/move-overwrite.js +25 -0
- package/dist/esm/api/multi-selection.d.ts +59 -0
- package/dist/esm/api/multi-selection.d.ts.map +1 -0
- package/dist/esm/api/multi-selection.js +92 -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/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.js +25 -0
- package/dist/esm/atoms/insert-options.atom.d.ts +21 -0
- package/dist/esm/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-options.atom.js +5 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.js +29 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/esm/atoms/sheet-context.atom.js +10 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +250 -24
- package/dist/esm/components/canvas-grid/typings.d.ts +47 -5
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.js +3 -3
- 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 +3 -3
- package/dist/esm/components/cell-input/cell-input.d.ts +13 -0
- package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/cell-input.js +10 -5
- 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 +3 -1
- package/dist/esm/components/context-menu/index.d.ts +16 -1
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +193 -16
- package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.js +3 -2
- package/dist/esm/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/floating-cell-editor/index.js +12 -6
- package/dist/esm/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/esm/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/insert-cells-dialog/index.js +79 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/insert-options-smart-tag/index.js +35 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.js +30 -0
- package/dist/esm/components/resizer/index.d.ts.map +1 -1
- package/dist/esm/components/resizer/index.js +8 -4
- 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 +8 -0
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/sheet-search/index.d.ts.map +1 -1
- package/dist/esm/components/sheet-search/index.js +5 -2
- package/dist/esm/config.d.ts +6 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +6 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +9 -4
- package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/esm/hooks/use-context-setter.js +5 -1
- package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +25 -4
- package/dist/esm/hooks/use-editor-change.d.ts +4 -1
- package/dist/esm/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-change.js +5 -4
- package/dist/esm/hooks/use-editor-submit.d.ts +8 -1
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +10 -2
- package/dist/esm/hooks/use-header-actions.d.ts.map +1 -1
- package/dist/esm/hooks/use-header-actions.js +11 -4
- package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-move-columns-rows.js +18 -6
- package/dist/esm/hooks/use-selection-move.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-move.js +11 -4
- package/dist/esm/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +26 -2
- package/dist/esm/hooks/use-selection-resize.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-resize.js +11 -5
- package/dist/esm/hooks/use-selection.d.ts +13 -5
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +89 -27
- package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/esm/hooks/use-table-resizer.js +15 -9
- package/dist/esm/hooks/use-touch.d.ts.map +1 -1
- package/dist/esm/hooks/use-touch.js +15 -7
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +6 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type CellInterface, type SelectionArea } from "@rowsncolumns/grid";
|
|
2
2
|
import type { TextFormatRun } from "@rowsncolumns/ui";
|
|
3
|
+
import { type FormulaLocale } from "@rowsncolumns/utils";
|
|
3
4
|
import type { CanvasGridProps, SelectionAttributes } from "../components/canvas-grid/typings";
|
|
4
5
|
type UseEditorChangeProps = {
|
|
5
6
|
selections: SelectionArea<SelectionAttributes>[];
|
|
@@ -7,7 +8,9 @@ type UseEditorChangeProps = {
|
|
|
7
8
|
onChangeEditorValue: CanvasGridProps["onChangeEditorValue"];
|
|
8
9
|
onChangeSelections?: CanvasGridProps["onChangeSelections"];
|
|
9
10
|
onChangeActiveCell?: CanvasGridProps["onChangeActiveCell"];
|
|
11
|
+
/** The formula locale the editor text is written in; `onChangeEditorValue` receives canonical text. */
|
|
12
|
+
formulaLocale?: FormulaLocale;
|
|
10
13
|
};
|
|
11
|
-
export declare const useEditorChange: ({ selections, getSelectionsFromFormula, onChangeEditorValue, onChangeSelections, onChangeActiveCell, }: UseEditorChangeProps) => (value: string, textFormatRuns: TextFormatRun[] | undefined | null, editingSheetId: number, activeCell: CellInterface) => void;
|
|
14
|
+
export declare const useEditorChange: ({ selections, getSelectionsFromFormula, onChangeEditorValue, onChangeSelections, onChangeActiveCell, formulaLocale, }: UseEditorChangeProps) => (value: string, textFormatRuns: TextFormatRun[] | undefined | null, editingSheetId: number, activeCell: CellInterface) => void;
|
|
12
15
|
export {};
|
|
13
16
|
//# sourceMappingURL=use-editor-change.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-editor-change.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-change.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-editor-change.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-change.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAC;AAa7B,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAG3C,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,GAClB,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACxC,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC3D,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC3D,uGAAuG;IACvG,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,uHAO7B,oBAAoB,aASV,MAAM,kBACG,aAAa,EAAE,GAAG,SAAS,GAAG,IAAI,kBAClC,MAAM,cACV,aAAa,SAgE9B,CAAC"}
|
|
@@ -10,7 +10,7 @@ var formula_mode_atom_1 = require("../atoms/formula-mode.atom");
|
|
|
10
10
|
var formula_selections_atom_1 = require("../atoms/formula-selections.atom");
|
|
11
11
|
var config_1 = require("../config");
|
|
12
12
|
var useEditorChange = function (_a) {
|
|
13
|
-
var selections = _a.selections, getSelectionsFromFormula = _a.getSelectionsFromFormula, onChangeEditorValue = _a.onChangeEditorValue, onChangeSelections = _a.onChangeSelections, onChangeActiveCell = _a.onChangeActiveCell;
|
|
13
|
+
var selections = _a.selections, getSelectionsFromFormula = _a.getSelectionsFromFormula, onChangeEditorValue = _a.onChangeEditorValue, onChangeSelections = _a.onChangeSelections, onChangeActiveCell = _a.onChangeActiveCell, formulaLocale = _a.formulaLocale;
|
|
14
14
|
var setFormulaMode = (0, formula_mode_atom_1.useSetFormulaMode)();
|
|
15
15
|
var setFormulaSelections = (0, formula_selections_atom_1.useSetFormulaSelections)();
|
|
16
16
|
var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
|
|
@@ -51,9 +51,9 @@ var useEditorChange = function (_a) {
|
|
|
51
51
|
if (shouldResetActiveCell && editingCellCoordinate) {
|
|
52
52
|
onChangeActiveCell === null || onChangeActiveCell === void 0 ? void 0 : onChangeActiveCell(editingSheetId, editingCellCoordinate);
|
|
53
53
|
}
|
|
54
|
-
// Callback when editor value changes
|
|
54
|
+
// Callback when editor value changes (canonical, like every value leaving the grid)
|
|
55
55
|
if (onChangeEditorValue && activeCell) {
|
|
56
|
-
onChangeEditorValue(value, editingSheetId, activeCell);
|
|
56
|
+
onChangeEditorValue((0, utils_1.canonicalizeCellInput)(value, formulaLocale), editingSheetId, activeCell);
|
|
57
57
|
}
|
|
58
58
|
}, [
|
|
59
59
|
selections,
|
|
@@ -67,6 +67,7 @@ var useEditorChange = function (_a) {
|
|
|
67
67
|
onChangeEditorValue,
|
|
68
68
|
onChangeSelections,
|
|
69
69
|
onChangeActiveCell,
|
|
70
|
+
formulaLocale,
|
|
70
71
|
]);
|
|
71
72
|
};
|
|
72
73
|
exports.useEditorChange = useEditorChange;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DataValidationRuleAlert } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/grid";
|
|
3
3
|
import type { TextFormatRun } from "@rowsncolumns/ui";
|
|
4
|
+
import { type FormulaLocale } from "@rowsncolumns/utils";
|
|
4
5
|
import type { ValidationAlertRequest } from "../atoms/validation-alert.atom";
|
|
5
6
|
import type { CanvasGridProps, SelectionAttributes } from "../components/canvas-grid/typings";
|
|
6
7
|
import type { EditorSubmitOptions } from "./use-editable";
|
|
@@ -81,7 +82,13 @@ type UseEditorSubmitProps = {
|
|
|
81
82
|
* the user chose to proceed (or acknowledged a `stop`), `false` to discard.
|
|
82
83
|
*/
|
|
83
84
|
showValidationAlert?: (request: ValidationAlertRequest) => Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* The formula locale the editor text is written in. Formulas and typed error values are
|
|
87
|
+
* canonicalized (`=СУММ(1,5;A1)` → `=SUM(1.5,A1)`) before validation, the Ctrl+Enter spread and
|
|
88
|
+
* `onChange`, so the engines and every host callback only ever see canonical text.
|
|
89
|
+
*/
|
|
90
|
+
formulaLocale?: FormulaLocale;
|
|
84
91
|
};
|
|
85
|
-
export declare const useEditorSubmit: ({ sheetId, onChangeActiveSheet, setActiveCell, onChange, onComplete, getCommitValidation, showValidationAlert, selections, onChangeBatch, }: UseEditorSubmitProps) => (value: string | boolean, textFormatRuns: TextFormatRun[] | undefined | null, previousValue: string | boolean | undefined | null, editingSheetId: number, activeCell: CellInterface, nextActiveCell?: CellInterface | null, isDirty?: boolean, options?: EditorSubmitOptions) => Promise<void>;
|
|
92
|
+
export declare const useEditorSubmit: ({ sheetId, onChangeActiveSheet, setActiveCell, onChange, onComplete, getCommitValidation, showValidationAlert, selections, onChangeBatch, formulaLocale, }: UseEditorSubmitProps) => (value: string | boolean, textFormatRuns: TextFormatRun[] | undefined | null, previousValue: string | boolean | undefined | null, editingSheetId: number, activeCell: CellInterface, nextActiveCell?: CellInterface | null, isDirty?: boolean, options?: EditorSubmitOptions) => Promise<void>;
|
|
86
93
|
export {};
|
|
87
94
|
//# sourceMappingURL=use-editor-submit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-editor-submit.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-editor-submit.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,uFAAuF;AACvF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;CACxB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,UAAU,EACjB,YAAY,aAAa,EACzB,MAAM,aAAa,KAClB,UAGQ,CAAC;AAwCZ;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,UAAU,EACjB,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,KAC/C,cAAc,EAgBhB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B;;OAEG;IACH,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC;IAChE;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC;;OAEG;IACH,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAClD;;;;OAIG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GAAG,OAAO,EACvB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,KAC/C,gBAAgB,GAAG,SAAS,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,4JAW7B,oBAAoB,aAQV,MAAM,GAAG,OAAO,kBACP,aAAa,EAAE,GAAG,SAAS,GAAG,IAAI,iBACnC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,kBAClC,MAAM,cACV,aAAa,mBACR,aAAa,GAAG,IAAI,YAC3B,OAAO,YACP,mBAAmB,kBAsHlC,CAAC"}
|
|
@@ -94,7 +94,7 @@ var planEntryFill = function (value, activeCell, selections) {
|
|
|
94
94
|
};
|
|
95
95
|
exports.planEntryFill = planEntryFill;
|
|
96
96
|
var useEditorSubmit = function (_a) {
|
|
97
|
-
var sheetId = _a.sheetId, onChangeActiveSheet = _a.onChangeActiveSheet, setActiveCell = _a.setActiveCell, onChange = _a.onChange, onComplete = _a.onComplete, getCommitValidation = _a.getCommitValidation, showValidationAlert = _a.showValidationAlert, selections = _a.selections, onChangeBatch = _a.onChangeBatch;
|
|
97
|
+
var sheetId = _a.sheetId, onChangeActiveSheet = _a.onChangeActiveSheet, setActiveCell = _a.setActiveCell, onChange = _a.onChange, onComplete = _a.onComplete, getCommitValidation = _a.getCommitValidation, showValidationAlert = _a.showValidationAlert, selections = _a.selections, onChangeBatch = _a.onChangeBatch, formulaLocale = _a.formulaLocale;
|
|
98
98
|
var _b = tslib_1.__read((0, formula_mode_atom_1.useFormulaMode)(), 2), formulaMode = _b[0], setFormulaMode = _b[1];
|
|
99
99
|
var _c = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), _ = _c[0], setEditingCellCoordinate = _c[1];
|
|
100
100
|
var setActiveEditor = (0, atoms_1.useSetActiveEditor)();
|
|
@@ -110,6 +110,13 @@ var useEditorSubmit = function (_a) {
|
|
|
110
110
|
if (formulaMode && typeof value !== "boolean") {
|
|
111
111
|
value = (0, utils_1.balanceFormula)(value);
|
|
112
112
|
}
|
|
113
|
+
/* The editor speaks the formula locale; everything downstream is canonical */
|
|
114
|
+
if (typeof value === "string") {
|
|
115
|
+
value = (0, utils_1.canonicalizeCellInput)(value, formulaLocale);
|
|
116
|
+
}
|
|
117
|
+
if (typeof previousValue === "string") {
|
|
118
|
+
previousValue = (0, utils_1.canonicalizeCellInput)(previousValue, formulaLocale);
|
|
119
|
+
}
|
|
113
120
|
resetEditorState = function () {
|
|
114
121
|
setEditingCellCoordinate(undefined);
|
|
115
122
|
setActiveEditor(undefined);
|
|
@@ -201,6 +208,7 @@ var useEditorSubmit = function (_a) {
|
|
|
201
208
|
getCommitValidation,
|
|
202
209
|
showValidationAlert,
|
|
203
210
|
onChangeBatch,
|
|
211
|
+
formulaLocale,
|
|
204
212
|
]);
|
|
205
213
|
};
|
|
206
214
|
exports.useEditorSubmit = useEditorSubmit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-header-actions.d.ts","sourceRoot":"","sources":["../../../hooks/use-header-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-header-actions.d.ts","sourceRoot":"","sources":["../../../hooks/use-header-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAiD,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,KAAK,gBAAgB,GAAG;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAClD,uBAAuB,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,YAAY,GAAG,SAAS,CAAC;IAC3E,6BAA6B,EAAE,CAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,KACN,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC;;OAEG;IACH,UAAU,CAAC,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjE,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,aAAa,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC;IAChE,WAAW,IAAI,aAAa,CAAC;IAC7B,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,ufA+B9B,gBAAgB;;;;;CAoWlB,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useHeaderActions = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
+
var grid_1 = require("@rowsncolumns/grid");
|
|
5
6
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
7
|
var scheduler_1 = require("../api/scheduler");
|
|
7
8
|
var header_menu_1 = require("../components/header-menu");
|
|
@@ -17,6 +18,8 @@ var useHeaderActions = function (_a) {
|
|
|
17
18
|
var _h = tslib_1.__read((0, react_1.useState)(0), 2), dimension = _h[0], setDimension = _h[1];
|
|
18
19
|
var _j = tslib_1.__read((0, react_1.useState)(false), 2), isDragging = _j[0], setIsDragging = _j[1];
|
|
19
20
|
var dragStartPos = (0, react_1.useRef)(0);
|
|
21
|
+
/** Document the in-flight gesture listens on (the grid may live in a popout window) */
|
|
22
|
+
var gestureDocumentRef = (0, react_1.useRef)(null);
|
|
20
23
|
var activeCellRef = (0, react_1.useRef)(undefined);
|
|
21
24
|
var axisRef = (0, react_1.useRef)(undefined);
|
|
22
25
|
var dimensionRef = (0, react_1.useRef)(0);
|
|
@@ -133,9 +136,11 @@ var useHeaderActions = function (_a) {
|
|
|
133
136
|
* Called when user finishes dragging the component
|
|
134
137
|
*/
|
|
135
138
|
var handleMouseUp = (0, react_1.useCallback)(function () {
|
|
136
|
-
var _a, _b, _c;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
var _a, _b, _c, _d;
|
|
140
|
+
var ownerDocument = (_a = gestureDocumentRef.current) !== null && _a !== void 0 ? _a : document;
|
|
141
|
+
gestureDocumentRef.current = null;
|
|
142
|
+
ownerDocument.removeEventListener("mousemove", handleMouseMove);
|
|
143
|
+
ownerDocument.removeEventListener("mouseup", handleMouseUp);
|
|
139
144
|
// Header resizer does not update otherwise.. @Vinay TODO Fix this later
|
|
140
145
|
(0, scheduler_1.scheduleLowPriorityCallback)(function () {
|
|
141
146
|
setDimension(0);
|
|
@@ -145,9 +150,9 @@ var useHeaderActions = function (_a) {
|
|
|
145
150
|
return;
|
|
146
151
|
}
|
|
147
152
|
var activeCellIndex = axisRef.current === "x"
|
|
148
|
-
? (
|
|
149
|
-
: (
|
|
150
|
-
var indexes = ((
|
|
153
|
+
? (_b = activeCellRef.current) === null || _b === void 0 ? void 0 : _b.rowIndex
|
|
154
|
+
: (_c = activeCellRef.current) === null || _c === void 0 ? void 0 : _c.columnIndex;
|
|
155
|
+
var indexes = ((_d = selectedIndexesRef.current) === null || _d === void 0 ? void 0 : _d.length) &&
|
|
151
156
|
selectedIndexesRef.current.includes(activeCellIndex)
|
|
152
157
|
? selectedIndexesRef.current
|
|
153
158
|
: [activeCellIndex];
|
|
@@ -163,7 +168,7 @@ var useHeaderActions = function (_a) {
|
|
|
163
168
|
* @returns
|
|
164
169
|
*/
|
|
165
170
|
var handleMouseDown = (0, react_1.useCallback)(function (e) {
|
|
166
|
-
var _a;
|
|
171
|
+
var _a, _b;
|
|
167
172
|
if (!activeCell || e.button !== 0) {
|
|
168
173
|
return;
|
|
169
174
|
}
|
|
@@ -172,14 +177,16 @@ var useHeaderActions = function (_a) {
|
|
|
172
177
|
if (!relativePosition) {
|
|
173
178
|
return;
|
|
174
179
|
}
|
|
175
|
-
var
|
|
180
|
+
var _c = (_a = getCellOffsetFromCoords(activeCell)) !== null && _a !== void 0 ? _a : {}, _d = _c.width, width = _d === void 0 ? 0 : _d, _e = _c.height, height = _e === void 0 ? 0 : _e;
|
|
176
181
|
activeCellRef.current = activeCell;
|
|
177
182
|
axisRef.current = (activeCell === null || activeCell === void 0 ? void 0 : activeCell.rowIndex) === 0 ? "y" : "x";
|
|
178
183
|
dragStartPos.current =
|
|
179
184
|
axisRef.current === "x" ? relativePosition.y : relativePosition.x;
|
|
180
185
|
initialDimensionRef.current = axisRef.current === "x" ? height : width;
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
var ownerDocument = (_b = (0, grid_1.getOwnerDocument)(e.currentTarget)) !== null && _b !== void 0 ? _b : document;
|
|
187
|
+
gestureDocumentRef.current = ownerDocument;
|
|
188
|
+
ownerDocument.addEventListener("mousemove", handleMouseMove);
|
|
189
|
+
ownerDocument.addEventListener("mouseup", handleMouseUp);
|
|
183
190
|
}, [
|
|
184
191
|
activeCell,
|
|
185
192
|
handleMouseMove,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-move-columns-rows.d.ts","sourceRoot":"","sources":["../../../hooks/use-move-columns-rows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;IACvE,uBAAuB,CACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,OAAO,GACtB,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,6BAA6B,EAAE,CAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,KACN,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,GAAG,SAAS,CAAC;IAChE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C;;OAEG;IACH,iBAAiB,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,aAAa,CAAC;IAC1B,uBAAuB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,8YAwBnC,oBAAoB;;;;
|
|
1
|
+
{"version":3,"file":"use-move-columns-rows.d.ts","sourceRoot":"","sources":["../../../hooks/use-move-columns-rows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;IACvE,uBAAuB,CACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,OAAO,GACtB,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,6BAA6B,EAAE,CAC7B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,KACN,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,GAAG,SAAS,CAAC;IAChE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C;;OAEG;IACH,iBAAiB,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAClD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,aAAa,CAAC;IAC1B,uBAAuB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,8YAwBnC,oBAAoB;;;;CAmatB,CAAC"}
|
|
@@ -19,6 +19,8 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
19
19
|
var _h = tslib_1.__read((0, react_1.useState)(0), 2), offset = _h[0], setOffset = _h[1];
|
|
20
20
|
var _j = tslib_1.__read((0, react_1.useState)(0), 2), dragOffset = _j[0], setDragOffset = _j[1];
|
|
21
21
|
var gapRef = (0, react_1.useRef)(0);
|
|
22
|
+
/** Document the in-flight gesture listens on (the grid may live in a popout window) */
|
|
23
|
+
var gestureDocumentRef = (0, react_1.useRef)(null);
|
|
22
24
|
var startCellRef = (0, react_1.useRef)(undefined);
|
|
23
25
|
var startRef = (0, react_1.useRef)(0);
|
|
24
26
|
var endRef = (0, react_1.useRef)(0);
|
|
@@ -89,15 +91,17 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
89
91
|
* Mouseup
|
|
90
92
|
*/
|
|
91
93
|
var handleMouseUp = (0, react_1.useCallback)(function (e) {
|
|
92
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
94
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
93
95
|
setIsDragging(false);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
var ownerDocument = (_a = gestureDocumentRef.current) !== null && _a !== void 0 ? _a : document;
|
|
97
|
+
gestureDocumentRef.current = null;
|
|
98
|
+
ownerDocument.removeEventListener("mousemove", handleMouseMove);
|
|
99
|
+
ownerDocument.removeEventListener("mouseup", handleMouseUp);
|
|
96
100
|
var dimensions = dragDimensions.current;
|
|
97
101
|
if (!dragAxis.current || !dimensions) {
|
|
98
102
|
return;
|
|
99
103
|
}
|
|
100
|
-
var
|
|
104
|
+
var _m = tslib_1.__read((0, utils_1.getMinMaxArray)(dimensions), 2), min = _m[0], max = _m[1];
|
|
101
105
|
var coords = getCellCoordsFromOffset(e.clientX, e.clientY, false);
|
|
102
106
|
if (!coords) {
|
|
103
107
|
return;
|
|
@@ -106,10 +110,10 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
106
110
|
coords.rowIndex = Math.max(coords.rowIndex, selectionTopBound);
|
|
107
111
|
coords.columnIndex = Math.max(coords.columnIndex, selectionLeftBound);
|
|
108
112
|
var direction = dragAxis.current === "x"
|
|
109
|
-
? coords.columnIndex > ((
|
|
113
|
+
? coords.columnIndex > ((_c = (_b = startCellRef.current) === null || _b === void 0 ? void 0 : _b.columnIndex) !== null && _c !== void 0 ? _c : 0)
|
|
110
114
|
? grid_1.Direction.Right
|
|
111
115
|
: grid_1.Direction.Left
|
|
112
|
-
: coords.rowIndex > ((
|
|
116
|
+
: coords.rowIndex > ((_e = (_d = startCellRef.current) === null || _d === void 0 ? void 0 : _d.rowIndex) !== null && _e !== void 0 ? _e : 0)
|
|
113
117
|
? grid_1.Direction.Down
|
|
114
118
|
: grid_1.Direction.Up;
|
|
115
119
|
var rowIndex = coords.rowIndex, columnIndex = coords.columnIndex;
|
|
@@ -125,16 +129,22 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
125
129
|
return;
|
|
126
130
|
}
|
|
127
131
|
var hasUserMovedDimensions = dragAxis.current === "x"
|
|
128
|
-
? ((
|
|
129
|
-
: ((
|
|
132
|
+
? ((_f = startCellRef.current) === null || _f === void 0 ? void 0 : _f.columnIndex) !== columnIndex
|
|
133
|
+
: ((_g = startCellRef.current) === null || _g === void 0 ? void 0 : _g.rowIndex) !== rowIndex;
|
|
130
134
|
if (direction === grid_1.Direction.Right) {
|
|
131
135
|
columnIndex =
|
|
132
|
-
coords.columnIndex - ((
|
|
136
|
+
coords.columnIndex - ((_j = (_h = dragDimensions.current) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) + 1;
|
|
133
137
|
}
|
|
134
138
|
if (direction === grid_1.Direction.Down) {
|
|
135
|
-
rowIndex = coords.rowIndex - ((
|
|
139
|
+
rowIndex = coords.rowIndex - ((_l = (_k = dragDimensions.current) === null || _k === void 0 ? void 0 : _k.length) !== null && _l !== void 0 ? _l : 0) + 1;
|
|
136
140
|
}
|
|
137
141
|
if (hasUserMovedDimensions) {
|
|
142
|
+
// Intentional deviation from Excel: a plain header drag DISPLACES the rows / columns it
|
|
143
|
+
// is dropped on (Excel plain-drags a header to overwrite and only Shift+drag inserts).
|
|
144
|
+
// Overwriting whole rows/columns by drag is destructive with no data prompt in this
|
|
145
|
+
// grid, so both plain and Shift+drag insert here; the landing index is already
|
|
146
|
+
// compensated above (`coords - length + 1` for a downward/rightward drop) so the block
|
|
147
|
+
// lands exactly where the drop indicator shows, as Excel's Insert Cut Cells does.
|
|
138
148
|
// Blocking callback
|
|
139
149
|
if (dragAxis.current === "x") {
|
|
140
150
|
onMoveColumns === null || onMoveColumns === void 0 ? void 0 : onMoveColumns(sheetId, dimensions, columnIndex);
|
|
@@ -185,7 +195,7 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
185
195
|
* MouseDown callback
|
|
186
196
|
*/
|
|
187
197
|
var handleMouseDown = (0, react_1.useCallback)(function (e) {
|
|
188
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
198
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
189
199
|
var isContextMenu = e.button === grid_2.MouseButtonCodes.right || e.ctrlKey;
|
|
190
200
|
if (isContextMenu) {
|
|
191
201
|
return;
|
|
@@ -200,7 +210,7 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
200
210
|
}
|
|
201
211
|
var axis = (coords === null || coords === void 0 ? void 0 : coords.rowIndex) === 0 ? "x" : "y";
|
|
202
212
|
var dims = axis === "x" ? columns : rows;
|
|
203
|
-
var
|
|
213
|
+
var _k = tslib_1.__read((0, utils_1.getMinMaxArray)(dims), 2), min = _k[0], max = _k[1];
|
|
204
214
|
// Set start cell
|
|
205
215
|
startCellRef.current = coords;
|
|
206
216
|
startRef.current = min;
|
|
@@ -228,10 +238,12 @@ var useMoveColumnsAndRows = function (_a) {
|
|
|
228
238
|
setOffset(offset);
|
|
229
239
|
setDragOffset(dragOffset);
|
|
230
240
|
/**
|
|
231
|
-
* Add mousemove and up listeners
|
|
241
|
+
* Add mousemove and up listeners on the document the gesture started on
|
|
232
242
|
*/
|
|
233
|
-
|
|
234
|
-
|
|
243
|
+
var ownerDocument = (_j = (0, grid_2.getOwnerDocument)(e.currentTarget)) !== null && _j !== void 0 ? _j : document;
|
|
244
|
+
gestureDocumentRef.current = ownerDocument;
|
|
245
|
+
ownerDocument.addEventListener("mousemove", handleMouseMove);
|
|
246
|
+
ownerDocument.addEventListener("mouseup", handleMouseUp);
|
|
235
247
|
}, [
|
|
236
248
|
columns,
|
|
237
249
|
rows,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-selection-move.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAEb,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-selection-move.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAEb,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAGhF,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACxD;;;;;OAKG;IACH,uBAAuB,CACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAClC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC;;;;OAIG;IACH,YAAY,CACV,IAAI,EAAE,qBAAqB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GACxB,IAAI,GAAG,SAAS,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,uDAI9B,qBAAqB;kCA+HhB,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;;CA2CzC,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useSelectionMove = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var isNil_1 = tslib_1.__importDefault(require("lodash/isNil"));
|
|
6
|
+
var grid_1 = require("@rowsncolumns/grid");
|
|
6
7
|
var react_1 = require("react");
|
|
7
8
|
var atoms_1 = require("../atoms");
|
|
8
9
|
var use_selection_resize_1 = require("./use-selection-resize");
|
|
@@ -17,6 +18,8 @@ var useSelectionMove = function (_a) {
|
|
|
17
18
|
var selectionIndexRef = (0, react_1.useRef)(undefined);
|
|
18
19
|
var isDraggingRef = (0, react_1.useRef)(false);
|
|
19
20
|
var startCell = (0, react_1.useRef)(undefined);
|
|
21
|
+
/** Document the in-flight gesture listens on (the grid may live in a popout window) */
|
|
22
|
+
var gestureDocumentRef = (0, react_1.useRef)(null);
|
|
20
23
|
var initialRange = (0, react_1.useRef)(undefined);
|
|
21
24
|
var activeEditor = (0, atoms_1.useActiveEditor)();
|
|
22
25
|
var getSelectionToAddress = (0, atoms_1.useGetAddressFromSelection)();
|
|
@@ -103,6 +106,7 @@ var useSelectionMove = function (_a) {
|
|
|
103
106
|
var _b = tslib_1.__read((0, react_1.useState)(false), 2), isDragging = _b[0], setIsDragging = _b[1];
|
|
104
107
|
// Mouseup
|
|
105
108
|
var onMouseUp = (0, react_1.useCallback)(function () {
|
|
109
|
+
var _a;
|
|
106
110
|
// Land the cursor at the end of the moved reference,
|
|
107
111
|
// not the end of the formula
|
|
108
112
|
activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.moveCursorToTokenEnd(selectionIndexRef.current);
|
|
@@ -112,12 +116,14 @@ var useSelectionMove = function (_a) {
|
|
|
112
116
|
startCell.current = undefined;
|
|
113
117
|
initialRange.current = undefined;
|
|
114
118
|
setIsDragging(false);
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
var ownerDocument = (_a = gestureDocumentRef.current) !== null && _a !== void 0 ? _a : document;
|
|
120
|
+
gestureDocumentRef.current = null;
|
|
121
|
+
ownerDocument.removeEventListener("pointermove", onMouseMove);
|
|
122
|
+
ownerDocument.removeEventListener("pointerup", onMouseUp);
|
|
117
123
|
}, [activeEditor, onMouseMove]);
|
|
118
124
|
// Mousedown
|
|
119
125
|
var onMouseDownMoveSelection = (0, react_1.useCallback)(function (e) {
|
|
120
|
-
var _a, _b;
|
|
126
|
+
var _a, _b, _c;
|
|
121
127
|
var index = Number(e.currentTarget.dataset.index);
|
|
122
128
|
if ((0, isNil_1.default)(index) || Number.isNaN(index)) {
|
|
123
129
|
return;
|
|
@@ -140,12 +146,14 @@ var useSelectionMove = function (_a) {
|
|
|
140
146
|
try {
|
|
141
147
|
(_b = (_a = e.currentTarget).setPointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, e.pointerId);
|
|
142
148
|
}
|
|
143
|
-
catch (
|
|
149
|
+
catch (_d) {
|
|
144
150
|
// jsdom / older browsers without pointer capture
|
|
145
151
|
}
|
|
146
152
|
setIsDragging(true);
|
|
147
|
-
|
|
148
|
-
|
|
153
|
+
var ownerDocument = (_c = (0, grid_1.getOwnerDocument)(e.currentTarget)) !== null && _c !== void 0 ? _c : document;
|
|
154
|
+
gestureDocumentRef.current = ownerDocument;
|
|
155
|
+
ownerDocument.addEventListener("pointermove", onMouseMove);
|
|
156
|
+
ownerDocument.addEventListener("pointerup", onMouseUp);
|
|
149
157
|
}
|
|
150
158
|
// Focus
|
|
151
159
|
activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.focus();
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type CellInterface, type SelectionArea, type SelectionProps } from "@rowsncolumns/grid";
|
|
2
2
|
import React from "react";
|
|
3
|
+
import type { InsertFormatOption } from "../api/insert-options";
|
|
3
4
|
import type { FillOptionsRequest } from "../atoms/fill-options.atom";
|
|
5
|
+
import type { InsertOptionsRequest } from "../atoms/insert-options.atom";
|
|
4
6
|
import type { CanvasGridProps, SelectionAttributes } from "../components/canvas-grid/typings";
|
|
5
7
|
import type { SelectionNewProps } from "../components/selection/types";
|
|
6
8
|
import type { AutoFillType, SheetRange } from "../types";
|
|
@@ -42,6 +44,12 @@ export type UseSelectionRendererProps = {
|
|
|
42
44
|
onChooseFillType?(fillType: AutoFillType): void;
|
|
43
45
|
onOpenFillSeriesDialog?(): void;
|
|
44
46
|
onCloseFillOptions?(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Pending Insert Options smart tag (rendered once, on the first selection
|
|
49
|
+
* that overlaps the inserted band — or the lone active cell).
|
|
50
|
+
*/
|
|
51
|
+
insertOptions?: InsertOptionsRequest | null;
|
|
52
|
+
onChooseInsertOption?(option: InsertFormatOption): void;
|
|
45
53
|
onSplitTextToColumns: CanvasGridProps["onSplitTextToColumns"];
|
|
46
54
|
hoveredCell?: CellInterface | null;
|
|
47
55
|
onRemoveQuickEdit(range: SheetRange): void;
|
|
@@ -53,5 +61,5 @@ export type UseSelectionRendererProps = {
|
|
|
53
61
|
*/
|
|
54
62
|
isFillShrink?: boolean;
|
|
55
63
|
};
|
|
56
|
-
export declare const useSelectionRenderer: ({ sheetId, selectionCount, selectionBackgroundColor, selectionBorderColor, onSelectionMouseDown, onChangeActiveCell, onChangeSelections, onRequestEditTable, onRequestEditPivotTable, onMouseDownResizeHandle, onMouseDownMoveSelection, isDraggingMoveSelection, onFlashEnd, getSheetName, resizeHandleSize, showSelectionResizeHandles, resizeHandleBorderColor, SelectionTitleComponent, isResizingTable, fillHandleSize, showFillHandle, enableMagicFill, MagicFillComponent, MagicFillContent, readonly, showPasteMenu, fillOptions, onChooseFillType, onOpenFillSeriesDialog, onCloseFillOptions, hoveredCell, onSplitTextToColumns, onRemoveQuickEdit, onAddQuickEdit, QuickEdit, PasteMenu, SuggestionAction, cachedHoveredSelectionIds, isFillShrink, }: UseSelectionRendererProps) => (props: SelectionProps<SelectionAttributes>) => React.JSX.Element | null;
|
|
64
|
+
export declare const useSelectionRenderer: ({ sheetId, selectionCount, selectionBackgroundColor, selectionBorderColor, onSelectionMouseDown, onChangeActiveCell, onChangeSelections, onRequestEditTable, onRequestEditPivotTable, onMouseDownResizeHandle, onMouseDownMoveSelection, isDraggingMoveSelection, onFlashEnd, getSheetName, resizeHandleSize, showSelectionResizeHandles, resizeHandleBorderColor, SelectionTitleComponent, isResizingTable, fillHandleSize, showFillHandle, enableMagicFill, MagicFillComponent, MagicFillContent, readonly, showPasteMenu, fillOptions, onChooseFillType, onOpenFillSeriesDialog, onCloseFillOptions, insertOptions, onChooseInsertOption, hoveredCell, onSplitTextToColumns, onRemoveQuickEdit, onAddQuickEdit, QuickEdit, PasteMenu, SuggestionAction, cachedHoveredSelectionIds, isFillShrink, }: UseSelectionRendererProps) => (props: SelectionProps<SelectionAttributes>) => React.JSX.Element | null;
|
|
57
65
|
//# sourceMappingURL=use-selection-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-selection-renderer.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"use-selection-renderer.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKlB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAShE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,oBAAoB,CAAC,CACnB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,EAC/C,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,SAAS,EAAE,aAAa,GAAG,SAAS,EACpC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAChC,IAAI,CAAC;IACR,uBAAuB,EAAE,KAAK,CAAC,WAAW,CAAC;IAC3C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,uBAAuB,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACpE,uBAAuB,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;IACtE,wBAAwB,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;IACrE,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;IACtD,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC3D,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gGAAgG;IAChG,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAChD,sBAAsB,CAAC,IAAI,IAAI,CAAC;IAChC,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxD,oBAAoB,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC9D,WAAW,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,yBAAyB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAChD;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAyBF,eAAO,MAAM,oBAAoB,GAAI,uwBA0ClC,yBAAyB,aAOhB,cAAc,CAAC,mBAAmB,CAAC,6BAyP9C,CAAC"}
|
|
@@ -12,8 +12,25 @@ var selection_1 = require("./../components/selection");
|
|
|
12
12
|
/** Excel greys the cells a fill-handle drag-back is about to clear. */
|
|
13
13
|
var FILL_SHRINK_COLOR = "#808080";
|
|
14
14
|
var FILL_SHRINK_OPACITY = 0.25;
|
|
15
|
+
/**
|
|
16
|
+
* The Insert Options smart tag renders once: on the first drag-selection that
|
|
17
|
+
* overlaps the inserted band, or on the active cell when there is no
|
|
18
|
+
* drag-selection at all (a lone cell that became part of the band).
|
|
19
|
+
*/
|
|
20
|
+
var anchorsInsertOptions = function (insertOptions, range, type, index, isEmptySelections) {
|
|
21
|
+
if (type !== "selection" && !(type === "activeCell" && isEmptySelections)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (type === "selection" && index !== 0)
|
|
25
|
+
return false;
|
|
26
|
+
var bandEnd = insertOptions.start + insertOptions.count - 1;
|
|
27
|
+
return insertOptions.axis === "row"
|
|
28
|
+
? range.startRowIndex <= bandEnd && range.endRowIndex >= insertOptions.start
|
|
29
|
+
: range.startColumnIndex <= bandEnd &&
|
|
30
|
+
range.endColumnIndex >= insertOptions.start;
|
|
31
|
+
};
|
|
15
32
|
var useSelectionRenderer = function (_a) {
|
|
16
|
-
var sheetId = _a.sheetId, selectionCount = _a.selectionCount, selectionBackgroundColor = _a.selectionBackgroundColor, selectionBorderColor = _a.selectionBorderColor, onSelectionMouseDown = _a.onSelectionMouseDown, onChangeActiveCell = _a.onChangeActiveCell, onChangeSelections = _a.onChangeSelections, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onMouseDownResizeHandle = _a.onMouseDownResizeHandle, onMouseDownMoveSelection = _a.onMouseDownMoveSelection, isDraggingMoveSelection = _a.isDraggingMoveSelection, onFlashEnd = _a.onFlashEnd, getSheetName = _a.getSheetName, _b = _a.resizeHandleSize, resizeHandleSize = _b === void 0 ? 6 : _b, showSelectionResizeHandles = _a.showSelectionResizeHandles, resizeHandleBorderColor = _a.resizeHandleBorderColor, SelectionTitleComponent = _a.SelectionTitleComponent, isResizingTable = _a.isResizingTable, fillHandleSize = _a.fillHandleSize, showFillHandle = _a.showFillHandle, enableMagicFill = _a.enableMagicFill, MagicFillComponent = _a.MagicFillComponent, MagicFillContent = _a.MagicFillContent, readonly = _a.readonly, showPasteMenu = _a.showPasteMenu, fillOptions = _a.fillOptions, onChooseFillType = _a.onChooseFillType, onOpenFillSeriesDialog = _a.onOpenFillSeriesDialog, onCloseFillOptions = _a.onCloseFillOptions, hoveredCell = _a.hoveredCell, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveQuickEdit = _a.onRemoveQuickEdit, onAddQuickEdit = _a.onAddQuickEdit, QuickEdit = _a.QuickEdit, PasteMenu = _a.PasteMenu, SuggestionAction = _a.SuggestionAction, cachedHoveredSelectionIds = _a.cachedHoveredSelectionIds, _c = _a.isFillShrink, isFillShrink = _c === void 0 ? false : _c;
|
|
33
|
+
var sheetId = _a.sheetId, selectionCount = _a.selectionCount, selectionBackgroundColor = _a.selectionBackgroundColor, selectionBorderColor = _a.selectionBorderColor, onSelectionMouseDown = _a.onSelectionMouseDown, onChangeActiveCell = _a.onChangeActiveCell, onChangeSelections = _a.onChangeSelections, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onMouseDownResizeHandle = _a.onMouseDownResizeHandle, onMouseDownMoveSelection = _a.onMouseDownMoveSelection, isDraggingMoveSelection = _a.isDraggingMoveSelection, onFlashEnd = _a.onFlashEnd, getSheetName = _a.getSheetName, _b = _a.resizeHandleSize, resizeHandleSize = _b === void 0 ? 6 : _b, showSelectionResizeHandles = _a.showSelectionResizeHandles, resizeHandleBorderColor = _a.resizeHandleBorderColor, SelectionTitleComponent = _a.SelectionTitleComponent, isResizingTable = _a.isResizingTable, fillHandleSize = _a.fillHandleSize, showFillHandle = _a.showFillHandle, enableMagicFill = _a.enableMagicFill, MagicFillComponent = _a.MagicFillComponent, MagicFillContent = _a.MagicFillContent, readonly = _a.readonly, showPasteMenu = _a.showPasteMenu, fillOptions = _a.fillOptions, onChooseFillType = _a.onChooseFillType, onOpenFillSeriesDialog = _a.onOpenFillSeriesDialog, onCloseFillOptions = _a.onCloseFillOptions, insertOptions = _a.insertOptions, onChooseInsertOption = _a.onChooseInsertOption, hoveredCell = _a.hoveredCell, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveQuickEdit = _a.onRemoveQuickEdit, onAddQuickEdit = _a.onAddQuickEdit, QuickEdit = _a.QuickEdit, PasteMenu = _a.PasteMenu, SuggestionAction = _a.SuggestionAction, cachedHoveredSelectionIds = _a.cachedHoveredSelectionIds, _c = _a.isFillShrink, isFillShrink = _c === void 0 ? false : _c;
|
|
17
34
|
var formulaMode = (0, formula_mode_atom_1.useFormulaModeValue)();
|
|
18
35
|
var selectionIndex = (0, atoms_1.useFormulaSelectionIndex)();
|
|
19
36
|
var hoveredCellRef = (0, react_1.useRef)(hoveredCell);
|
|
@@ -103,7 +120,12 @@ var useSelectionRenderer = function (_a) {
|
|
|
103
120
|
fillOptions.sheetId === sheetId &&
|
|
104
121
|
(0, grid_1.isAreasEqual)(fillOptions.fillSelection.range, range)
|
|
105
122
|
? fillOptions
|
|
106
|
-
: undefined, onChooseFillType: onChooseFillType, onOpenFillSeriesDialog: onOpenFillSeriesDialog, onCloseFillOptions: onCloseFillOptions,
|
|
123
|
+
: undefined, onChooseFillType: onChooseFillType, onOpenFillSeriesDialog: onOpenFillSeriesDialog, onCloseFillOptions: onCloseFillOptions, insertOptions: insertOptions &&
|
|
124
|
+
range &&
|
|
125
|
+
insertOptions.sheetId === sheetId &&
|
|
126
|
+
anchorsInsertOptions(insertOptions, range, type, index, isEmptySelections)
|
|
127
|
+
? insertOptions
|
|
128
|
+
: undefined, onChooseInsertOption: onChooseInsertOption, sheetId: sheetId, MagicFillContent: MagicFillContent, QuickEdit: QuickEdit, PasteMenu: PasteMenu, SuggestionAction: SuggestionAction, onSplitTextToColumns: function (delimiter) {
|
|
107
129
|
// Active cell
|
|
108
130
|
var newActiveCell = range
|
|
109
131
|
? {
|
|
@@ -148,6 +170,8 @@ var useSelectionRenderer = function (_a) {
|
|
|
148
170
|
onChooseFillType,
|
|
149
171
|
onOpenFillSeriesDialog,
|
|
150
172
|
onCloseFillOptions,
|
|
173
|
+
insertOptions,
|
|
174
|
+
onChooseInsertOption,
|
|
151
175
|
onSplitTextToColumns,
|
|
152
176
|
MagicFillContent,
|
|
153
177
|
QuickEdit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-selection-resize.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-resize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,SAAS,EACT,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAIhF,KAAK,uBAAuB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACxD;;;;;OAKG;IACH,uBAAuB,CACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAClC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAC9C;;;;OAIG;IACH,YAAY,CACV,IAAI,EAAE,qBAAqB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GACxB,IAAI,GAAG,SAAS,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,WAU/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,wFAMhC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"use-selection-resize.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-resize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,SAAS,EACT,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAIhF,KAAK,uBAAuB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACxD;;;;;OAKG;IACH,uBAAuB,CACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAClC,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAC9C;;;;OAIG;IACH,YAAY,CACV,IAAI,EAAE,qBAAqB,EAC3B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GACxB,IAAI,GAAG,SAAS,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,EAAE,WAU/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,wFAMhC,uBAAuB,SAmIlB,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,SAmDzC,CAAC"}
|
|
@@ -28,6 +28,8 @@ var useSelectionResize = function (_a) {
|
|
|
28
28
|
var selectionIndexRef = (0, react_1.useRef)(undefined);
|
|
29
29
|
var isDraggingRef = (0, react_1.useRef)(false);
|
|
30
30
|
var anchorCell = (0, react_1.useRef)(undefined);
|
|
31
|
+
/** Document the in-flight gesture listens on (the grid may live in a popout window) */
|
|
32
|
+
var gestureDocumentRef = (0, react_1.useRef)(null);
|
|
31
33
|
var activeEditor = (0, atoms_1.useActiveEditor)();
|
|
32
34
|
var getSelectionToAddress = (0, atoms_1.useGetAddressFromSelection)();
|
|
33
35
|
var getSelectionsFromFormula = (0, atoms_1.useGetSelectionsFromFormula)();
|
|
@@ -126,6 +128,7 @@ var useSelectionResize = function (_a) {
|
|
|
126
128
|
]);
|
|
127
129
|
// Mouseup
|
|
128
130
|
var onMouseUp = (0, react_1.useCallback)(function () {
|
|
131
|
+
var _a;
|
|
129
132
|
// Land the cursor at the end of the resized reference,
|
|
130
133
|
// not the end of the formula
|
|
131
134
|
activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.moveCursorToTokenEnd(selectionIndexRef.current);
|
|
@@ -133,12 +136,14 @@ var useSelectionResize = function (_a) {
|
|
|
133
136
|
activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.focus();
|
|
134
137
|
isDraggingRef.current = false;
|
|
135
138
|
anchorCell.current = undefined;
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
var ownerDocument = (_a = gestureDocumentRef.current) !== null && _a !== void 0 ? _a : document;
|
|
140
|
+
gestureDocumentRef.current = null;
|
|
141
|
+
ownerDocument.removeEventListener("pointermove", onMouseMove);
|
|
142
|
+
ownerDocument.removeEventListener("pointerup", onMouseUp);
|
|
138
143
|
}, [activeEditor, onMouseMove]);
|
|
139
144
|
// Mousedown
|
|
140
145
|
var onMouseDownResizeHandle = (0, react_1.useCallback)(function (e) {
|
|
141
|
-
var _a, _b;
|
|
146
|
+
var _a, _b, _c;
|
|
142
147
|
var direction = e.currentTarget.dataset.position;
|
|
143
148
|
var index = Number(e.currentTarget.dataset.index);
|
|
144
149
|
if ((0, isNil_1.default)(direction) || (0, isNil_1.default)(index)) {
|
|
@@ -160,11 +165,13 @@ var useSelectionResize = function (_a) {
|
|
|
160
165
|
try {
|
|
161
166
|
(_b = (_a = e.currentTarget).setPointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, e.pointerId);
|
|
162
167
|
}
|
|
163
|
-
catch (
|
|
168
|
+
catch (_d) {
|
|
164
169
|
// jsdom / older browsers without pointer capture
|
|
165
170
|
}
|
|
166
|
-
|
|
167
|
-
|
|
171
|
+
var ownerDocument = (_c = (0, grid_1.getOwnerDocument)(e.currentTarget)) !== null && _c !== void 0 ? _c : document;
|
|
172
|
+
gestureDocumentRef.current = ownerDocument;
|
|
173
|
+
ownerDocument.addEventListener("pointermove", onMouseMove);
|
|
174
|
+
ownerDocument.addEventListener("pointerup", onMouseUp);
|
|
168
175
|
}
|
|
169
176
|
// Focus
|
|
170
177
|
activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.focus();
|
|
@@ -144,6 +144,18 @@ export type UseSelectionOptions<T extends AreaStyle = AreaStyle> = {
|
|
|
144
144
|
* When selection is moved
|
|
145
145
|
*/
|
|
146
146
|
onMoveSelection?: (sheetId: number, from: SelectionArea<T>, to: SelectionArea<T>) => void;
|
|
147
|
+
/**
|
|
148
|
+
* Shift+drag of the selection border (Excel's I-beam insert): the destination
|
|
149
|
+
* band is displaced and the block inserted, never overwriting. Falls back to
|
|
150
|
+
* `onMoveSelection` when absent.
|
|
151
|
+
*/
|
|
152
|
+
onInsertCutCells?: (sheetId: number, from: SelectionArea<T>, to: SelectionArea<T>) => void;
|
|
153
|
+
/**
|
|
154
|
+
* Asks the user before a plain drag-move overwrites non-empty destination
|
|
155
|
+
* cells (Excel: "There's already data here. Do you want to replace it?").
|
|
156
|
+
* Resolves `false` to cancel the move. Defaults to `window.confirm`.
|
|
157
|
+
*/
|
|
158
|
+
confirmMoveOverwrite?: (message: string) => boolean | Promise<boolean>;
|
|
147
159
|
/**
|
|
148
160
|
* Get cell coords from x, y
|
|
149
161
|
* @param x
|
|
@@ -195,11 +207,7 @@ export type UseSelectionOptions<T extends AreaStyle = AreaStyle> = {
|
|
|
195
207
|
isColumnHeader(index: number): boolean;
|
|
196
208
|
};
|
|
197
209
|
export type NewSelectionMode = "clear" | "modify" | "append";
|
|
198
|
-
|
|
199
|
-
* Hook to enable selection in datagrid
|
|
200
|
-
* @param initialSelection
|
|
201
|
-
*/
|
|
202
|
-
export declare const useSelection: <T extends AreaStyle>({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount, rowCount, selectionPolicy, newSelectionMode, allowDeselectSelection, onFill, onFillHandleRelease, onFillShrink, isHiddenRow, isHiddenColumn, alwaysScrollToActiveCell, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, mouseDownInterceptor, mouseMoveInterceptor, mergedCells, canSelectionSpanMergedCells, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation, }: UseSelectionOptions<T>) => {
|
|
210
|
+
export declare const useSelection: <T extends AreaStyle>({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount, rowCount, selectionPolicy, newSelectionMode, allowDeselectSelection, onFill, onFillHandleRelease, onFillShrink, onInsertCutCells, confirmMoveOverwrite, isHiddenRow, isHiddenColumn, alwaysScrollToActiveCell, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, mouseDownInterceptor, mouseMoveInterceptor, mergedCells, canSelectionSpanMergedCells, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation, }: UseSelectionOptions<T>) => {
|
|
203
211
|
isDragging: boolean;
|
|
204
212
|
draggedSelection: SelectionArea<T> | undefined;
|
|
205
213
|
initialDraggedSelection: SelectionArea<T> | undefined;
|