@rowsncolumns/spreadsheet 10.5.5 → 10.5.7

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.
Files changed (85) hide show
  1. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  2. package/dist/cjs/components/canvas-grid/index.js +119 -64
  3. package/dist/cjs/components/canvas-grid/typings.d.ts +24 -1
  4. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  5. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  6. package/dist/cjs/components/cell/index.js +15 -6
  7. package/dist/cjs/components/cell/line-height.d.ts +10 -10
  8. package/dist/cjs/components/cell/line-height.d.ts.map +1 -1
  9. package/dist/cjs/components/cell/line-height.js +17 -19
  10. package/dist/cjs/components/cell/typings.d.ts +3 -1
  11. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  12. package/dist/cjs/components/cell-editor/index.d.ts +1 -1
  13. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  14. package/dist/cjs/components/cell-editor/index.js +24 -8
  15. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  16. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +49 -6
  17. package/dist/cjs/helpers.d.ts.map +1 -1
  18. package/dist/cjs/helpers.js +2 -1
  19. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  20. package/dist/cjs/hooks/use-context-setter.js +3 -1
  21. package/dist/cjs/hooks/use-editable.d.ts +29 -1
  22. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  23. package/dist/cjs/hooks/use-editable.js +70 -13
  24. package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -1
  25. package/dist/cjs/hooks/use-editor-change.js +9 -3
  26. package/dist/cjs/hooks/use-editor-keydown.d.ts +2 -1
  27. package/dist/cjs/hooks/use-editor-keydown.d.ts.map +1 -1
  28. package/dist/cjs/hooks/use-editor-keydown.js +5 -3
  29. package/dist/cjs/hooks/use-filter.d.ts +1 -1
  30. package/dist/cjs/hooks/use-filter.d.ts.map +1 -1
  31. package/dist/cjs/hooks/use-filter.js +4 -2
  32. package/dist/cjs/hooks/use-keyboard-handler.d.ts +9 -1
  33. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  34. package/dist/cjs/hooks/use-keyboard-handler.js +88 -39
  35. package/dist/cjs/hooks/use-sizer.d.ts +3 -1
  36. package/dist/cjs/hooks/use-sizer.d.ts.map +1 -1
  37. package/dist/cjs/hooks/use-sizer.js +7 -4
  38. package/dist/cjs/platform.d.ts +9 -0
  39. package/dist/cjs/platform.d.ts.map +1 -0
  40. package/dist/cjs/platform.js +21 -0
  41. package/dist/cjs/release-date.js +1 -1
  42. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  43. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  44. package/dist/esm/components/canvas-grid/index.js +57 -5
  45. package/dist/esm/components/canvas-grid/typings.d.ts +24 -1
  46. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  47. package/dist/esm/components/cell/index.d.ts.map +1 -1
  48. package/dist/esm/components/cell/index.js +17 -8
  49. package/dist/esm/components/cell/line-height.d.ts +10 -10
  50. package/dist/esm/components/cell/line-height.d.ts.map +1 -1
  51. package/dist/esm/components/cell/line-height.js +15 -15
  52. package/dist/esm/components/cell/typings.d.ts +3 -1
  53. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  54. package/dist/esm/components/cell-editor/index.d.ts +1 -1
  55. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  56. package/dist/esm/components/cell-editor/index.js +20 -4
  57. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  58. package/dist/esm/components/cell-input/formula-bar-cell-input.js +49 -7
  59. package/dist/esm/helpers.d.ts.map +1 -1
  60. package/dist/esm/helpers.js +2 -1
  61. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  62. package/dist/esm/hooks/use-context-setter.js +3 -1
  63. package/dist/esm/hooks/use-editable.d.ts +29 -1
  64. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  65. package/dist/esm/hooks/use-editable.js +67 -7
  66. package/dist/esm/hooks/use-editor-change.d.ts.map +1 -1
  67. package/dist/esm/hooks/use-editor-change.js +10 -4
  68. package/dist/esm/hooks/use-editor-keydown.d.ts +2 -1
  69. package/dist/esm/hooks/use-editor-keydown.d.ts.map +1 -1
  70. package/dist/esm/hooks/use-editor-keydown.js +5 -3
  71. package/dist/esm/hooks/use-filter.d.ts +1 -1
  72. package/dist/esm/hooks/use-filter.d.ts.map +1 -1
  73. package/dist/esm/hooks/use-filter.js +4 -2
  74. package/dist/esm/hooks/use-keyboard-handler.d.ts +9 -1
  75. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  76. package/dist/esm/hooks/use-keyboard-handler.js +88 -39
  77. package/dist/esm/hooks/use-sizer.d.ts +3 -1
  78. package/dist/esm/hooks/use-sizer.d.ts.map +1 -1
  79. package/dist/esm/hooks/use-sizer.js +8 -5
  80. package/dist/esm/platform.d.ts +9 -0
  81. package/dist/esm/platform.d.ts.map +1 -0
  82. package/dist/esm/platform.js +16 -0
  83. package/dist/esm/release-date.js +1 -1
  84. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  85. package/package.json +2 -2
@@ -4,6 +4,7 @@ exports.FormulaBarInput = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var ui_1 = require("@rowsncolumns/ui");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
+ var active_editor_atom_1 = require("../../atoms/active-editor.atom");
7
8
  var cell_input_context_atom_1 = require("../../atoms/cell-input-context.atom");
8
9
  var editing_cell_atom_1 = require("../../atoms/editing-cell.atom");
9
10
  var sheet_context_atom_1 = require("../../atoms/sheet-context.atom");
