@rowsncolumns/spreadsheet 10.2.75 → 10.2.77
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/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/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/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/index.d.ts +2 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +2 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +224 -50
- package/dist/cjs/components/canvas-grid/typings.d.ts +13 -4
- package/dist/cjs/components/canvas-grid/typings.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 +6 -3
- 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/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/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/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-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +3 -2
- 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 +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +47 -1
- package/dist/cjs/types.d.ts.map +1 -1
- 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/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/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/index.d.ts +2 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +2 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +167 -6
- package/dist/esm/components/canvas-grid/typings.d.ts +13 -4
- package/dist/esm/components/canvas-grid/typings.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 +7 -4
- 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/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/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/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-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +3 -2
- 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 +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +47 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FillOptionsMenu = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var icons_1 = require("@rowsncolumns/icons");
|
|
6
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
7
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
8
|
+
var style_1 = require("../context-menu/style");
|
|
9
|
+
var BASE_ENTRIES = [
|
|
10
|
+
{ fillType: "FillCopy", label: "Copy Cells" },
|
|
11
|
+
{ fillType: "FillSeries", label: "Fill Series" },
|
|
12
|
+
{ fillType: "FillFormats", label: "Fill Formatting Only" },
|
|
13
|
+
{ fillType: "FillWithoutFormatting", label: "Fill Without Formatting" },
|
|
14
|
+
];
|
|
15
|
+
var DATE_ENTRIES = [
|
|
16
|
+
{ fillType: "FillDays", label: "Fill Days" },
|
|
17
|
+
{ fillType: "FillWeekdays", label: "Fill Weekdays" },
|
|
18
|
+
{ fillType: "FillMonths", label: "Fill Months" },
|
|
19
|
+
{ fillType: "FillYears", label: "Fill Years" },
|
|
20
|
+
];
|
|
21
|
+
var TREND_ENTRIES = [
|
|
22
|
+
{ fillType: "LinearTrend", label: "Linear Trend" },
|
|
23
|
+
{ fillType: "GrowthTrend", label: "Growth Trend" },
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Excel's fill-type chooser. Two skins over one list: the Auto Fill Options
|
|
27
|
+
* smart tag (a small button at the bottom-right of the filled range that
|
|
28
|
+
* opens the list on click) and the right-drag menu (opens immediately on
|
|
29
|
+
* release, adds Linear/Growth Trend and Series…). Flash Fill is out of scope.
|
|
30
|
+
*/
|
|
31
|
+
var FillOptionsMenu = function (_a) {
|
|
32
|
+
var x = _a.x, y = _a.y, width = _a.width, height = _a.height, mode = _a.mode, fillType = _a.fillType, hasDates = _a.hasDates, onChooseFillType = _a.onChooseFillType, onOpenSeriesDialog = _a.onOpenSeriesDialog, onClose = _a.onClose;
|
|
33
|
+
var _b = tslib_1.__read((0, react_1.useState)(mode === "menu"), 2), open = _b[0], setOpen = _b[1];
|
|
34
|
+
var isMenu = mode === "menu";
|
|
35
|
+
// Radix fires `onSelect` and then closes; a close that follows a choice is
|
|
36
|
+
// not a cancel.
|
|
37
|
+
var choseRef = (0, react_1.useRef)(false);
|
|
38
|
+
var entries = tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(BASE_ENTRIES), false), tslib_1.__read((hasDates ? DATE_ENTRIES : [])), false), tslib_1.__read((isMenu ? TREND_ENTRIES : [])), false);
|
|
39
|
+
return (react_1.default.createElement("div", { className: "absolute pointer-events-auto flex items-start justify-start", style: { left: x + width, top: y + height }, onMouseDown: function (e) { return e.stopPropagation(); }, "data-testid": "fill-options" },
|
|
40
|
+
react_1.default.createElement(ui_1.DropdownMenu, { modal: false, open: open, onOpenChange: function (next) {
|
|
41
|
+
setOpen(next);
|
|
42
|
+
if (!next && isMenu && !choseRef.current)
|
|
43
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
44
|
+
if (!next)
|
|
45
|
+
choseRef.current = false;
|
|
46
|
+
} },
|
|
47
|
+
react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true }, isMenu ? (react_1.default.createElement(style_1.StyledFakeTriggerButton, { "aria-label": "Fill options" })) : (react_1.default.createElement(ui_1.IconButton, { tooltip: "Auto Fill Options", "aria-label": "Auto Fill Options", className: "shadow-sm bg-rnc-background border-rnc-border border border-solid rounded-md" },
|
|
48
|
+
react_1.default.createElement(icons_1.MdOutlineArrowDropDown, null)))),
|
|
49
|
+
react_1.default.createElement(ui_1.DropdownMenuPortal, null,
|
|
50
|
+
react_1.default.createElement(ui_1.DropdownMenuContent, { align: "start", onCloseAutoFocus: function (event) { return event.preventDefault(); } },
|
|
51
|
+
entries.map(function (entry) { return (react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { key: entry.fillType, checked: fillType === entry.fillType, onSelect: function () {
|
|
52
|
+
choseRef.current = true;
|
|
53
|
+
onChooseFillType(entry.fillType);
|
|
54
|
+
} },
|
|
55
|
+
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
56
|
+
react_1.default.createElement(icons_1.CheckIcon, null)),
|
|
57
|
+
entry.label)); }),
|
|
58
|
+
isMenu && onOpenSeriesDialog ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
59
|
+
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
60
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () {
|
|
61
|
+
choseRef.current = true;
|
|
62
|
+
onOpenSeriesDialog();
|
|
63
|
+
} }, "Series\u2026"))) : null)))));
|
|
64
|
+
};
|
|
65
|
+
exports.FillOptionsMenu = FillOptionsMenu;
|
|
@@ -5,5 +5,5 @@ import type { SelectionNewProps } from "./types";
|
|
|
5
5
|
* @param param0
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
|
-
export declare const Selection: React.MemoExoticComponent<({ x, y, width, height, fillHandleSize, showFillHandle, offset, stroke, strokeLeftColor, strokeTopColor, strokeRightColor, strokeBottomColor, strokeWidth, strokeTopWidth, strokeRightWidth, strokeBottomWidth, strokeLeftWidth, strokeStyle, fillOpacity, draggable, isDragging, borderCoverWidth, type, range, title, keepTitleWithinBounds, keepTitleWithinVerticalBounds, flipTitleToBottom, table, pivotTable, onMouseDownTitle, onMouseDownResizeHandle, onMouseDownMoveHandle, TitleComponent, onMouseDown, onRequestEditTable, onRequestEditPivotTable, onFlashEnd, zIndex, index, id, showResizeHandles, resizeHandleBorderColor, resizeHandleSize, fill, duration, selectionCount, enableMagicFill, sheetId, activeCell, selection, MagicFillComponent, metadata, readonly, showPasteMenu, onSplitTextToColumns, agentSuggestion, isHovered, MagicFillContent, QuickEdit, PasteMenu, SuggestionAction, onRemoveQuickEdit, onAddQuickEdit, }: SelectionNewProps) => React.JSX.Element>;
|
|
8
|
+
export declare const Selection: React.MemoExoticComponent<({ x, y, width, height, fillHandleSize, showFillHandle, offset, stroke, strokeLeftColor, strokeTopColor, strokeRightColor, strokeBottomColor, strokeWidth, strokeTopWidth, strokeRightWidth, strokeBottomWidth, strokeLeftWidth, strokeStyle, fillOpacity, draggable, isDragging, borderCoverWidth, type, range, title, keepTitleWithinBounds, keepTitleWithinVerticalBounds, flipTitleToBottom, table, pivotTable, onMouseDownTitle, onMouseDownResizeHandle, onMouseDownMoveHandle, TitleComponent, onMouseDown, onRequestEditTable, onRequestEditPivotTable, onFlashEnd, zIndex, index, id, showResizeHandles, resizeHandleBorderColor, resizeHandleSize, fill, duration, selectionCount, enableMagicFill, sheetId, activeCell, selection, MagicFillComponent, metadata, readonly, showPasteMenu, onSplitTextToColumns, agentSuggestion, isHovered, MagicFillContent, QuickEdit, PasteMenu, FillOptionsMenu, fillOptions, onChooseFillType, onOpenFillSeriesDialog, onCloseFillOptions, SuggestionAction, onRemoveQuickEdit, onAddQuickEdit, }: SelectionNewProps) => React.JSX.Element>;
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/selection/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/selection/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAcpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,SAAS,+gCAuEjB,iBAAiB,uBA0TrB,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Selection = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
var fill_options_menu_1 = require("./fill-options-menu");
|
|
6
7
|
var magic_fill_1 = require("./magic-fill");
|
|
7
8
|
var paste_menu_1 = require("./paste-menu");
|
|
8
9
|
var quick_edit_1 = require("./quick-edit");
|
|
@@ -15,7 +16,7 @@ var title_1 = require("./title");
|
|
|
15
16
|
* @returns
|
|
16
17
|
*/
|
|
17
18
|
exports.Selection = (0, react_1.memo)(function (_a) {
|
|
18
|
-
var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, _d = _a.width, width = _d === void 0 ? 0 : _d, _e = _a.height, height = _e === void 0 ? 0 : _e, _f = _a.fillHandleSize, fillHandleSize = _f === void 0 ? 8 : _f, showFillHandle = _a.showFillHandle, _g = _a.offset, offset = _g === void 0 ? 0 : _g, stroke = _a.stroke, _h = _a.strokeLeftColor, strokeLeftColor = _h === void 0 ? stroke : _h, _j = _a.strokeTopColor, strokeTopColor = _j === void 0 ? stroke : _j, _k = _a.strokeRightColor, strokeRightColor = _k === void 0 ? stroke : _k, _l = _a.strokeBottomColor, strokeBottomColor = _l === void 0 ? stroke : _l, _m = _a.strokeWidth, strokeWidth = _m === void 0 ? 0 : _m, _o = _a.strokeTopWidth, strokeTopWidth = _o === void 0 ? strokeWidth : _o, _p = _a.strokeRightWidth, strokeRightWidth = _p === void 0 ? strokeWidth : _p, _q = _a.strokeBottomWidth, strokeBottomWidth = _q === void 0 ? strokeWidth : _q, _r = _a.strokeLeftWidth, strokeLeftWidth = _r === void 0 ? strokeWidth : _r, _s = _a.strokeStyle, strokeStyle = _s === void 0 ? "solid" : _s, _t = _a.fillOpacity, fillOpacity = _t === void 0 ? 1 : _t, draggable = _a.draggable, isDragging = _a.isDragging, _u = _a.borderCoverWidth, borderCoverWidth = _u === void 0 ? 5 : _u, type = _a.type, range = _a.range, title = _a.title, keepTitleWithinBounds = _a.keepTitleWithinBounds, keepTitleWithinVerticalBounds = _a.keepTitleWithinVerticalBounds, flipTitleToBottom = _a.flipTitleToBottom, table = _a.table, pivotTable = _a.pivotTable, onMouseDownTitle = _a.onMouseDownTitle, onMouseDownResizeHandle = _a.onMouseDownResizeHandle, onMouseDownMoveHandle = _a.onMouseDownMoveHandle, _v = _a.TitleComponent, TitleComponent = _v === void 0 ? title_1.SelectionTitle : _v, onMouseDown = _a.onMouseDown, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onFlashEnd = _a.onFlashEnd, zIndex = _a.zIndex, index = _a.index, id = _a.id, showResizeHandles = _a.showResizeHandles, resizeHandleBorderColor = _a.resizeHandleBorderColor, _w = _a.resizeHandleSize, resizeHandleSize = _w === void 0 ? 6 : _w, fill = _a.fill, duration = _a.duration, selectionCount = _a.selectionCount, enableMagicFill = _a.enableMagicFill, sheetId = _a.sheetId, activeCell = _a.activeCell, selection = _a.selection, _x = _a.MagicFillComponent, MagicFillComponent = _x === void 0 ? magic_fill_1.MagicFill : _x, metadata = _a.metadata, readonly = _a.readonly, showPasteMenu = _a.showPasteMenu, onSplitTextToColumns = _a.onSplitTextToColumns, agentSuggestion = _a.agentSuggestion, isHovered = _a.isHovered, MagicFillContent = _a.MagicFillContent, _y = _a.QuickEdit, QuickEdit = _y === void 0 ? quick_edit_1.QuickEdit : _y, _z = _a.PasteMenu, PasteMenu = _z === void 0 ? paste_menu_1.PasteMenu : _z, _0 = _a.SuggestionAction, SuggestionAction =
|
|
19
|
+
var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, _d = _a.width, width = _d === void 0 ? 0 : _d, _e = _a.height, height = _e === void 0 ? 0 : _e, _f = _a.fillHandleSize, fillHandleSize = _f === void 0 ? 8 : _f, showFillHandle = _a.showFillHandle, _g = _a.offset, offset = _g === void 0 ? 0 : _g, stroke = _a.stroke, _h = _a.strokeLeftColor, strokeLeftColor = _h === void 0 ? stroke : _h, _j = _a.strokeTopColor, strokeTopColor = _j === void 0 ? stroke : _j, _k = _a.strokeRightColor, strokeRightColor = _k === void 0 ? stroke : _k, _l = _a.strokeBottomColor, strokeBottomColor = _l === void 0 ? stroke : _l, _m = _a.strokeWidth, strokeWidth = _m === void 0 ? 0 : _m, _o = _a.strokeTopWidth, strokeTopWidth = _o === void 0 ? strokeWidth : _o, _p = _a.strokeRightWidth, strokeRightWidth = _p === void 0 ? strokeWidth : _p, _q = _a.strokeBottomWidth, strokeBottomWidth = _q === void 0 ? strokeWidth : _q, _r = _a.strokeLeftWidth, strokeLeftWidth = _r === void 0 ? strokeWidth : _r, _s = _a.strokeStyle, strokeStyle = _s === void 0 ? "solid" : _s, _t = _a.fillOpacity, fillOpacity = _t === void 0 ? 1 : _t, draggable = _a.draggable, isDragging = _a.isDragging, _u = _a.borderCoverWidth, borderCoverWidth = _u === void 0 ? 5 : _u, type = _a.type, range = _a.range, title = _a.title, keepTitleWithinBounds = _a.keepTitleWithinBounds, keepTitleWithinVerticalBounds = _a.keepTitleWithinVerticalBounds, flipTitleToBottom = _a.flipTitleToBottom, table = _a.table, pivotTable = _a.pivotTable, onMouseDownTitle = _a.onMouseDownTitle, onMouseDownResizeHandle = _a.onMouseDownResizeHandle, onMouseDownMoveHandle = _a.onMouseDownMoveHandle, _v = _a.TitleComponent, TitleComponent = _v === void 0 ? title_1.SelectionTitle : _v, onMouseDown = _a.onMouseDown, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onFlashEnd = _a.onFlashEnd, zIndex = _a.zIndex, index = _a.index, id = _a.id, showResizeHandles = _a.showResizeHandles, resizeHandleBorderColor = _a.resizeHandleBorderColor, _w = _a.resizeHandleSize, resizeHandleSize = _w === void 0 ? 6 : _w, fill = _a.fill, duration = _a.duration, selectionCount = _a.selectionCount, enableMagicFill = _a.enableMagicFill, sheetId = _a.sheetId, activeCell = _a.activeCell, selection = _a.selection, _x = _a.MagicFillComponent, MagicFillComponent = _x === void 0 ? magic_fill_1.MagicFill : _x, metadata = _a.metadata, readonly = _a.readonly, showPasteMenu = _a.showPasteMenu, onSplitTextToColumns = _a.onSplitTextToColumns, agentSuggestion = _a.agentSuggestion, isHovered = _a.isHovered, MagicFillContent = _a.MagicFillContent, _y = _a.QuickEdit, QuickEdit = _y === void 0 ? quick_edit_1.QuickEdit : _y, _z = _a.PasteMenu, PasteMenu = _z === void 0 ? paste_menu_1.PasteMenu : _z, _0 = _a.FillOptionsMenu, FillOptionsMenu = _0 === void 0 ? fill_options_menu_1.FillOptionsMenu : _0, fillOptions = _a.fillOptions, onChooseFillType = _a.onChooseFillType, onOpenFillSeriesDialog = _a.onOpenFillSeriesDialog, onCloseFillOptions = _a.onCloseFillOptions, _1 = _a.SuggestionAction, SuggestionAction = _1 === void 0 ? suggestion_action_1.SuggestionAction : _1, onRemoveQuickEdit = _a.onRemoveQuickEdit, onAddQuickEdit = _a.onAddQuickEdit;
|
|
19
20
|
// Show paste menu
|
|
20
21
|
var finalShowPasteMenu = !showPasteMenu
|
|
21
22
|
? false
|
|
@@ -174,6 +175,7 @@ exports.Selection = (0, react_1.memo)(function (_a) {
|
|
|
174
175
|
(type === "selection" ||
|
|
175
176
|
(type === "activeCell" && selectionCount === 0)) ? (react_1.default.createElement(MagicFillComponent, { sheetId: sheetId, x: x, y: y, height: height, width: width, type: type, activeCell: activeCell, selection: selection, isHovered: isHovered, MagicFillContent: MagicFillContent, onAddQuickEdit: onAddQuickEdit, backgroundColor: stroke })) : null,
|
|
176
177
|
type === "quickedit" ? (react_1.default.createElement(QuickEdit, { x: x, y: y, width: width, height: height, range: range, sheetId: sheetId, onRemoveQuickEdit: onRemoveQuickEdit })) : null,
|
|
177
|
-
finalShowPasteMenu && (react_1.default.createElement(PasteMenu, { x: x + fillHandleSize / 2, y: y + fillHandleSize / 2, width: width, height: height, onSplitTextToColumns: onSplitTextToColumns }))
|
|
178
|
+
finalShowPasteMenu && (react_1.default.createElement(PasteMenu, { x: x + fillHandleSize / 2, y: y + fillHandleSize / 2, width: width, height: height, onSplitTextToColumns: onSplitTextToColumns })),
|
|
179
|
+
fillOptions && type === "selection" && onChooseFillType ? (react_1.default.createElement(FillOptionsMenu, { x: x + fillHandleSize / 2, y: y + fillHandleSize / 2, width: width, height: height, mode: fillOptions.mode, fillType: fillOptions.fillType, hasDates: fillOptions.hasDates, onChooseFillType: onChooseFillType, onOpenSeriesDialog: onOpenFillSeriesDialog, onClose: onCloseFillOptions })) : null));
|
|
178
180
|
});
|
|
179
181
|
exports.Selection.displayName = "Selection";
|
|
@@ -2,8 +2,9 @@ import type { CellInterface } from "@rowsncolumns/common-types";
|
|
|
2
2
|
import type { SelectionProps } from "@rowsncolumns/grid";
|
|
3
3
|
import type { ElementType } from "react";
|
|
4
4
|
import type { Maybe, PivotTable, SheetRange } from "../../types";
|
|
5
|
-
import type { TableView } from "../../types";
|
|
5
|
+
import type { AutoFillType, TableView } from "../../types";
|
|
6
6
|
import type { SelectionAttributes } from "../canvas-grid/typings";
|
|
7
|
+
import type { FillOptionsMenuProps } from "./fill-options-menu";
|
|
7
8
|
import type { MagicFillContentProps, MagicFillProps } from "./magic-fill";
|
|
8
9
|
import type { PasteMenuProps } from "./paste-menu";
|
|
9
10
|
import type { QuickEditProps } from "./quick-edit";
|
|
@@ -31,6 +32,15 @@ export type SelectionNewProps = SelectionProps<SelectionAttributes> & {
|
|
|
31
32
|
MagicFillContent?: React.ComponentType<MagicFillContentProps>;
|
|
32
33
|
QuickEdit?: React.ComponentType<QuickEditProps>;
|
|
33
34
|
PasteMenu?: React.ComponentType<PasteMenuProps>;
|
|
35
|
+
FillOptionsMenu?: React.ComponentType<FillOptionsMenuProps>;
|
|
36
|
+
/**
|
|
37
|
+
* Pending Auto Fill Options / right-drag fill menu for THIS selection
|
|
38
|
+
* (present only on the selection whose range is the fill target).
|
|
39
|
+
*/
|
|
40
|
+
fillOptions?: Pick<FillOptionsMenuProps, "mode" | "fillType" | "hasDates">;
|
|
41
|
+
onChooseFillType?(fillType: AutoFillType): void;
|
|
42
|
+
onOpenFillSeriesDialog?(): void;
|
|
43
|
+
onCloseFillOptions?(): void;
|
|
34
44
|
SuggestionAction?: React.ComponentType<SuggestionActionProps>;
|
|
35
45
|
readonly?: boolean;
|
|
36
46
|
showPasteMenu?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../components/selection/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../components/selection/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { CellFormat } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* What the toolbar's "General" item writes to the cell. "General" must be an
|
|
5
|
+
* EXPLICIT format, not the absence of one: a `=DATE()` cell with no
|
|
6
|
+
* `numberFormat` derives a date format at paint time in both engines, so
|
|
7
|
+
* emitting `undefined` here left the cell showing `2/29/1900` after the user
|
|
8
|
+
* chose General (rowsncolumns/spreadsheet#642 B-05). Excel stamps numFmtId 0
|
|
9
|
+
* and shows the serial.
|
|
10
|
+
*/
|
|
11
|
+
export declare const GENERAL_NUMBER_FORMAT: NonNullable<CellFormat["numberFormat"]>;
|
|
3
12
|
export type TextFormatSelectorProps = {
|
|
4
13
|
/**
|
|
5
14
|
* Current cell format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-format-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/text-format-selector.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAe,MAAM,OAAO,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,CAAC,SAAS,MAAM,UAAU,EAC7C,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KACjB,IAAI,CAAC;IACV,oBAAoB,CAAC,IAAI,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,0GAO1B,uBAAuB,uBAqY3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"text-format-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/text-format-selector.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAe,MAAM,OAAO,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAIvE,CAAC;AAEJ,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,CAAC,SAAS,MAAM,UAAU,EAC7C,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KACjB,IAAI,CAAC;IACV,oBAAoB,CAAC,IAAI,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,0GAO1B,uBAAuB,uBAqY3B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TextFormatSelector = void 0;
|
|
3
|
+
exports.TextFormatSelector = exports.GENERAL_NUMBER_FORMAT = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var icons_1 = require("@rowsncolumns/icons");
|
|
6
6
|
var ui_1 = require("@rowsncolumns/ui");
|
|
@@ -8,6 +8,18 @@ var utils_1 = require("@rowsncolumns/utils");
|
|
|
8
8
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
9
9
|
var atoms_1 = require("../../atoms");
|
|
10
10
|
var helpers_1 = require("../../helpers");
|
|
11
|
+
/**
|
|
12
|
+
* What the toolbar's "General" item writes to the cell. "General" must be an
|
|
13
|
+
* EXPLICIT format, not the absence of one: a `=DATE()` cell with no
|
|
14
|
+
* `numberFormat` derives a date format at paint time in both engines, so
|
|
15
|
+
* emitting `undefined` here left the cell showing `2/29/1900` after the user
|
|
16
|
+
* chose General (rowsncolumns/spreadsheet#642 B-05). Excel stamps numFmtId 0
|
|
17
|
+
* and shows the serial.
|
|
18
|
+
*/
|
|
19
|
+
exports.GENERAL_NUMBER_FORMAT = {
|
|
20
|
+
type: "GENERAL",
|
|
21
|
+
pattern: "General",
|
|
22
|
+
};
|
|
11
23
|
exports.TextFormatSelector = (0, react_1.memo)(function (_a) {
|
|
12
24
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
13
25
|
var _t = _a.locale, locale = _t === void 0 ? "en-US" : _t, _u = _a.currency, currency = _u === void 0 ? "USD" : _u, cellFormat = _a.cellFormat, onChangeFormatting = _a.onChangeFormatting, onRequestFormatCells = _a.onRequestFormatCells;
|
|
@@ -42,14 +54,14 @@ exports.TextFormatSelector = (0, react_1.memo)(function (_a) {
|
|
|
42
54
|
var isCurrencyRounded = ((_k = cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.numberFormat) === null || _k === void 0 ? void 0 : _k.pattern) === currencyRoundedPattern;
|
|
43
55
|
return (react_1.default.createElement(ui_1.DropdownMenu, { modal: false },
|
|
44
56
|
react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true },
|
|
45
|
-
react_1.default.createElement(ui_1.IconButton, { tooltip: "More formats" },
|
|
57
|
+
react_1.default.createElement(ui_1.IconButton, { tooltip: "More formats", "aria-label": "More formats" },
|
|
46
58
|
react_1.default.createElement("div", { className: "text-xs" }, "123"),
|
|
47
59
|
react_1.default.createElement(icons_1.MdOutlineArrowDropDown, null))),
|
|
48
60
|
react_1.default.createElement(ui_1.DropdownMenuPortal, null,
|
|
49
61
|
react_1.default.createElement(ui_1.DropdownMenuContent, { align: "start" },
|
|
50
62
|
react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { checked: !((_l = cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.numberFormat) === null || _l === void 0 ? void 0 : _l.type) ||
|
|
51
63
|
((_m = cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.numberFormat) === null || _m === void 0 ? void 0 : _m.type) === "GENERAL", onCheckedChange: function () {
|
|
52
|
-
onChangeFormatting("numberFormat",
|
|
64
|
+
onChangeFormatting("numberFormat", exports.GENERAL_NUMBER_FORMAT);
|
|
53
65
|
focusSheet === null || focusSheet === void 0 ? void 0 : focusSheet();
|
|
54
66
|
} },
|
|
55
67
|
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
@@ -33,6 +33,13 @@ export type EditorSubmitOptions = {
|
|
|
33
33
|
* there would undo the switch they just made.
|
|
34
34
|
*/
|
|
35
35
|
preserveActiveSheet?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Ctrl+Enter (Excel): commit the entry into EVERY cell of the current
|
|
38
|
+
* selection — relative references shift per cell, as a copy-fill would —
|
|
39
|
+
* and keep both the active cell and the selection where they are. On a
|
|
40
|
+
* single cell this is a plain in-place commit (no move down).
|
|
41
|
+
*/
|
|
42
|
+
fillSelection?: boolean;
|
|
36
43
|
};
|
|
37
44
|
export type UseEditableOptions<T extends CellData> = {
|
|
38
45
|
/**
|
|
@@ -260,9 +267,11 @@ export type SharedEditorProps = {
|
|
|
260
267
|
*/
|
|
261
268
|
onChange?: (value: string, textFormatRuns: TextFormatRun[] | undefined, editingSheetId: number, activeCell: CellInterface) => void;
|
|
262
269
|
/**
|
|
263
|
-
* Callback to submit the value back to data store
|
|
270
|
+
* Callback to submit the value back to data store. `shouldFocusGrid`
|
|
271
|
+
* defaults to true; `options` carries commit intent the editor derived from
|
|
272
|
+
* the keystroke (e.g. Ctrl+Enter → `fillSelection`).
|
|
264
273
|
*/
|
|
265
|
-
onSubmit?: (value: string, textFormatRuns: TextFormatRun[] | undefined, editingSheetId: number, activeCell: CellInterface, nextActiveCell?: CellInterface | null) => void;
|
|
274
|
+
onSubmit?: (value: string, textFormatRuns: TextFormatRun[] | undefined, editingSheetId: number, activeCell: CellInterface, nextActiveCell?: CellInterface | null, shouldFocusGrid?: boolean, options?: EditorSubmitOptions) => void;
|
|
266
275
|
/**
|
|
267
276
|
* On Cancel callbacks. Hides the editor
|
|
268
277
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-editable.d.ts","sourceRoot":"","sources":["../../../hooks/use-editable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,SAAS,EAIV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-editable.d.ts","sourceRoot":"","sources":["../../../hooks/use-editable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -414,6 +414,14 @@ var useEditable = function (_a) {
|
|
|
414
414
|
var isEnter = key === "Enter";
|
|
415
415
|
// Edit mode
|
|
416
416
|
if (isEditInProgress) {
|
|
417
|
+
// Tab has no browser default inside the grid: whether the editor
|
|
418
|
+
// committed on it or a function/mention dropdown swallowed it, the
|
|
419
|
+
// browser's sequential focus navigation must never pull focus off
|
|
420
|
+
// the cell editor onto the next tabbable element (sheet tab,
|
|
421
|
+
// toolbar) — the active cell moves right instead, as in Excel.
|
|
422
|
+
if (key === "Tab") {
|
|
423
|
+
e.preventDefault();
|
|
424
|
+
}
|
|
417
425
|
// Exit if editor prevented this keydown
|
|
418
426
|
// If dropdown is active
|
|
419
427
|
if (e.defaultPrevented) {
|
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import type { DataValidationRuleAlert } from "@rowsncolumns/common-types";
|
|
2
|
-
import type { CellInterface } from "@rowsncolumns/grid";
|
|
2
|
+
import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/grid";
|
|
3
3
|
import type { TextFormatRun } from "@rowsncolumns/ui";
|
|
4
4
|
import type { ValidationAlertRequest } from "../atoms/validation-alert.atom";
|
|
5
|
-
import type { CanvasGridProps } from "../components/canvas-grid/typings";
|
|
5
|
+
import type { CanvasGridProps, SelectionAttributes } from "../components/canvas-grid/typings";
|
|
6
6
|
import type { EditorSubmitOptions } from "./use-editable";
|
|
7
7
|
import type { useSelection } from "./use-selection";
|
|
8
|
+
type EntryValue = string | boolean;
|
|
9
|
+
/** One `onChangeBatch` write: a rectangle of the selection and its per-cell values. */
|
|
10
|
+
export type EntryFillWrite = {
|
|
11
|
+
range: GridRange;
|
|
12
|
+
values: EntryValue[][];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The value Ctrl+Enter writes into `cell` for an entry typed at `activeCell`: constants verbatim,
|
|
16
|
+
* formulas with their relative references shifted by the cell offset — exactly what a copy-fill
|
|
17
|
+
* from the active cell would produce (`=A1` typed in B2 with B2:B4 selected → B3 gets `=A2`).
|
|
18
|
+
*/
|
|
19
|
+
export declare const entryValueForCell: (value: EntryValue, activeCell: CellInterface, cell: CellInterface) => EntryValue;
|
|
20
|
+
/**
|
|
21
|
+
* Plan the Ctrl+Enter writes for `selections`: every selected cell except `activeCell` (already
|
|
22
|
+
* committed) gets the entry, formulas shifted per cell. Empty when nothing but the active cell is
|
|
23
|
+
* selected — a single-cell Ctrl+Enter is just an in-place commit.
|
|
24
|
+
*/
|
|
25
|
+
export declare const planEntryFill: (value: EntryValue, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => EntryFillWrite[];
|
|
8
26
|
/**
|
|
9
27
|
* Commit-time data-validation enforcement decision for a value about to be
|
|
10
28
|
* written. `block` rejects the value (Excel `errorStyle="stop"`); `confirm`
|
|
@@ -40,6 +58,17 @@ type UseEditorSubmitProps = {
|
|
|
40
58
|
* Oncomplete callback
|
|
41
59
|
*/
|
|
42
60
|
onComplete?(): void;
|
|
61
|
+
/**
|
|
62
|
+
* The grid's current selections — the target of a Ctrl+Enter commit
|
|
63
|
+
* (`options.fillSelection`). Read through a ref, so the identity may change freely.
|
|
64
|
+
*/
|
|
65
|
+
selections?: SelectionArea<SelectionAttributes>[];
|
|
66
|
+
/**
|
|
67
|
+
* Batch write used for the Ctrl+Enter spread of an entry into the selection. Every cell
|
|
68
|
+
* except the active one (committed through `onChange`) goes through here, so the same path
|
|
69
|
+
* serves both engines (legacy `changeBatch`, rnc `change-batch`).
|
|
70
|
+
*/
|
|
71
|
+
onChangeBatch?: CanvasGridProps["onChangeBatch"];
|
|
43
72
|
/**
|
|
44
73
|
* Resolve the data-validation enforcement decision for a value about to be
|
|
45
74
|
* committed at a cell. Returns `undefined` when there is nothing to enforce
|
|
@@ -53,6 +82,6 @@ type UseEditorSubmitProps = {
|
|
|
53
82
|
*/
|
|
54
83
|
showValidationAlert?: (request: ValidationAlertRequest) => Promise<boolean>;
|
|
55
84
|
};
|
|
56
|
-
export declare const useEditorSubmit: ({ sheetId, onChangeActiveSheet, setActiveCell, onChange, onComplete, getCommitValidation, showValidationAlert, }: 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>;
|
|
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>;
|
|
57
86
|
export {};
|
|
58
87
|
//# 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,MAAM,oBAAoB,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;AAOtD,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;CAC7E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,6IAU7B,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,kBA8GlC,CAAC"}
|
|
@@ -1,17 +1,105 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useEditorSubmit = void 0;
|
|
3
|
+
exports.useEditorSubmit = exports.planEntryFill = exports.entryValueForCell = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var utils_1 = require("@rowsncolumns/utils");
|
|
6
6
|
var react_1 = require("react");
|
|
7
7
|
var atoms_1 = require("../atoms");
|
|
8
8
|
var editing_cell_atom_1 = require("../atoms/editing-cell.atom");
|
|
9
9
|
var formula_mode_atom_1 = require("../atoms/formula-mode.atom");
|
|
10
|
+
var isFormulaEntry = function (value) {
|
|
11
|
+
return typeof value === "string" && value.startsWith("=");
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The value Ctrl+Enter writes into `cell` for an entry typed at `activeCell`: constants verbatim,
|
|
15
|
+
* formulas with their relative references shifted by the cell offset — exactly what a copy-fill
|
|
16
|
+
* from the active cell would produce (`=A1` typed in B2 with B2:B4 selected → B3 gets `=A2`).
|
|
17
|
+
*/
|
|
18
|
+
var entryValueForCell = function (value, activeCell, cell) {
|
|
19
|
+
var _a;
|
|
20
|
+
return isFormulaEntry(value)
|
|
21
|
+
? ((_a = (0, utils_1.formulaToRelativeReference)(value, activeCell, cell)) !== null && _a !== void 0 ? _a : value)
|
|
22
|
+
: value;
|
|
23
|
+
};
|
|
24
|
+
exports.entryValueForCell = entryValueForCell;
|
|
25
|
+
/**
|
|
26
|
+
* Rectangles of `range` minus `cell` (up to four: above, below, left, right of the cell's row),
|
|
27
|
+
* or `range` itself when the cell is outside it. Lets the batch write skip the active cell, which
|
|
28
|
+
* the ordinary commit already wrote with its rich-text runs and validation.
|
|
29
|
+
*/
|
|
30
|
+
var rectanglesExcluding = function (range, cell) {
|
|
31
|
+
var inside = cell.rowIndex >= range.startRowIndex &&
|
|
32
|
+
cell.rowIndex <= range.endRowIndex &&
|
|
33
|
+
cell.columnIndex >= range.startColumnIndex &&
|
|
34
|
+
cell.columnIndex <= range.endColumnIndex;
|
|
35
|
+
if (!inside)
|
|
36
|
+
return [range];
|
|
37
|
+
var rects = [];
|
|
38
|
+
if (cell.rowIndex > range.startRowIndex) {
|
|
39
|
+
rects.push(tslib_1.__assign(tslib_1.__assign({}, range), { endRowIndex: cell.rowIndex - 1 }));
|
|
40
|
+
}
|
|
41
|
+
if (cell.rowIndex < range.endRowIndex) {
|
|
42
|
+
rects.push(tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: cell.rowIndex + 1 }));
|
|
43
|
+
}
|
|
44
|
+
if (cell.columnIndex > range.startColumnIndex) {
|
|
45
|
+
rects.push(tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: cell.rowIndex, endRowIndex: cell.rowIndex, endColumnIndex: cell.columnIndex - 1 }));
|
|
46
|
+
}
|
|
47
|
+
if (cell.columnIndex < range.endColumnIndex) {
|
|
48
|
+
rects.push(tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: cell.rowIndex, endRowIndex: cell.rowIndex, startColumnIndex: cell.columnIndex + 1 }));
|
|
49
|
+
}
|
|
50
|
+
return rects;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Plan the Ctrl+Enter writes for `selections`: every selected cell except `activeCell` (already
|
|
54
|
+
* committed) gets the entry, formulas shifted per cell. Empty when nothing but the active cell is
|
|
55
|
+
* selected — a single-cell Ctrl+Enter is just an in-place commit.
|
|
56
|
+
*/
|
|
57
|
+
var planEntryFill = function (value, activeCell, selections) {
|
|
58
|
+
var e_1, _a, e_2, _b;
|
|
59
|
+
var writes = [];
|
|
60
|
+
try {
|
|
61
|
+
for (var selections_1 = tslib_1.__values(selections), selections_1_1 = selections_1.next(); !selections_1_1.done; selections_1_1 = selections_1.next()) {
|
|
62
|
+
var selection = selections_1_1.value;
|
|
63
|
+
try {
|
|
64
|
+
for (var _c = (e_2 = void 0, tslib_1.__values(rectanglesExcluding(selection.range, activeCell))), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
65
|
+
var range = _d.value;
|
|
66
|
+
var values = [];
|
|
67
|
+
for (var r = range.startRowIndex; r <= range.endRowIndex; r++) {
|
|
68
|
+
var row = [];
|
|
69
|
+
for (var c = range.startColumnIndex; c <= range.endColumnIndex; c++) {
|
|
70
|
+
row.push((0, exports.entryValueForCell)(value, activeCell, { rowIndex: r, columnIndex: c }));
|
|
71
|
+
}
|
|
72
|
+
values.push(row);
|
|
73
|
+
}
|
|
74
|
+
writes.push({ range: range, values: values });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
78
|
+
finally {
|
|
79
|
+
try {
|
|
80
|
+
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
81
|
+
}
|
|
82
|
+
finally { if (e_2) throw e_2.error; }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
87
|
+
finally {
|
|
88
|
+
try {
|
|
89
|
+
if (selections_1_1 && !selections_1_1.done && (_a = selections_1.return)) _a.call(selections_1);
|
|
90
|
+
}
|
|
91
|
+
finally { if (e_1) throw e_1.error; }
|
|
92
|
+
}
|
|
93
|
+
return writes;
|
|
94
|
+
};
|
|
95
|
+
exports.planEntryFill = planEntryFill;
|
|
10
96
|
var useEditorSubmit = function (_a) {
|
|
11
|
-
var sheetId = _a.sheetId, onChangeActiveSheet = _a.onChangeActiveSheet, setActiveCell = _a.setActiveCell, onChange = _a.onChange, onComplete = _a.onComplete, getCommitValidation = _a.getCommitValidation, showValidationAlert = _a.showValidationAlert;
|
|
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;
|
|
12
98
|
var _b = tslib_1.__read((0, formula_mode_atom_1.useFormulaMode)(), 2), formulaMode = _b[0], setFormulaMode = _b[1];
|
|
13
99
|
var _c = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), _ = _c[0], setEditingCellCoordinate = _c[1];
|
|
14
100
|
var setActiveEditor = (0, atoms_1.useSetActiveEditor)();
|
|
101
|
+
var selectionsRef = (0, react_1.useRef)(selections);
|
|
102
|
+
selectionsRef.current = selections;
|
|
15
103
|
return (0, react_1.useCallback)(function (value, textFormatRuns, previousValue, editingSheetId, activeCell, nextActiveCell, isDirty, options) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
16
104
|
var resetEditorState, commit, enforcement, decision, alert_1, request, proceed, _a;
|
|
17
105
|
var _b, _c;
|
|
@@ -29,7 +117,27 @@ var useEditorSubmit = function (_a) {
|
|
|
29
117
|
onComplete === null || onComplete === void 0 ? void 0 : onComplete();
|
|
30
118
|
};
|
|
31
119
|
commit = function () {
|
|
120
|
+
var e_3, _a;
|
|
121
|
+
var _b;
|
|
32
122
|
onChange === null || onChange === void 0 ? void 0 : onChange(editingSheetId, activeCell, value, textFormatRuns, previousValue, isDirty);
|
|
123
|
+
// Ctrl+Enter: the same entry into every other selected cell (formulas shift per cell).
|
|
124
|
+
// Explicit per-cell values — never a read-back of the cell just written — so the spread
|
|
125
|
+
// is correct even when the engine applies `onChange` asynchronously (legacy setState).
|
|
126
|
+
if ((options === null || options === void 0 ? void 0 : options.fillSelection) && onChangeBatch) {
|
|
127
|
+
try {
|
|
128
|
+
for (var _c = tslib_1.__values((0, exports.planEntryFill)(value, activeCell, (_b = selectionsRef.current) !== null && _b !== void 0 ? _b : [])), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
129
|
+
var write = _d.value;
|
|
130
|
+
onChangeBatch(editingSheetId, write.range, write.values);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
134
|
+
finally {
|
|
135
|
+
try {
|
|
136
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
137
|
+
}
|
|
138
|
+
finally { if (e_3) throw e_3.error; }
|
|
139
|
+
}
|
|
140
|
+
}
|
|
33
141
|
// Switch to active sheet
|
|
34
142
|
// Always change sheet first.
|
|
35
143
|
// Skipped when the submit was triggered *by* a sheet change — the
|
|
@@ -92,6 +200,7 @@ var useEditorSubmit = function (_a) {
|
|
|
92
200
|
sheetId,
|
|
93
201
|
getCommitValidation,
|
|
94
202
|
showValidationAlert,
|
|
203
|
+
onChangeBatch,
|
|
95
204
|
]);
|
|
96
205
|
};
|
|
97
206
|
exports.useEditorSubmit = useEditorSubmit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-keyboard-handler.d.ts","sourceRoot":"","sources":["../../../hooks/use-keyboard-handler.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-keyboard-handler.d.ts","sourceRoot":"","sources":["../../../hooks/use-keyboard-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASvE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EAEb,KAAK,EACL,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAuCzD,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,oBAAoB,EAAE,WAAW,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IAC3D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,iBAAiB,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACxD,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAClD,aAAa,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,iBAAiB,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACxD,qBAAqB,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAChE,gBAAgB,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACtD,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,wBAAwB,CAAC,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAC;IACvE,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAGvD,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAE5C,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACpD,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,gBAAgB,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACtD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IACzD,qBAAqB,IAAI,IAAI,CAAC;IAC9B,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACpD,gBAAgB,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACtD,oBAAoB,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC9D,sBAAsB,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAClE,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,iBAAiB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACxE,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,cAAc,IAAI,OAAO,CAAC;IAG1B,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,sEAAsE;IACtE,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,mBAAmB,CAAC,CAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,CAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,KAAK,CAAC,aAAa,CAAC,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,45BAoEhC,uBAAuB,SAGhB,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,SAiwB5C,CAAC"}
|
|
@@ -283,9 +283,10 @@ var useKeyboardHandler = function (_a) {
|
|
|
283
283
|
onClearFormatting === null || onClearFormatting === void 0 ? void 0 : onClearFormatting(sheetId, activeCell, selections);
|
|
284
284
|
e.preventDefault();
|
|
285
285
|
break;
|
|
286
|
-
// Cmd/Ctrl + Enter
|
|
286
|
+
// Cmd/Ctrl + Enter outside edit mode does nothing (Excel): the "fill the entry into
|
|
287
|
+
// every selected cell" behaviour only exists WHILE editing and is handled by the cell
|
|
288
|
+
// editor's submit path (see `EditorSubmitOptions.fillSelection`).
|
|
287
289
|
case "Enter":
|
|
288
|
-
onFillRange === null || onFillRange === void 0 ? void 0 : onFillRange(sheetId, activeCell, selections);
|
|
289
290
|
break;
|
|
290
291
|
// Cmd/Ctrl + D
|
|
291
292
|
case "d":
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type CellInterface, type SelectionArea, type SelectionProps } from "@rowsncolumns/grid";
|
|
2
2
|
import React from "react";
|
|
3
|
+
import type { FillOptionsRequest } from "../atoms/fill-options.atom";
|
|
3
4
|
import type { CanvasGridProps, SelectionAttributes } from "../components/canvas-grid/typings";
|
|
4
5
|
import type { SelectionNewProps } from "../components/selection/types";
|
|
5
|
-
import type { SheetRange } from "../types";
|
|
6
|
+
import type { AutoFillType, SheetRange } from "../types";
|
|
6
7
|
import type { useFlash } from "./use-flash";
|
|
7
8
|
export type UseSelectionRendererProps = {
|
|
8
9
|
selectionCount: number;
|
|
@@ -36,11 +37,21 @@ export type UseSelectionRendererProps = {
|
|
|
36
37
|
SuggestionAction?: CanvasGridProps["SuggestionAction"];
|
|
37
38
|
readonly?: boolean;
|
|
38
39
|
showPasteMenu?: boolean;
|
|
40
|
+
/** Pending Auto Fill Options smart tag / right-drag fill menu (rendered on the fill target). */
|
|
41
|
+
fillOptions?: FillOptionsRequest | null;
|
|
42
|
+
onChooseFillType?(fillType: AutoFillType): void;
|
|
43
|
+
onOpenFillSeriesDialog?(): void;
|
|
44
|
+
onCloseFillOptions?(): void;
|
|
39
45
|
onSplitTextToColumns: CanvasGridProps["onSplitTextToColumns"];
|
|
40
46
|
hoveredCell?: CellInterface | null;
|
|
41
47
|
onRemoveQuickEdit(range: SheetRange): void;
|
|
42
48
|
onAddQuickEdit(range: SheetRange): void;
|
|
43
49
|
cachedHoveredSelectionIds: Set<string | number>;
|
|
50
|
+
/**
|
|
51
|
+
* The fill overlay currently shows a drag-BACK of the fill handle (cells that will be cleared on
|
|
52
|
+
* release): grey them out like Excel instead of the plain dashed fill outline.
|
|
53
|
+
*/
|
|
54
|
+
isFillShrink?: boolean;
|
|
44
55
|
};
|
|
45
|
-
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, hoveredCell, onSplitTextToColumns, onRemoveQuickEdit, onAddQuickEdit, QuickEdit, PasteMenu, SuggestionAction, cachedHoveredSelectionIds, }: UseSelectionRendererProps) => (props: SelectionProps<SelectionAttributes>) => React.JSX.Element | null;
|
|
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;
|
|
46
57
|
//# 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,EAIlB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAUnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,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,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;AAEF,eAAO,MAAM,oBAAoB,GAAI,kuBAwClC,yBAAyB,aAOhB,cAAc,CAAC,mBAAmB,CAAC,6BA8O9C,CAAC"}
|