@@ -18,6 +19,8 @@ exports.FormulaBarInput = (0, react_1.memo)(function (_a) {
18
19
  var _d = tslib_1.__read((0, formula_bar_editor_value_atom_1.useFormulaBarTextFormatRuns)(), 1), textFormatRuns = _d[0];
19
20
  var setFormulaBarEditorInstance = (0, formula_bar_editor_value_atom_1.useSetFormulaBarEditorInstance)();
20
21
  var mergedEditorRef = (0, use_merge_refs_1.useMergeRefs)(editorRef, setFormulaBarEditorInstance);
22
+ var cellEditorInstance = (0, formula_bar_editor_value_atom_1.useCellEditorInstance)();
23
+ var setActiveEditor = (0, active_editor_atom_1.useSetActiveEditor)();
21
24
  var editingCellCoordinate = (0, editing_cell_atom_1.useEditingCellCoordinate)();
22
25
  var formulaLocale = (0, sheet_context_atom_1.useFormulaLocale)();
23
26
  var isEditInProgress = Boolean(editingCellCoordinate);
@@ -31,11 +34,39 @@ exports.FormulaBarInput = (0, react_1.memo)(function (_a) {
31
34
  return !canEdit;
32
35
  }, [editingCell, editingSheetId, canEditCell]);
33
36
  var handleChange = (0, react_1.useCallback)(function (value, textFormatRuns) {
34
- if (editingCell) {
35
- // This will update formula bar editor value too
36
- setEditorValue === null || setEditorValue === void 0 ? void 0 : setEditorValue(value, textFormatRuns, editingSheetId, editingCell);
37
+ var _a;
38
+ if (!editingCell) {
39
+ return;
40
+ }
41
+ if (!isEditInProgress) {
42
+ // The bar kept the focus after the host ended the edit (a sheet
43
+ // switch or an outside click commits without refocusing the grid):
44
+ // the keystroke starts an edit, as the click into the bar did, so
45
+ // the text is never typed into nothing. The bar stays the active
46
+ // editor, as after that click.
47
+ makeEditable === null || makeEditable === void 0 ? void 0 : makeEditable(sheetId, editingCell, value, { autoFocus: false });
48
+ setActiveEditor((_a = editorRef.current) !== null && _a !== void 0 ? _a : undefined);
37
49
  }
38
- }, [setEditorValue, editingSheetId, editingCell]);
50
+ // This will update formula bar editor value too
51
+ setEditorValue === null || setEditorValue === void 0 ? void 0 : setEditorValue(value, textFormatRuns, editingSheetId, editingCell);
52
+ }, [
53
+ setEditorValue,
54
+ makeEditable,
55
+ setActiveEditor,
56
+ sheetId,
57
+ editingSheetId,
58
+ editingCell,
59
+ isEditInProgress,
60
+ ]);
61
+ // Excel: Esc cancels the entry, Enter / Tab commit it, and each hands the
62
+ // keyboard focus back to the worksheet, so the arrow keys move the active
63
+ // cell and the next printable key starts a new entry. The grid's own
64
+ // refocus (`focusSheet`) declines while the focus sits outside the grid
65
+ // container, which the bar does, so the bar gives the focus to the
66
+ // grid's key sink — its sticky cell editor — itself.
67
+ var returnFocusToSheet = (0, react_1.useCallback)(function () {
68
+ cellEditorInstance === null || cellEditorInstance === void 0 ? void 0 : cellEditorInstance.focus();
69
+ }, [cellEditorInstance]);
39
70
  // Focus, show cell editor
40
71
  var handleFocus = (0, react_1.useCallback)(function () {
41
72
  if (editingCell && !isEditInProgress) {
@@ -47,14 +78,26 @@ exports.FormulaBarInput = (0, react_1.memo)(function (_a) {
47
78
  if (editingCell) {
48
79
  submitEditor === null || submitEditor === void 0 ? void 0 : submitEditor(value, textFormatRuns, editingSheetId, editingCell, getNextFocusableCell === null || getNextFocusableCell === void 0 ? void 0 : getNextFocusableCell(editingSheetId, editingCell, direction));
49
80
  }
50
- }, [getNextFocusableCell, submitEditor, editingSheetId, editingCell]);
81
+ returnFocusToSheet();
82
+ }, [
83
+ getNextFocusableCell,
84
+ submitEditor,
85
+ editingSheetId,
86
+ editingCell,
87
+ returnFocusToSheet,
88
+ ]);
89
+ // User cancels the entry
90
+ var handleCancel = (0, react_1.useCallback)(function (e) {
91
+ cancelEditor === null || cancelEditor === void 0 ? void 0 : cancelEditor(e);
92
+ returnFocusToSheet();
93
+ }, [cancelEditor, returnFocusToSheet]);
51
94
  // Keydown event
52
95
  var handleKeyDown = (0, react_1.useCallback)(function (e) {
53
96
  // Pass it on to main editor, for cell navigation
54
97
  onEditorKeyDown === null || onEditorKeyDown === void 0 ? void 0 : onEditorKeyDown(e);
55
98
  onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
56
99
  }, [onEditorKeyDown, onKeyDown]);
57
- return (react_1.default.createElement(cell_input_1.CellInput, tslib_1.__assign({ ref: mergedEditorRef, value: value, onChange: handleChange, onFocus: handleFocus, onSubmit: handleSubmit, onCancel: cancelEditor, onKeyDown: handleKeyDown, disabled: isProtected, functionDescriptions: functionDescriptions, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getTableColumnNames: getTableColumnNames, SuggestionsDropdown: SuggestionsDropdown, formulaLocale: formulaLocale,
100
+ return (react_1.default.createElement(cell_input_1.CellInput, tslib_1.__assign({ ref: mergedEditorRef, value: value, onChange: handleChange, onFocus: handleFocus, onSubmit: handleSubmit, onCancel: handleCancel, onKeyDown: handleKeyDown, disabled: isProtected, functionDescriptions: functionDescriptions, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getTableColumnNames: getTableColumnNames, SuggestionsDropdown: SuggestionsDropdown, formulaLocale: formulaLocale,
58
101
  // Excel parity: the formula bar always renders plain-colored text —
59
102
  // run color marks stay in the doc (and the in-cell editor) but must
60
103
  // not paint here, where a light run color on the light bar background
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAS5D,OAAO,KAAK,EACV,IAAI,EACJ,MAAM,EAEN,QAAQ,EACR,KAAK,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,eAAe,EACf,KAAK,EACL,eAAe,EACf,UAAU,EACV,SAAS,EAET,eAAe,EACf,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,SAAS,SAEb,CAAC;AAGV,eAAO,MAAM,KAAK,SAAkB,CAAC;AAGrC,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,WAA+B,CAAC;AAGvE,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,WAA+B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,MAAM,GAAG,SAAS,EACxB,YAAY,OAAO,KAClB,MAAM,GAAG,SAKX,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,yBA2BnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,gBAYnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,OAAO,MAAM,EACb,iBAAgB,EAChB,oBAAkB,EAClB,gBAAc,KACb,KASD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,YAM/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,GAC1C,mBAAmB,aAAa,GAAG,SAAS,EAC5C,cAAc,MAAM,GAAG,SAAS,uBAYjC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,SAAS,OAAO,EAChB,MAAM,OAAO,EACb,MAAM,OAAO,EACb,UAAU,OAAO,KAChB,mBAAmB,CAAC,SAAS,CAgB/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,kBAE/D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,MAAM,EACnB,aAAa,UAAU,EAAE,GAAG,SAAS,GAAG,IAAI,YAa7C,CAAC;AAgBF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,aAAa,UAAU,GAAG,SAAS,GAAG,IAAI;qBAMrB,OAAO,GAAG,IAAI;eACpB,SAAS,GAAG,SAAS,GAAG,IAAI;mBACxB,OAAO,GAAG,IAAI;YACrB,UAAU,GAAG,SAAS,GAAG,IAAI;2FA+E1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,eAAe,aAAa,GAAG,SAAS,EACxC,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,oBAAe,WAUhB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,eAAe,GAAG,SAAS,EAC3C,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,oBAAe,uBAUhB,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,WAAqB,CAAC;AAC1E,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,WAC3B,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,GAAG,MAAM,EACT,YAAY,MAAM,EAClB,OAAO,MAAM,EACb,eAAe,aAAa,WAiB7B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,EAC3E,KAAK,CAAC,KACL,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAU5B,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,kBAAkB,aAAa,GAAG,SAAS,KAC1C,gBAAgB,IAAI,SAEtB,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd,WAAW,eAAe,WAI3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EAAE,GAAG,SAAS,EAC1B,MAAM,IAAI,kBAgBX,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,aAI1D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,KAAG,OAY5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,GAAG,SAAS,EAC1B,UAAU,MAAM,uBAUjB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,iBAAiB,eAAe,GAAG,UAAU,KAC5C,eAAe,IAAI,UAErB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,iBAAiB,eAAe,GAAG,UAAU,KAC5C,eASF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,GAAG,KAAK,GAAG,SAAS,EAAE,GAAG,KAAK,GAAG,SAAS,YAgBvE,CAAC;AAKF,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,GAAG,SAAS,YACV,CAAC;AAEvD,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,GAAG,SAAS,uBAAkB,CAAC;AAEtE,eAAO,MAAM,iBAAiB,GAAI,eAAe,aAAa,GAAG,SAAS,wBAO/C,CAAC;AAE5B,eAAO,MAAM,mBAAmB,GAAI,eAAe,aAAa,GAAG,SAAS,YAkCjD,CAAC;AAE5B,eAAO,MAAM,6BAA6B,GACxC,YAAY,MAAM,GAAG,SAAS,KAC7B,cAAc,EAqBhB,CAAC;AAGF,eAAO,MAAM,aAAa,SAAwC,CAAC;AAGnE,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EACjD,aAAa,CAAC,CAAC,IAAI,CAAC,KACnB,UAAU,IAAI,cAKhB,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAClD,KAAK,CAAC,CAAC,gBAAgB,CAAC,KACvB,EAAE,IAAI,eAKR,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,OAAO,SAAS,GAAG,SAAS,EAC5B,YAAY,aAAa,GAAG,SAAS,GAAG,IAAI,EAC5C,aAAa,aAAa,GAAG,SAAS,GAAG,IAAI,+BAM9C,CAAC;AAEF,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC"}
@@ -5,12 +5,13 @@ var tslib_1 = require("tslib");
5
5
  var grid_1 = require("@rowsncolumns/grid");
6
6
  var utils_1 = require("@rowsncolumns/utils");
7
7
  var config_1 = require("./config");
8
+ var platform_1 = require("./platform");
8
9
  // Check if browser is Firefox
9
10
  exports.isFirefox = grid_1.canUseDOM
10
11
  ? navigator.userAgent.indexOf("Firefox") !== -1
11
12
  : false;
12
13
  // Check if platform is macOS, where Ctrl+click is the context menu gesture
13
- exports.isMac = grid_1.canUseDOM ? /Mac/.test(navigator.platform) : false;
14
+ exports.isMac = (0, platform_1.isMacPlatform)();
14
15
  /* Converts point to pixel */
15
16
  var pointToPixel = function (pt) { return Math.round((13 / 10) * pt); };
16
17
  exports.pointToPixel = pointToPixel;
@@ -1 +1 @@
1
- {"version":3,"file":"use-context-setter.d.ts","sourceRoot":"","sources":["../../../hooks/use-context-setter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,eAAO,MAAM,gBAAgB,GAC3B,cAAc,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,EACnD,cAAc,iBAAiB,SAoMhC,CAAC"}
1
+ {"version":3,"file":"use-context-setter.d.ts","sourceRoot":"","sources":["../../../hooks/use-context-setter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,eAAO,MAAM,gBAAgB,GAC3B,cAAc,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,EACnD,cAAc,iBAAiB,SAuMhC,CAAC"}
@@ -6,7 +6,7 @@ var sheet_context_atom_1 = require("../atoms/sheet-context.atom");
6
6
  var use_isomorphic_layout_effect_1 = require("./use-isomorphic-layout-effect");
7
7
  var useContextSetter = function (forwardedRef, contextValue) {
8
8
  var setSpreadsheetContext = (0, sheet_context_atom_1.useSetSpreadsheetContext)();
9
- var submitEditor = contextValue.submitEditor, cancelEditor = contextValue.cancelEditor, commit = contextValue.commit, makeEditable = contextValue.makeEditable, editCell = contextValue.editCell, getNextFocusableCell = contextValue.getNextFocusableCell, onEditorKeyDown = contextValue.onEditorKeyDown, scrollToCell = contextValue.scrollToCell, scrollToChart = contextValue.scrollToChart, scrollToBottom = contextValue.scrollToBottom, focusSheet = contextValue.focusSheet, canEditCell = contextValue.canEditCell, isSheetProtected = contextValue.isSheetProtected, isWorkbookProtected = contextValue.isWorkbookProtected, getSheetProtection = contextValue.getSheetProtection, getSelectionsFromFormula = contextValue.getSelectionsFromFormula, getAddressFromSelection = contextValue.getAddressFromSelection, getR1C1AddressFromSelection = contextValue.getR1C1AddressFromSelection, tokenizer = contextValue.tokenizer, localeTokenizer = contextValue.localeTokenizer, formulaLocale = contextValue.formulaLocale, setEditorValue = contextValue.setEditorValue, getCellBounds = contextValue.getCellBounds, getTableNames = contextValue.getTableNames, getStructuredProperties = contextValue.getStructuredProperties, getNamedRanges = contextValue.getNamedRanges, getTableColumnNames = contextValue.getTableColumnNames, updateSelectionStartEndReference = contextValue.updateSelectionStartEndReference, getCellDimensions = contextValue.getCellDimensions, getRowHeight = contextValue.getRowHeight, getContentfulGridRangeAroundCell = contextValue.getContentfulGridRangeAroundCell, getCellCoordsFromOffset = contextValue.getCellCoordsFromOffset, getCellOffsetFromCoords = contextValue.getCellOffsetFromCoords, getEffectiveValuesFromRange = contextValue.getEffectiveValuesFromRange, getSheetDimensions = contextValue.getSheetDimensions, getFinalRowHeight = contextValue.getFinalRowHeight, getColumnWidth = contextValue.getColumnWidth, getSheetId = contextValue.getSheetId, getSheetName = contextValue.getSheetName, onInsertNote = contextValue.onInsertNote, onPinToolTip = contextValue.onPinToolTip, onUnpinTooltip = contextValue.onUnpinTooltip, showCellPopover = contextValue.showCellPopover, redrawGrid = contextValue.redrawGrid, flash = contextValue.flash, navigateToSheetRange = contextValue.navigateToSheetRange, mark = contextValue.mark, unmark = contextValue.unmark, exportRange = contextValue.exportRange, getViewPort = contextValue.getViewPort, setActiveCell = contextValue.setActiveCell, getGridRef = contextValue.getGridRef, getMentions = contextValue.getMentions, dispatchEvent = contextValue.dispatchEvent, splitTextToColumns = contextValue.splitTextToColumns, copy = contextValue.copy, cut = contextValue.cut, paste = contextValue.paste;
9
+ var submitEditor = contextValue.submitEditor, cancelEditor = contextValue.cancelEditor, commit = contextValue.commit, makeEditable = contextValue.makeEditable, editCell = contextValue.editCell, getNextFocusableCell = contextValue.getNextFocusableCell, onEditorKeyDown = contextValue.onEditorKeyDown, scrollToCell = contextValue.scrollToCell, scrollToChart = contextValue.scrollToChart, scrollToBottom = contextValue.scrollToBottom, focusSheet = contextValue.focusSheet, canEditCell = contextValue.canEditCell, isSheetProtected = contextValue.isSheetProtected, isWorkbookProtected = contextValue.isWorkbookProtected, getSheetProtection = contextValue.getSheetProtection, getSelectionsFromFormula = contextValue.getSelectionsFromFormula, getAddressFromSelection = contextValue.getAddressFromSelection, getR1C1AddressFromSelection = contextValue.getR1C1AddressFromSelection, tokenizer = contextValue.tokenizer, localeTokenizer = contextValue.localeTokenizer, formulaLocale = contextValue.formulaLocale, setEditorValue = contextValue.setEditorValue, getCellBounds = contextValue.getCellBounds, getTableNames = contextValue.getTableNames, getStructuredProperties = contextValue.getStructuredProperties, getNamedRanges = contextValue.getNamedRanges, getTableColumnNames = contextValue.getTableColumnNames, updateSelectionStartEndReference = contextValue.updateSelectionStartEndReference, getCellDimensions = contextValue.getCellDimensions, getRowHeight = contextValue.getRowHeight, getContentfulGridRangeAroundCell = contextValue.getContentfulGridRangeAroundCell, getCellCoordsFromOffset = contextValue.getCellCoordsFromOffset, getCellOffsetFromCoords = contextValue.getCellOffsetFromCoords, getEffectiveValuesFromRange = contextValue.getEffectiveValuesFromRange, getSheetDimensions = contextValue.getSheetDimensions, getFinalRowHeight = contextValue.getFinalRowHeight, getColumnWidth = contextValue.getColumnWidth, getSheetId = contextValue.getSheetId, getSheetName = contextValue.getSheetName, onInsertNote = contextValue.onInsertNote, onPinToolTip = contextValue.onPinToolTip, onUnpinTooltip = contextValue.onUnpinTooltip, showCellPopover = contextValue.showCellPopover, showFilterMenu = contextValue.showFilterMenu, redrawGrid = contextValue.redrawGrid, flash = contextValue.flash, navigateToSheetRange = contextValue.navigateToSheetRange, mark = contextValue.mark, unmark = contextValue.unmark, exportRange = contextValue.exportRange, getViewPort = contextValue.getViewPort, setActiveCell = contextValue.setActiveCell, getGridRef = contextValue.getGridRef, getMentions = contextValue.getMentions, dispatchEvent = contextValue.dispatchEvent, splitTextToColumns = contextValue.splitTextToColumns, copy = contextValue.copy, cut = contextValue.cut, paste = contextValue.paste;
10
10
  // Expose grid methods in context and ref
11
11
  var imperativeHandleRefs = (0, react_1.useMemo)(function () { return ({
12
12
  submitEditor: submitEditor,
@@ -52,6 +52,7 @@ var useContextSetter = function (forwardedRef, contextValue) {
52
52
  onPinToolTip: onPinToolTip,
53
53
  onUnpinTooltip: onUnpinTooltip,
54
54
  showCellPopover: showCellPopover,
55
+ showFilterMenu: showFilterMenu,
55
56
  redrawGrid: redrawGrid,
56
57
  flash: flash,
57
58
  navigateToSheetRange: navigateToSheetRange,
@@ -111,6 +112,7 @@ var useContextSetter = function (forwardedRef, contextValue) {
111
112
  onPinToolTip,
112
113
  onUnpinTooltip,
113
114
  showCellPopover,
115
+ showFilterMenu,
114
116
  redrawGrid,
115
117
  flash,
116
118
  navigateToSheetRange,
@@ -136,6 +136,13 @@ export type UseEditableOptions<T extends CellData> = {
136
136
  * Callback fired before editing. Can be used to prevent editing. Do not use it, Can be removed in next release.
137
137
  */
138
138
  canEdit?: (sheetId: number, cell: CellInterface) => boolean;
139
+ /**
140
+ * Whether a cell `canEdit` refuses may still be opened read-only — F2 / Enter /
141
+ * double-click then show its full content in the cell editor with input disabled
142
+ * (Google Sheets' view-only cell), and nothing is ever committed from it. A
143
+ * keystroke never opens it. Defaults to no cell.
144
+ */
145
+ canView?: (sheetId: number, cell: CellInterface) => boolean;
139
146
  /**
140
147
  * Number of frozen columns
141
148
  */
@@ -184,6 +191,22 @@ export type UseEditableOptions<T extends CellData> = {
184
191
  * Can user press enter key to edit
185
192
  */
186
193
  enableEditOnEnterKey?: boolean;
194
+ /**
195
+ * Which product's Delete / Backspace keys the grid follows
196
+ * (`CanvasGridProps["keymap"]`). Under `"excel"` Backspace clears the
197
+ * active cell alone and edits it, Shift+Backspace selects only the active
198
+ * cell and Shift+Delete cuts; Delete clears every selected cell in both.
199
+ */
200
+ keymap?: CanvasGridProps["keymap"];
201
+ /**
202
+ * Drop the cell selections, keeping the active cell (Excel's
203
+ * Shift+Backspace)
204
+ */
205
+ clearSelections?: () => void;
206
+ /**
207
+ * Cut the selection to the clipboard (Excel's Shift+Delete)
208
+ */
209
+ onRequestCut?: () => void;
187
210
  /**
188
211
  * Return `false` to keep a key press from the grid's key handling
189
212
  * (`CanvasGridProps["shouldHandleKeyDown"]`).
@@ -345,6 +368,11 @@ export type SharedEditorProps = {
345
368
  editorBorderOutlineColor?: string;
346
369
  isPointerDevice?: boolean;
347
370
  navigationMode?: boolean;
371
+ /**
372
+ * The editor shows the cell's content with input disabled (`canView`): the text can be
373
+ * selected and copied, nothing typed changes it and no commit comes out of it.
374
+ */
375
+ readOnly?: boolean;
348
376
  onCopy?(event: ClipboardEvent): void;
349
377
  onCut?(event: ClipboardEvent): void;
350
378
  onPaste?(event: ClipboardEvent): void;
@@ -371,7 +399,7 @@ export declare const areTextFormatRunsEqual: (a: TextFormatRun[] | undefined | n
371
399
  *
372
400
  * Moves to incorrect cell
373
401
  */
374
- export declare const useEditable: <T extends CellData>({ getEditor, getValue, getTextFormatRuns, onChange, onSubmit, onCancel, onBlur, onDelete, sheetId, selections, activeCell, canEdit, frozenRows, frozenColumns, hideOnBlur, isHiddenRow, isHiddenColumn, rowCount, columnCount, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, enableEditOnEnterKey, shouldHandleKeyDown, sticky, editorBorderColor, editorBorderOutlineColor, onBeforeEdit, onKeyDown, onEditorKeyDown, getCellOffsetFromCoords, getCellCoordsFromOffset, getCellBounds, focus, getActualCellCoords, scrollToCell, onChangeBatch, containerWidth, containerHeight, getScrollPosition, getColumnOffset, getEditorAlignment, getSheetRowCount, getSheetColumnCount, getBooleanValue, getDataValidation, setActiveCell, onCopy, onPaste, onCut, tables, onInsertTableRow, }: UseEditableOptions<T>) => {
402
+ export declare const useEditable: <T extends CellData>({ getEditor, getValue, getTextFormatRuns, onChange, onSubmit, onCancel, onBlur, onDelete, sheetId, selections, activeCell, canEdit, canView, frozenRows, frozenColumns, hideOnBlur, isHiddenRow, isHiddenColumn, rowCount, columnCount, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, enableEditOnEnterKey, keymap, clearSelections, onRequestCut, shouldHandleKeyDown, sticky, editorBorderColor, editorBorderOutlineColor, onBeforeEdit, onKeyDown, onEditorKeyDown, getCellOffsetFromCoords, getCellCoordsFromOffset, getCellBounds, focus, getActualCellCoords, scrollToCell, onChangeBatch, containerWidth, containerHeight, getScrollPosition, getColumnOffset, getEditorAlignment, getSheetRowCount, getSheetColumnCount, getBooleanValue, getDataValidation, setActiveCell, onCopy, onPaste, onCut, tables, onInsertTableRow, }: UseEditableOptions<T>) => {
375
403
  editorComponent: React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
376
404
  onDoubleClick: (e: React.MouseEvent<HTMLElement>) => void;
377
405
  getNextFocusableCell: (sheetId: number, currentCell: CellInterface, direction?: Direction, restrictWithinSelection?: boolean) => CellInterface | null;
@@ -1 +1 @@
1
- {"version":3,"file":"use-editable.d.ts","sourceRoot":"","sources":["../../../hooks/use-editable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-editable.d.ts","sourceRoot":"","sources":["../../../hooks/use-editable.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ var use_isomorphic_layout_effect_1 = require("./use-isomorphic-layout-effect");
17
17
  var getDefaultEditor = function () { return null; };
18
18
  exports.getDefaultEditor = getDefaultEditor;
19
19
  var defaultCanEdit = function () { return true; };
20
+ var defaultCanView = function () { return false; };
20
21
  var defaultIsHidden = function () { return false; };
21
22
  /**
22
23
  * Lightweight deep equality for `TextFormatRun[]`. Used by the
@@ -157,15 +158,15 @@ var MEDIA_KEYS = new Set([
157
158
  */
158
159
  var useEditable = function (_a) {
159
160
  var _b, _c;
160
- var _d = _a.getEditor, getEditor = _d === void 0 ? exports.getDefaultEditor : _d, getValue = _a.getValue, getTextFormatRuns = _a.getTextFormatRuns, onChange = _a.onChange, onSubmit = _a.onSubmit, onCancel = _a.onCancel, onBlur = _a.onBlur, onDelete = _a.onDelete, sheetId = _a.sheetId, _e = _a.selections, selections = _e === void 0 ? config_1.DEFAULT_ARRAY : _e, activeCell = _a.activeCell, _f = _a.canEdit, canEdit = _f === void 0 ? defaultCanEdit : _f, _g = _a.frozenRows, frozenRows = _g === void 0 ? 0 : _g, _h = _a.frozenColumns, frozenColumns = _h === void 0 ? 0 : _h, _j = _a.hideOnBlur, hideOnBlur = _j === void 0 ? true : _j, _k = _a.isHiddenRow, isHiddenRow = _k === void 0 ? defaultIsHidden : _k, _l = _a.isHiddenColumn, isHiddenColumn = _l === void 0 ? defaultIsHidden : _l, rowCount = _a.rowCount, columnCount = _a.columnCount, _m = _a.selectionTopBound, selectionTopBound = _m === void 0 ? 0 : _m, _o = _a.selectionBottomBound, selectionBottomBound = _o === void 0 ? rowCount : _o, _p = _a.selectionLeftBound, selectionLeftBound = _p === void 0 ? 0 : _p, _q = _a.selectionRightBound, selectionRightBound = _q === void 0 ? columnCount : _q, _r = _a.enableEditOnEnterKey, enableEditOnEnterKey = _r === void 0 ? true : _r, shouldHandleKeyDown = _a.shouldHandleKeyDown, sticky = _a.sticky, editorBorderColor = _a.editorBorderColor, editorBorderOutlineColor = _a.editorBorderOutlineColor, onBeforeEdit = _a.onBeforeEdit, onKeyDown = _a.onKeyDown, onEditorKeyDown = _a.onEditorKeyDown, getCellOffsetFromCoords = _a.getCellOffsetFromCoords, getCellCoordsFromOffset = _a.getCellCoordsFromOffset, getCellBounds = _a.getCellBounds, focus = _a.focus, getActualCellCoords = _a.getActualCellCoords, scrollToCell = _a.scrollToCell, onChangeBatch = _a.onChangeBatch, _s = _a.containerWidth, containerWidth = _s === void 0 ? 0 : _s, _t = _a.containerHeight, containerHeight = _t === void 0 ? 0 : _t, getScrollPosition = _a.getScrollPosition, getColumnOffset = _a.getColumnOffset, getEditorAlignment = _a.getEditorAlignment, getSheetRowCount = _a.getSheetRowCount, getSheetColumnCount = _a.getSheetColumnCount, getBooleanValue = _a.getBooleanValue, getDataValidation = _a.getDataValidation, setActiveCell = _a.setActiveCell, onCopy = _a.onCopy, onPaste = _a.onPaste, onCut = _a.onCut, tables = _a.tables, onInsertTableRow = _a.onInsertTableRow;
161
+ var _d = _a.getEditor, getEditor = _d === void 0 ? exports.getDefaultEditor : _d, getValue = _a.getValue, getTextFormatRuns = _a.getTextFormatRuns, onChange = _a.onChange, onSubmit = _a.onSubmit, onCancel = _a.onCancel, onBlur = _a.onBlur, onDelete = _a.onDelete, sheetId = _a.sheetId, _e = _a.selections, selections = _e === void 0 ? config_1.DEFAULT_ARRAY : _e, activeCell = _a.activeCell, _f = _a.canEdit, canEdit = _f === void 0 ? defaultCanEdit : _f, _g = _a.canView, canView = _g === void 0 ? defaultCanView : _g, _h = _a.frozenRows, frozenRows = _h === void 0 ? 0 : _h, _j = _a.frozenColumns, frozenColumns = _j === void 0 ? 0 : _j, _k = _a.hideOnBlur, hideOnBlur = _k === void 0 ? true : _k, _l = _a.isHiddenRow, isHiddenRow = _l === void 0 ? defaultIsHidden : _l, _m = _a.isHiddenColumn, isHiddenColumn = _m === void 0 ? defaultIsHidden : _m, rowCount = _a.rowCount, columnCount = _a.columnCount, _o = _a.selectionTopBound, selectionTopBound = _o === void 0 ? 0 : _o, _p = _a.selectionBottomBound, selectionBottomBound = _p === void 0 ? rowCount : _p, _q = _a.selectionLeftBound, selectionLeftBound = _q === void 0 ? 0 : _q, _r = _a.selectionRightBound, selectionRightBound = _r === void 0 ? columnCount : _r, _s = _a.enableEditOnEnterKey, enableEditOnEnterKey = _s === void 0 ? true : _s, _t = _a.keymap, keymap = _t === void 0 ? "sheets" : _t, clearSelections = _a.clearSelections, onRequestCut = _a.onRequestCut, shouldHandleKeyDown = _a.shouldHandleKeyDown, sticky = _a.sticky, editorBorderColor = _a.editorBorderColor, editorBorderOutlineColor = _a.editorBorderOutlineColor, onBeforeEdit = _a.onBeforeEdit, onKeyDown = _a.onKeyDown, onEditorKeyDown = _a.onEditorKeyDown, getCellOffsetFromCoords = _a.getCellOffsetFromCoords, getCellCoordsFromOffset = _a.getCellCoordsFromOffset, getCellBounds = _a.getCellBounds, focus = _a.focus, getActualCellCoords = _a.getActualCellCoords, scrollToCell = _a.scrollToCell, onChangeBatch = _a.onChangeBatch, _u = _a.containerWidth, containerWidth = _u === void 0 ? 0 : _u, _v = _a.containerHeight, containerHeight = _v === void 0 ? 0 : _v, getScrollPosition = _a.getScrollPosition, getColumnOffset = _a.getColumnOffset, getEditorAlignment = _a.getEditorAlignment, getSheetRowCount = _a.getSheetRowCount, getSheetColumnCount = _a.getSheetColumnCount, getBooleanValue = _a.getBooleanValue, getDataValidation = _a.getDataValidation, setActiveCell = _a.setActiveCell, onCopy = _a.onCopy, onPaste = _a.onPaste, onCut = _a.onCut, tables = _a.tables, onInsertTableRow = _a.onInsertTableRow;
161
162
  var editingCellCoordinate = (0, atoms_1.useEditingCellCoordinate)();
162
- var _u = tslib_1.__read((0, atoms_1.useEditorVisibility)(), 2), isEditorShown = _u[0], setShowEditor = _u[1];
163
- var _v = tslib_1.__read((0, atoms_1.useCellEditorValue)(), 2), value = _v[0], setValue = _v[1];
164
- var _w = tslib_1.__read((0, atoms_1.useCellEditorTextFormatRuns)(), 2), textFormatRuns = _w[0], setTextFormatRuns = _w[1];
163
+ var _w = tslib_1.__read((0, atoms_1.useEditorVisibility)(), 2), isEditorShown = _w[0], setShowEditor = _w[1];
164
+ var _x = tslib_1.__read((0, atoms_1.useCellEditorValue)(), 2), value = _x[0], setValue = _x[1];
165
+ var _y = tslib_1.__read((0, atoms_1.useCellEditorTextFormatRuns)(), 2), textFormatRuns = _y[0], setTextFormatRuns = _y[1];
165
166
  var currentActiveCellRef = (0, react_1.useRef)(null);
166
167
  var initialActiveCell = (0, react_1.useRef)(undefined);
167
- var _x = tslib_1.__read((0, react_1.useState)(true), 2), autoFocus = _x[0], setAutoFocus = _x[1];
168
- var _y = tslib_1.__read((0, react_1.useState)(false), 2), isScrolling = _y[0], setIsScrolling = _y[1];
168
+ var _z = tslib_1.__read((0, react_1.useState)(true), 2), autoFocus = _z[0], setAutoFocus = _z[1];
169
+ var _0 = tslib_1.__read((0, react_1.useState)(false), 2), isScrolling = _0[0], setIsScrolling = _0[1];
169
170
  var isDirtyRef = (0, react_1.useRef)(false);
170
171
  var isEnteringNewValue = (0, react_1.useRef)(false);
171
172
  var currentValueRef = (0, react_1.useRef)(value);
@@ -179,6 +180,9 @@ var useEditable = function (_a) {
179
180
  var isPointerDeviceRef = (0, react_1.useRef)(false);
180
181
  var maxEditorDimensionsRef = (0, react_1.useRef)(undefined);
181
182
  var isMounted = (0, react_1.useRef)(false);
183
+ // The open editor is a read-only view of the cell (`canView`): it never
184
+ // commits, and its keys only close it or move the active cell.
185
+ var isViewOnlyRef = (0, react_1.useRef)(false);
182
186
  var showEditor = (0, react_1.useCallback)(function () { return setShowEditor(true); }, [setShowEditor]);
183
187
  var setActiveEditor = (0, atoms_1.useSetActiveEditor)();
184
188
  var cellEditorInstance = (0, atoms_1.useCellEditorInstance)();
@@ -186,6 +190,7 @@ var useEditable = function (_a) {
186
190
  var hideEditor = (0, react_1.useCallback)(function () {
187
191
  setShowEditor(false);
188
192
  currentActiveCellRef.current = null;
193
+ isViewOnlyRef.current = false;
189
194
  // Clear value
190
195
  setValue("");
191
196
  setFormulaMode(false);
@@ -270,7 +275,7 @@ var useEditable = function (_a) {
270
275
  * @param initialValue
271
276
  */
272
277
  var makeEditable = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId, cell, initialValue, options) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
273
- var _a, _b, autoFocus, _c, isPointerDevice, _d, fromKeystroke, coords, cellValue, textFormatRuns_1, value_1, scrollPosition, cellPosition_1, _e, x, _f, y, _g, width, cellEditorBuffer, isRightAligned, frozenColumnOffset, maxWidth, isProgrammaticValue;
278
+ var _a, _b, autoFocus, _c, isPointerDevice, _d, fromKeystroke, coords, isEditable, isViewOnly, cellValue, textFormatRuns_1, value_1, scrollPosition, cellPosition_1, _e, x, _f, y, _g, width, cellEditorBuffer, isRightAligned, frozenColumnOffset, maxWidth, isProgrammaticValue;
274
279
  var _h, _j, _k;
275
280
  return tslib_1.__generator(this, function (_l) {
276
281
  _a = options !== null && options !== void 0 ? options : {}, _b = _a.autoFocus, autoFocus = _b === void 0 ? true : _b, _c = _a.isPointerDevice, isPointerDevice = _c === void 0 ? false : _c, _d = _a.fromKeystroke, fromKeystroke = _d === void 0 ? false : _d;
@@ -283,8 +288,11 @@ var useEditable = function (_a) {
283
288
  setActiveEditor(cellEditorInstance);
284
289
  // Reset scroll position
285
290
  setIsScrolling(false);
291
+ isEditable = canEdit(sheetId, coords);
292
+ isViewOnly = !isEditable && initialValue === void 0 && canView(sheetId, coords);
286
293
  /* Call on before edit */
287
- if (canEdit(sheetId, coords)) {
294
+ if (isEditable || isViewOnly) {
295
+ isViewOnlyRef.current = isViewOnly;
288
296
  /* Let user modify coords before edit */
289
297
  onBeforeEdit === null || onBeforeEdit === void 0 ? void 0 : onBeforeEdit(sheetId, coords);
290
298
  /* Focus */
@@ -323,7 +331,7 @@ var useEditable = function (_a) {
323
331
  * So that during mousedown, onSubmit gets called
324
332
  */
325
333
  isEnteringNewValue.current =
326
- initialValue !== void 0 || cellValue === void 0;
334
+ !isViewOnly && (initialValue !== void 0 || cellValue === void 0);
327
335
  isDirtyRef.current = !!initialValue;
328
336
  // Todo
329
337
  initialValueRef.current = cellValue;
@@ -342,7 +350,8 @@ var useEditable = function (_a) {
342
350
  */
343
351
  setValue(value_1);
344
352
  setTextFormatRuns(textFormatRuns_1);
345
- setFormulaMode((0, utils_1.isAFormula)(value_1));
353
+ // A formula on view is text: no reference picking, no function help.
354
+ setFormulaMode(!isViewOnly && (0, utils_1.isAFormula)(value_1));
346
355
  }
347
356
  }
348
357
  return [2 /*return*/];
@@ -350,6 +359,7 @@ var useEditable = function (_a) {
350
359
  }); }, [
351
360
  onBeforeEdit,
352
361
  canEdit,
362
+ canView,
353
363
  getValue,
354
364
  getTextFormatRuns,
355
365
  getCellPosition,
@@ -537,10 +547,30 @@ var useEditable = function (_a) {
537
547
  e.preventDefault();
538
548
  }
539
549
  else if (key === "Delete" || key === "Backspace") {
550
+ var isExcelKeymap = keymap === "excel";
551
+ // Excel: Shift+Backspace selects only the active cell of a
552
+ // selection, Shift+Delete cuts the selection
553
+ if (isExcelKeymap && nativeEvent.shiftKey) {
554
+ if (key === "Backspace") {
555
+ if (selections.length) {
556
+ clearSelections === null || clearSelections === void 0 ? void 0 : clearSelections();
557
+ }
558
+ e.preventDefault();
559
+ }
560
+ else if (onRequestCut) {
561
+ onRequestCut();
562
+ e.preventDefault();
563
+ }
564
+ return;
565
+ }
566
+ // Excel's Backspace clears the active cell alone and edits it;
567
+ // Delete (and Sheets' Backspace) clears every selected cell
568
+ var clearsActiveCellOnly = isExcelKeymap && key === "Backspace";
569
+ var targets = clearsActiveCellOnly ? config_1.DEFAULT_ARRAY : selections;
540
570
  // Excel refuses Delete / Backspace when any selected cell is a locked cell of a
541
571
  // protected sheet — the same `canEdit` gate typing goes through in `makeEditable`
542
572
  // (rowsncolumns/spreadsheet#939 U-35). Nothing is cleared; Excel's dialog is shown.
543
- if (!canEditSelection(sheetId, activeCell, selections)) {
573
+ if (!canEditSelection(sheetId, activeCell, targets)) {
544
574
  void showValidationAlert({
545
575
  style: "stop",
546
576
  title: utils_1.SHEET_PROTECTION_ERROR_TITLE,
@@ -550,10 +580,13 @@ var useEditable = function (_a) {
550
580
  e.preventDefault();
551
581
  return;
552
582
  }
553
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(sheetId, activeCell, selections);
583
+ onDelete === null || onDelete === void 0 ? void 0 : onDelete(sheetId, activeCell, targets);
554
584
  // Delete value
555
585
  setValue("");
556
586
  setFormulaMode(false);
587
+ if (clearsActiveCellOnly) {
588
+ makeEditable(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, "");
589
+ }
557
590
  }
558
591
  else {
559
592
  var initialValue = isEnter || isF2 // Enter key
@@ -587,6 +620,9 @@ var useEditable = function (_a) {
587
620
  onEditorKeyDown,
588
621
  onKeyDown,
589
622
  enableEditOnEnterKey,
623
+ keymap,
624
+ clearSelections,
625
+ onRequestCut,
590
626
  shouldHandleKeyDown,
591
627
  setFormulaMode,
592
628
  ]);
@@ -693,6 +729,19 @@ var useEditable = function (_a) {
693
729
  /* Save the value */
694
730
  var handleSubmit = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (newValue, textFormatRuns, sheetId, activeCell, nextActiveCell, shouldFocusGrid, options) {
695
731
  if (shouldFocusGrid === void 0) { shouldFocusGrid = true; }
732
+ /* A read-only view commits nothing: the commit key closes it and
733
+ * moves the active cell where the commit would have. */
734
+ if (isViewOnlyRef.current) {
735
+ hideEditor();
736
+ setTextFormatRuns(undefined);
737
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
738
+ if (nextActiveCell) {
739
+ setActiveCell === null || setActiveCell === void 0 ? void 0 : setActiveCell(sheetId, nextActiveCell);
740
+ }
741
+ if (shouldFocusGrid)
742
+ focusGrid();
743
+ return;
744
+ }
696
745
  /**
697
746
  * Hide the editor first, so that we can handle onBlur events
698
747
  * 1. Editor hides -> Submit
@@ -710,6 +759,8 @@ var useEditable = function (_a) {
710
759
  focusGrid();
711
760
  }, [
712
761
  onSubmit,
762
+ onCancel,
763
+ setActiveCell,
713
764
  setTextFormatRuns,
714
765
  setValue,
715
766
  hideEditor,
@@ -782,7 +833,8 @@ var useEditable = function (_a) {
782
833
  setInitialActiveCell,
783
834
  ]);
784
835
  var handleChange = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (newValue, textFormatRuns, sheetId, activeCell) {
785
- if (!currentActiveCellRef.current) {
836
+ // A read-only view owns no entry: nothing it reports is state or a change.
837
+ if (!currentActiveCellRef.current || isViewOnlyRef.current) {
786
838
  return;
787
839
  }
788
840
  // Update state
@@ -877,6 +929,7 @@ var useEditable = function (_a) {
877
929
  containerHeight: containerHeight,
878
930
  isPointerDevice: isPointerDeviceRef.current,
879
931
  navigationMode: !isEditInProgress,
932
+ readOnly: isEditInProgress && isViewOnlyRef.current,
880
933
  onCopy: handleCopy,
881
934
  onPaste: handlePaste,
882
935
  onCut: handleCut,
@@ -891,6 +944,10 @@ var useEditable = function (_a) {
891
944
  */
892
945
  var editCell = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId, cell, initialValue, options) {
893
946
  if (isEditInProgress && cellEditorInstance && initialValue != null) {
947
+ // A read-only view takes no text.
948
+ if (isViewOnlyRef.current) {
949
+ return;
950
+ }
894
951
  // Already editing — insert at the cursor instead of reopening.
895
952
  cellEditorInstance.update(initialValue);
896
953
  cellEditorInstance.focus(true);
@@ -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;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"}
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;AAgB7B,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,aAUV,MAAM,kBACG,aAAa,EAAE,GAAG,SAAS,GAAG,IAAI,kBAClC,MAAM,cACV,aAAa,SAqE9B,CAAC"}
@@ -11,6 +11,7 @@ var formula_selections_atom_1 = require("../atoms/formula-selections.atom");
11
11
  var config_1 = require("../config");
12
12
  var useEditorChange = function (_a) {
13
13
  var selections = _a.selections, getSelectionsFromFormula = _a.getSelectionsFromFormula, onChangeEditorValue = _a.onChangeEditorValue, onChangeSelections = _a.onChangeSelections, onChangeActiveCell = _a.onChangeActiveCell, formulaLocale = _a.formulaLocale;
14
+ var formulaMode = (0, formula_mode_atom_1.useFormulaModeValue)();
14
15
  var setFormulaMode = (0, formula_mode_atom_1.useSetFormulaMode)();
15
16
  var setFormulaSelections = (0, formula_selections_atom_1.useSetFormulaSelections)();
16
17
  var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
@@ -38,14 +39,18 @@ var useEditorChange = function (_a) {
38
39
  : editingCellCoordinate &&
39
40
  (0, grid_1.isEqualCells)(editingCellCoordinate, activeCell);
40
41
  /**
41
- * Rethink this approach
42
+ * The ranges picked while the entry was a formula are appended to the
43
+ * sheet's selection (they are its reference highlights), so a formula
44
+ * deleted mid-edit would leave them behind: leaving formula mode drops
45
+ * them. A constant entry never picked any, and the selection the edit
46
+ * started with stays — Ctrl+Enter fills it and the Name Box keeps
47
+ * reading it, as in Excel (#1176).
42
48
  */
43
49
  if (isFormula) {
44
50
  var selections_1 = getSelectionsFromFormula(value, activeCell);
45
51
  setFormulaSelections === null || setFormulaSelections === void 0 ? void 0 : setFormulaSelections(selections_1);
46
52
  }
47
- else if (selections.length) {
48
- // Clear selections
53
+ else if (formulaMode && selections.length) {
49
54
  onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(editingSheetId, config_1.DEFAULT_ARRAY, true);
50
55
  }
51
56
  if (shouldResetActiveCell && editingCellCoordinate) {
@@ -58,6 +63,7 @@ var useEditorChange = function (_a) {
58
63
  }, [
59
64
  selections,
60
65
  editingCellCoordinate,
66
+ formulaMode,
61
67
  formulaSelections,
62
68
  setFormulaMode,
63
69
  getSelectionsFromFormula,
@@ -2,10 +2,11 @@ import type React from "react";
2
2
  import type { CanvasGridProps } from "../components/canvas-grid/typings";
3
3
  type UseEditorKeydownProps = {
4
4
  sheetId: number;
5
+ keymap?: CanvasGridProps["keymap"];
5
6
  onSelectPreviousSheet: CanvasGridProps["onSelectPreviousSheet"];
6
7
  onSelectNextSheet: CanvasGridProps["onSelectNextSheet"];
7
8
  onKeyDownSelection?(e: React.KeyboardEvent<HTMLElement>): void;
8
9
  };
9
- export declare const useEditorKeydown: ({ sheetId, onSelectPreviousSheet, onSelectNextSheet, onKeyDownSelection, }: UseEditorKeydownProps) => (e: React.KeyboardEvent<HTMLDivElement>) => void;
10
+ export declare const useEditorKeydown: ({ sheetId, keymap, onSelectPreviousSheet, onSelectNextSheet, onKeyDownSelection, }: UseEditorKeydownProps) => (e: React.KeyboardEvent<HTMLDivElement>) => void;
10
11
  export {};
11
12
  //# sourceMappingURL=use-editor-keydown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-editor-keydown.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-keydown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAChE,iBAAiB,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACxD,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,4EAK9B,qBAAqB,SAKd,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,SAuC5C,CAAC"}
1
+ {"version":3,"file":"use-editor-keydown.d.ts","sourceRoot":"","sources":["../../../hooks/use-editor-keydown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,qBAAqB,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAChE,iBAAiB,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACxD,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,oFAM9B,qBAAqB,SAKd,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,SAyC5C,CAAC"}
@@ -7,16 +7,17 @@ var formula_mode_atom_1 = require("../atoms/formula-mode.atom");
7
7
  var formula_selection_state_atom_1 = require("../atoms/formula-selection-state.atom");
8
8
  var use_callback_ref_1 = require("./use-callback-ref");
9
9
  var useEditorKeydown = function (_a) {
10
- var sheetId = _a.sheetId, onSelectPreviousSheet = _a.onSelectPreviousSheet, onSelectNextSheet = _a.onSelectNextSheet, onKeyDownSelection = _a.onKeyDownSelection;
10
+ var sheetId = _a.sheetId, _b = _a.keymap, keymap = _b === void 0 ? "sheets" : _b, onSelectPreviousSheet = _a.onSelectPreviousSheet, onSelectNextSheet = _a.onSelectNextSheet, onKeyDownSelection = _a.onKeyDownSelection;
11
11
  var formulaMode = (0, formula_mode_atom_1.useFormulaModeValue)();
12
12
  var canSelectCells = (0, formula_selection_state_atom_1.useFormualSelectionState)().canSelectCells;
13
13
  return (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (e) {
14
14
  var isAltKey = e.altKey;
15
15
  var isArrowKey = (0, utils_1.isAnArrowKey)(e.key);
16
16
  /**
17
- * User can navigate between sheets
17
+ * User can navigate between sheets (Sheets; Excel's ⌥↑ / ⌥↓ are
18
+ * not sheet keys, so the Excel keymap leaves them alone)
18
19
  */
19
- if (isAltKey && isArrowKey) {
20
+ if (isAltKey && isArrowKey && keymap !== "excel") {
20
21
  switch (e.key) {
21
22
  case "ArrowUp":
22
23
  onSelectPreviousSheet === null || onSelectPreviousSheet === void 0 ? void 0 : onSelectPreviousSheet(sheetId, e);
@@ -37,6 +38,7 @@ var useEditorKeydown = function (_a) {
37
38
  }
38
39
  }, [
39
40
  sheetId,
41
+ keymap,
40
42
  onSelectPreviousSheet,
41
43
  onSelectNextSheet,
42
44
  formulaMode,
@@ -39,7 +39,7 @@ export type UseFilterProps = {
39
39
  tables?: TableView[] | null;
40
40
  };
41
41
  export declare const useFilter: ({ scale, sheetId, theme, getActualCellCoords, getScrollPosition, getCellOffsetFromCoords, getFormattedValue, getEffectiveFormat, conditionalFormatByCell, getFilterComponent, isFrozenRow, isFrozenColumn, isHiddenRowByFilter, onSortTable, onFilterTable, onInsertTableColumn, onDeleteTableColumn, getFilterValues, getFilterColors, basicFilter, tables, }: UseFilterProps) => {
42
- showFilter: (cell: CellInterface, filterOrTable: FilterView | TableView) => void;
42
+ showFilter: (cell: CellInterface, filterOrTable: FilterView | TableView) => boolean;
43
43
  hideFilter: () => void;
44
44
  filterComponent: ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["../../../hooks/use-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;IACtE,iBAAiB,IAAI,YAAY,GAAG,SAAS,CAAC;IAC9C,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;IACzE,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAG5D,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAIrD,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAIrD,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;CAC7B,CAAC;AAQF,eAAO,MAAM,SAAS,GAAI,gWAsBvB,cAAc;uBAyBN,aAAa,iBAAiB,UAAU,GAAG,SAAS;;;CAgN9D,CAAC"}
1
+ {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["../../../hooks/use-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;IACtE,iBAAiB,IAAI,YAAY,GAAG,SAAS,CAAC;IAC9C,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;IACzE,iBAAiB,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAG5D,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAIrD,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAIrD,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;CAC7B,CAAC;AAQF,eAAO,MAAM,SAAS,GAAI,gWAsBvB,cAAc;uBA0BN,aAAa,iBAAiB,UAAU,GAAG,SAAS,KAAG,OAAO;;;CAiNxE,CAAC"}
@@ -34,7 +34,8 @@ var useFilter = function (_a) {
34
34
  }
35
35
  return ((_a = tables === null || tables === void 0 ? void 0 : tables.find(function (table) { return table.id === activeFilter.id; })) !== null && _a !== void 0 ? _a : activeFilter);
36
36
  }, [activeFilter, basicFilter, tables]);
37
- // Show filter
37
+ // Show filter. Returns whether the popup opened — a cell the grid cannot
38
+ // position (not laid out yet) opens nothing.
38
39
  var showFilter = (0, react_1.useCallback)(function (cell, filterOrTable) {
39
40
  var _a;
40
41
  var coords = (_a = getActualCellCoords(cell)) !== null && _a !== void 0 ? _a : cell;
@@ -42,7 +43,7 @@ var useFilter = function (_a) {
42
43
  var cellPosition = getCellOffsetFromCoords(coords);
43
44
  // Stop if cell is not available
44
45
  if ((0, utils_1.isNil)(cellPosition) || (0, utils_1.isNil)(scrollPosition)) {
45
- return;
46
+ return false;
46
47
  }
47
48
  // Set filter cell
48
49
  setFilterCell(coords);
@@ -60,6 +61,7 @@ var useFilter = function (_a) {
60
61
  });
61
62
  // Show filter
62
63
  setIsOpen(true);
64
+ return true;
63
65
  }, [
64
66
  getActualCellCoords,
65
67
  getScrollPosition,