@rowsncolumns/spreadsheet 10.2.75 → 10.2.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/cjs/api/fill-series.d.ts +38 -0
  2. package/dist/cjs/api/fill-series.d.ts.map +1 -0
  3. package/dist/cjs/api/fill-series.js +89 -0
  4. package/dist/cjs/api/spreadsheet-api.d.ts +6 -2
  5. package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
  6. package/dist/cjs/api/spreadsheet-api.js +9 -3
  7. package/dist/cjs/atoms/fill-options.atom.d.ts +36 -0
  8. package/dist/cjs/atoms/fill-options.atom.d.ts.map +1 -0
  9. package/dist/cjs/atoms/fill-options.atom.js +11 -0
  10. package/dist/cjs/atoms/fill-series-dialog.atom.d.ts +26 -0
  11. package/dist/cjs/atoms/fill-series-dialog.atom.d.ts.map +1 -0
  12. package/dist/cjs/atoms/fill-series-dialog.atom.js +14 -0
  13. package/dist/cjs/atoms/index.d.ts +2 -0
  14. package/dist/cjs/atoms/index.d.ts.map +1 -1
  15. package/dist/cjs/atoms/index.js +2 -0
  16. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  17. package/dist/cjs/components/canvas-grid/index.js +224 -50
  18. package/dist/cjs/components/canvas-grid/typings.d.ts +13 -4
  19. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  20. package/dist/cjs/components/cell-editor/helpers.d.ts +9 -0
  21. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  22. package/dist/cjs/components/cell-editor/helpers.js +8 -1
  23. package/dist/cjs/components/cell-editor/helpers.spec.js +14 -0
  24. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  25. package/dist/cjs/components/cell-editor/index.js +6 -3
  26. package/dist/cjs/components/fill-series-dialog/index.d.ts +29 -0
  27. package/dist/cjs/components/fill-series-dialog/index.d.ts.map +1 -0
  28. package/dist/cjs/components/fill-series-dialog/index.js +156 -0
  29. package/dist/cjs/components/selection/fill-options-menu.d.ts +32 -0
  30. package/dist/cjs/components/selection/fill-options-menu.d.ts.map +1 -0
  31. package/dist/cjs/components/selection/fill-options-menu.js +65 -0
  32. package/dist/cjs/components/selection/index.d.ts +1 -1
  33. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  34. package/dist/cjs/components/selection/index.js +4 -2
  35. package/dist/cjs/components/selection/types.d.ts +11 -1
  36. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  37. package/dist/cjs/components/toolbar/text-format-selector.d.ts +9 -0
  38. package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -1
  39. package/dist/cjs/components/toolbar/text-format-selector.js +15 -3
  40. package/dist/cjs/hooks/use-editable.d.ts +11 -2
  41. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  42. package/dist/cjs/hooks/use-editable.js +8 -0
  43. package/dist/cjs/hooks/use-editor-submit.d.ts +32 -3
  44. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  45. package/dist/cjs/hooks/use-editor-submit.js +111 -2
  46. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  47. package/dist/cjs/hooks/use-keyboard-handler.js +3 -2
  48. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -2
  49. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  50. package/dist/cjs/hooks/use-selection-renderer.js +21 -4
  51. package/dist/cjs/hooks/use-selection.d.ts +54 -4
  52. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  53. package/dist/cjs/hooks/use-selection.js +232 -37
  54. package/dist/cjs/index.d.ts +4 -0
  55. package/dist/cjs/index.d.ts.map +1 -1
  56. package/dist/cjs/index.js +3 -0
  57. package/dist/cjs/release-date.js +1 -1
  58. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  59. package/dist/cjs/types.d.ts +39 -1
  60. package/dist/cjs/types.d.ts.map +1 -1
  61. package/dist/esm/api/fill-series.d.ts +38 -0
  62. package/dist/esm/api/fill-series.d.ts.map +1 -0
  63. package/dist/esm/api/fill-series.js +78 -0
  64. package/dist/esm/api/spreadsheet-api.d.ts +6 -2
  65. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  66. package/dist/esm/api/spreadsheet-api.js +8 -3
  67. package/dist/esm/atoms/fill-options.atom.d.ts +36 -0
  68. package/dist/esm/atoms/fill-options.atom.d.ts.map +1 -0
  69. package/dist/esm/atoms/fill-options.atom.js +5 -0
  70. package/dist/esm/atoms/fill-series-dialog.atom.d.ts +26 -0
  71. package/dist/esm/atoms/fill-series-dialog.atom.d.ts.map +1 -0
  72. package/dist/esm/atoms/fill-series-dialog.atom.js +9 -0
  73. package/dist/esm/atoms/index.d.ts +2 -0
  74. package/dist/esm/atoms/index.d.ts.map +1 -1
  75. package/dist/esm/atoms/index.js +2 -0
  76. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  77. package/dist/esm/components/canvas-grid/index.js +167 -6
  78. package/dist/esm/components/canvas-grid/typings.d.ts +13 -4
  79. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  80. package/dist/esm/components/cell-editor/helpers.d.ts +9 -0
  81. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  82. package/dist/esm/components/cell-editor/helpers.js +6 -0
  83. package/dist/esm/components/cell-editor/helpers.spec.js +15 -1
  84. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  85. package/dist/esm/components/cell-editor/index.js +7 -4
  86. package/dist/esm/components/fill-series-dialog/index.d.ts +29 -0
  87. package/dist/esm/components/fill-series-dialog/index.d.ts.map +1 -0
  88. package/dist/esm/components/fill-series-dialog/index.js +151 -0
  89. package/dist/esm/components/selection/fill-options-menu.d.ts +32 -0
  90. package/dist/esm/components/selection/fill-options-menu.d.ts.map +1 -0
  91. package/dist/esm/components/selection/fill-options-menu.js +63 -0
  92. package/dist/esm/components/selection/index.d.ts +1 -1
  93. package/dist/esm/components/selection/index.d.ts.map +1 -1
  94. package/dist/esm/components/selection/index.js +4 -2
  95. package/dist/esm/components/selection/types.d.ts +11 -1
  96. package/dist/esm/components/selection/types.d.ts.map +1 -1
  97. package/dist/esm/components/toolbar/text-format-selector.d.ts +9 -0
  98. package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -1
  99. package/dist/esm/components/toolbar/text-format-selector.js +14 -2
  100. package/dist/esm/hooks/use-editable.d.ts +11 -2
  101. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  102. package/dist/esm/hooks/use-editable.js +8 -0
  103. package/dist/esm/hooks/use-editor-submit.d.ts +32 -3
  104. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  105. package/dist/esm/hooks/use-editor-submit.js +82 -3
  106. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  107. package/dist/esm/hooks/use-keyboard-handler.js +3 -2
  108. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -2
  109. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  110. package/dist/esm/hooks/use-selection-renderer.js +22 -5
  111. package/dist/esm/hooks/use-selection.d.ts +54 -4
  112. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  113. package/dist/esm/hooks/use-selection.js +220 -36
  114. package/dist/esm/index.d.ts +4 -0
  115. package/dist/esm/index.d.ts.map +1 -1
  116. package/dist/esm/index.js +3 -0
  117. package/dist/esm/release-date.js +1 -1
  118. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  119. package/dist/esm/types.d.ts +39 -1
  120. package/dist/esm/types.d.ts.map +1 -1
  121. package/dist/spreadsheet.min.css +1 -1
  122. package/package.json +4 -4
@@ -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;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;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;;;;;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,kHAQ7B,oBAAoB,aAMV,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,kBAgGlC,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,12 +1,82 @@
1
- import { balanceFormula } from "@rowsncolumns/utils";
2
- import { useCallback } from "react";
1
+ import { balanceFormula, formulaToRelativeReference } from "@rowsncolumns/utils";
2
+ import { useCallback, useRef } from "react";
3
3
  import { useSetActiveEditor } from "../atoms";
4
4
  import { useEditingCell } from "../atoms/editing-cell.atom";
5
5
  import { useFormulaMode } from "../atoms/formula-mode.atom";
6
- export const useEditorSubmit = ({ sheetId, onChangeActiveSheet, setActiveCell, onChange, onComplete, getCommitValidation, showValidationAlert, }) => {
6
+ const isFormulaEntry = (value) => typeof value === "string" && value.startsWith("=");
7
+ /**
8
+ * The value Ctrl+Enter writes into `cell` for an entry typed at `activeCell`: constants verbatim,
9
+ * formulas with their relative references shifted by the cell offset — exactly what a copy-fill
10
+ * from the active cell would produce (`=A1` typed in B2 with B2:B4 selected → B3 gets `=A2`).
11
+ */
12
+ export const entryValueForCell = (value, activeCell, cell) => isFormulaEntry(value)
13
+ ? (formulaToRelativeReference(value, activeCell, cell) ?? value)
14
+ : value;
15
+ /**
16
+ * Rectangles of `range` minus `cell` (up to four: above, below, left, right of the cell's row),
17
+ * or `range` itself when the cell is outside it. Lets the batch write skip the active cell, which
18
+ * the ordinary commit already wrote with its rich-text runs and validation.
19
+ */
20
+ const rectanglesExcluding = (range, cell) => {
21
+ const inside = cell.rowIndex >= range.startRowIndex &&
22
+ cell.rowIndex <= range.endRowIndex &&
23
+ cell.columnIndex >= range.startColumnIndex &&
24
+ cell.columnIndex <= range.endColumnIndex;
25
+ if (!inside)
26
+ return [range];
27
+ const rects = [];
28
+ if (cell.rowIndex > range.startRowIndex) {
29
+ rects.push({ ...range, endRowIndex: cell.rowIndex - 1 });
30
+ }
31
+ if (cell.rowIndex < range.endRowIndex) {
32
+ rects.push({ ...range, startRowIndex: cell.rowIndex + 1 });
33
+ }
34
+ if (cell.columnIndex > range.startColumnIndex) {
35
+ rects.push({
36
+ ...range,
37
+ startRowIndex: cell.rowIndex,
38
+ endRowIndex: cell.rowIndex,
39
+ endColumnIndex: cell.columnIndex - 1,
40
+ });
41
+ }
42
+ if (cell.columnIndex < range.endColumnIndex) {
43
+ rects.push({
44
+ ...range,
45
+ startRowIndex: cell.rowIndex,
46
+ endRowIndex: cell.rowIndex,
47
+ startColumnIndex: cell.columnIndex + 1,
48
+ });
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
+ export const planEntryFill = (value, activeCell, selections) => {
58
+ const writes = [];
59
+ for (const selection of selections) {
60
+ for (const range of rectanglesExcluding(selection.range, activeCell)) {
61
+ const values = [];
62
+ for (let r = range.startRowIndex; r <= range.endRowIndex; r++) {
63
+ const row = [];
64
+ for (let c = range.startColumnIndex; c <= range.endColumnIndex; c++) {
65
+ row.push(entryValueForCell(value, activeCell, { rowIndex: r, columnIndex: c }));
66
+ }
67
+ values.push(row);
68
+ }
69
+ writes.push({ range, values });
70
+ }
71
+ }
72
+ return writes;
73
+ };
74
+ export const useEditorSubmit = ({ sheetId, onChangeActiveSheet, setActiveCell, onChange, onComplete, getCommitValidation, showValidationAlert, selections, onChangeBatch, }) => {
7
75
  const [formulaMode, setFormulaMode] = useFormulaMode();
8
76
  const [_, setEditingCellCoordinate] = useEditingCell();
9
77
  const setActiveEditor = useSetActiveEditor();
78
+ const selectionsRef = useRef(selections);
79
+ selectionsRef.current = selections;
10
80
  return useCallback(async (value, textFormatRuns, previousValue, editingSheetId, activeCell, nextActiveCell, isDirty, options) => {
11
81
  /* Balance parentheses */
12
82
  if (formulaMode && typeof value !== "boolean") {
@@ -22,6 +92,14 @@ export const useEditorSubmit = ({ sheetId, onChangeActiveSheet, setActiveCell, o
22
92
  /* Commit the value and advance to the next cell */
23
93
  const commit = () => {
24
94
  onChange?.(editingSheetId, activeCell, value, textFormatRuns, previousValue, isDirty);
95
+ // Ctrl+Enter: the same entry into every other selected cell (formulas shift per cell).
96
+ // Explicit per-cell values — never a read-back of the cell just written — so the spread
97
+ // is correct even when the engine applies `onChange` asynchronously (legacy setState).
98
+ if (options?.fillSelection && onChangeBatch) {
99
+ for (const write of planEntryFill(value, activeCell, selectionsRef.current ?? [])) {
100
+ onChangeBatch(editingSheetId, write.range, write.values);
101
+ }
102
+ }
25
103
  // Switch to active sheet
26
104
  // Always change sheet first.
27
105
  // Skipped when the submit was triggered *by* a sheet change — the
@@ -79,5 +157,6 @@ export const useEditorSubmit = ({ sheetId, onChangeActiveSheet, setActiveCell, o
79
157
  sheetId,
80
158
  getCommitValidation,
81
159
  showValidationAlert,
160
+ onChangeBatch,
82
161
  ]);
83
162
  };
@@ -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"}
@@ -270,9 +270,10 @@ onCalculateNow, onRequestGoTo, onRequestPasteSpecial, onChangeBatch, getUserEnte
270
270
  onClearFormatting?.(sheetId, activeCell, selections);
271
271
  e.preventDefault();
272
272
  break;
273
- // Cmd/Ctrl + Enter
273
+ // Cmd/Ctrl + Enter outside edit mode does nothing (Excel): the "fill the entry into
274
+ // every selected cell" behaviour only exists WHILE editing and is handled by the cell
275
+ // editor's submit path (see `EditorSubmitOptions.fillSelection`).
274
276
  case "Enter":
275
- onFillRange?.(sheetId, activeCell, selections);
276
277
  break;
277
278
  // Cmd/Ctrl + D
278
279
  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":"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"}
1
+ {"version":3,"file":"use-selection-renderer.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection-renderer.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import { isCellWithinBounds, isEqualCells, } from "@rowsncolumns/grid";
1
+ import { isAreasEqual, isCellWithinBounds, isEqualCells, } from "@rowsncolumns/grid";
2
2
  import React, { useCallback, useRef } from "react";
3
3
  import { getSelectionFill, getSelectionFillOpacity, getSelectionStroke, getSelectionStrokeStyle, getSelectionStrokeWidth, } from "../api/selections";
4
4
  import { useFormulaSelectionIndex } from "../atoms";
5
5
  import { useFormulaModeValue } from "../atoms/formula-mode.atom";
6
6
  import { DEFAULT_ACTIVE_CELL } from "../config";
7
7
  import { Selection } from "./../components/selection";
8
- export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgroundColor, selectionBorderColor, onSelectionMouseDown, onChangeActiveCell, onChangeSelections, onRequestEditTable, onRequestEditPivotTable, onMouseDownResizeHandle, onMouseDownMoveSelection, isDraggingMoveSelection, onFlashEnd, getSheetName, resizeHandleSize = 6, showSelectionResizeHandles, resizeHandleBorderColor, SelectionTitleComponent, isResizingTable, fillHandleSize, showFillHandle, enableMagicFill, MagicFillComponent, MagicFillContent, readonly, showPasteMenu, hoveredCell, onSplitTextToColumns, onRemoveQuickEdit, onAddQuickEdit, QuickEdit, PasteMenu, SuggestionAction, cachedHoveredSelectionIds, }) => {
8
+ /** Excel greys the cells a fill-handle drag-back is about to clear. */
9
+ const FILL_SHRINK_COLOR = "#808080";
10
+ const FILL_SHRINK_OPACITY = 0.25;
11
+ export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgroundColor, selectionBorderColor, onSelectionMouseDown, onChangeActiveCell, onChangeSelections, onRequestEditTable, onRequestEditPivotTable, onMouseDownResizeHandle, onMouseDownMoveSelection, isDraggingMoveSelection, onFlashEnd, getSheetName, resizeHandleSize = 6, showSelectionResizeHandles, resizeHandleBorderColor, SelectionTitleComponent, isResizingTable, fillHandleSize, showFillHandle, enableMagicFill, MagicFillComponent, MagicFillContent, readonly, showPasteMenu, fillOptions, onChooseFillType, onOpenFillSeriesDialog, onCloseFillOptions, hoveredCell, onSplitTextToColumns, onRemoveQuickEdit, onAddQuickEdit, QuickEdit, PasteMenu, SuggestionAction, cachedHoveredSelectionIds, isFillShrink = false, }) => {
9
12
  const formulaMode = useFormulaModeValue();
10
13
  const selectionIndex = useFormulaSelectionIndex();
11
14
  const hoveredCellRef = useRef(hoveredCell);
@@ -47,13 +50,17 @@ export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgro
47
50
  : getSelectionStrokeWidth(formulaMode, isFill, isActiveCell, isResizingTable);
48
51
  const fillOpacity = isBorder
49
52
  ? props.fillOpacity
50
- : getSelectionFillOpacity(formulaMode, isFill);
53
+ : isFill && isFillShrink
54
+ ? FILL_SHRINK_OPACITY
55
+ : getSelectionFillOpacity(formulaMode, isFill);
51
56
  const stroke = isBorder
52
57
  ? props.stroke
53
58
  : getSelectionStroke(formulaMode, isFill, isActiveCell, isEmptySelections, inProgress, selectionBorderColor, index);
54
59
  const fill = isBorder
55
60
  ? props.fill
56
- : getSelectionFill(formulaMode, isFill, isActiveCell, selectionBackgroundColor, index, isActiveIndex, isResizingTable);
61
+ : isFill && isFillShrink
62
+ ? FILL_SHRINK_COLOR
63
+ : getSelectionFill(formulaMode, isFill, isActiveCell, selectionBackgroundColor, index, isActiveIndex, isResizingTable);
57
64
  return (React.createElement(Selection, { ...props, key: index,
58
65
  // Overwrite draggable
59
66
  draggable: isResizingTable ? false : draggable,
@@ -86,7 +93,12 @@ export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgro
86
93
  onSelectionMouseDown?.(e, activeCell, newSelection, 0);
87
94
  }
88
95
  }
89
- }, isHovered: isHovered, TitleComponent: SelectionTitleComponent, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, fillHandleSize: fillHandleSize, showFillHandle: showFillHandle, onFlashEnd: onFlashEnd, duration: duration, enableMagicFill: formulaMode ? false : enableMagicFill, MagicFillComponent: MagicFillComponent, readonly: readonly, showPasteMenu: showPasteMenu, sheetId: sheetId, MagicFillContent: MagicFillContent, QuickEdit: QuickEdit, PasteMenu: PasteMenu, SuggestionAction: SuggestionAction, onSplitTextToColumns: (delimiter) => {
96
+ }, isHovered: isHovered, TitleComponent: SelectionTitleComponent, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, fillHandleSize: fillHandleSize, showFillHandle: showFillHandle, onFlashEnd: onFlashEnd, duration: duration, enableMagicFill: formulaMode ? false : enableMagicFill, MagicFillComponent: MagicFillComponent, readonly: readonly, showPasteMenu: showPasteMenu, fillOptions: fillOptions &&
97
+ range &&
98
+ fillOptions.sheetId === sheetId &&
99
+ isAreasEqual(fillOptions.fillSelection.range, range)
100
+ ? fillOptions
101
+ : undefined, onChooseFillType: onChooseFillType, onOpenFillSeriesDialog: onOpenFillSeriesDialog, onCloseFillOptions: onCloseFillOptions, sheetId: sheetId, MagicFillContent: MagicFillContent, QuickEdit: QuickEdit, PasteMenu: PasteMenu, SuggestionAction: SuggestionAction, onSplitTextToColumns: (delimiter) => {
90
102
  // Active cell
91
103
  const newActiveCell = range
92
104
  ? {
@@ -127,6 +139,10 @@ export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgro
127
139
  MagicFillComponent,
128
140
  readonly,
129
141
  showPasteMenu,
142
+ fillOptions,
143
+ onChooseFillType,
144
+ onOpenFillSeriesDialog,
145
+ onCloseFillOptions,
130
146
  onSplitTextToColumns,
131
147
  MagicFillContent,
132
148
  QuickEdit,
@@ -135,5 +151,6 @@ export const useSelectionRenderer = ({ sheetId, selectionCount, selectionBackgro
135
151
  onRemoveQuickEdit,
136
152
  onAddQuickEdit,
137
153
  cachedHoveredSelectionIds,
154
+ isFillShrink,
138
155
  ]);
139
156
  };
@@ -2,7 +2,40 @@ import type { AreaStyle, CellInterface, GridRange, HiddenType, OptionalCellInter
2
2
  import { Align } from "@rowsncolumns/grid";
3
3
  import type React from "react";
4
4
  import type { CanvasGridProps } from "../components/canvas-grid/typings";
5
- import type { SheetRange } from "../types";
5
+ import type { AutoFillType, FillOptions, SheetRange } from "../types";
6
+ /**
7
+ * What the grid learns when a fill-handle gesture ends. For a left drag the
8
+ * fill has already been issued (`onFill`) and this lets the grid show Excel's
9
+ * Auto Fill Options smart tag; for a right-button drag NOTHING has been filled
10
+ * yet — the grid opens the fill menu and issues `onFill` with the chosen type.
11
+ */
12
+ export type FillHandleRelease<T extends AreaStyle = AreaStyle> = {
13
+ sheetId: number;
14
+ activeCell: CellInterface;
15
+ /** Target range of the drag (source + filled area). */
16
+ fillSelection: SelectionArea;
17
+ /** Source selection the drag started from. */
18
+ selections: SelectionArea<T>[];
19
+ /** Ctrl (or Cmd on macOS) held when the handle was released. */
20
+ toggle: boolean;
21
+ button: "left" | "right";
22
+ };
23
+ /**
24
+ * Modifier state of a fill-handle gesture (drag, double-click, drag-back). `"toggle"` = Ctrl
25
+ * (Cmd on Mac) was held: Excel flips copy↔series for a fill and clears formats too for a
26
+ * drag-back shrink.
27
+ */
28
+ export type FillGestureOptions = {
29
+ modifier?: "toggle";
30
+ };
31
+ /**
32
+ * A fill-handle drag back INSIDE the selection: `clearRange` = the excluded cells Excel empties on
33
+ * release (rendered greyed while dragging), `remaining` = the selection that survives.
34
+ */
35
+ export type FillShrink = {
36
+ clearRange: GridRange;
37
+ remaining: GridRange;
38
+ };
6
39
  export type UseSelectionOptions<T extends AreaStyle = AreaStyle> = {
7
40
  sheetId: number;
8
41
  /**
@@ -34,9 +67,25 @@ export type UseSelectionOptions<T extends AreaStyle = AreaStyle> = {
34
67
  */
35
68
  allowDeselectSelection?: boolean;
36
69
  /**
37
- * onFill
70
+ * onFill. `fillType` is only set when the user picked an entry from the
71
+ * fill menu; `options.modifier` is `"toggle"` when Ctrl/Cmd was held at
72
+ * release (Excel decides the copy↔series inversion on release, not press) —
73
+ * for a Ctrl+drag and a Ctrl+double-click of the fill handle alike.
74
+ */
75
+ onFill?: (sheetId: number, activeCell: CellInterface, fillSelection: SelectionArea, selections: SelectionArea<T>[], fillableSelections?: SelectionArea<T>[], fillType?: AutoFillType, options?: FillOptions) => void;
76
+ /**
77
+ * Dragging the fill handle BACK inside a multi-cell selection (up or left, without passing its
78
+ * first row/column) excludes the dragged-over cells: Excel clears their contents (formats kept;
79
+ * Ctrl+drag also clears formats) and shrinks the selection to `remaining`. Called on mouse-up with
80
+ * the cells to clear; the hook then publishes `remaining` through `onChangeSelections`.
81
+ */
82
+ onFillShrink?: (sheetId: number, activeCell: CellInterface, clearRange: GridRange, options?: FillGestureOptions) => void;
83
+ /**
84
+ * Fired when a fill-handle drag ends (after `onFill` for a left drag; INSTEAD
85
+ * of `onFill` for a right-button drag). Lets the grid show the Auto Fill
86
+ * Options smart tag / right-drag fill menu.
38
87
  */
39
- onFill?: (sheetId: number, activeCell: CellInterface, fillSelection: SelectionArea, selections: SelectionArea<T>[]) => void;
88
+ onFillHandleRelease?: (release: FillHandleRelease<T>) => void;
40
89
  /**
41
90
  * Hidden rows
42
91
  */
@@ -150,7 +199,7 @@ export type NewSelectionMode = "clear" | "modify" | "append";
150
199
  * Hook to enable selection in datagrid
151
200
  * @param initialSelection
152
201
  */
153
- export declare const useSelection: <T extends AreaStyle>({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount, rowCount, selectionPolicy, newSelectionMode, allowDeselectSelection, onFill, isHiddenRow, isHiddenColumn, alwaysScrollToActiveCell, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, mouseDownInterceptor, mouseMoveInterceptor, mergedCells, canSelectionSpanMergedCells, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation, }: UseSelectionOptions<T>) => {
202
+ export declare const useSelection: <T extends AreaStyle>({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount, rowCount, selectionPolicy, newSelectionMode, allowDeselectSelection, onFill, onFillHandleRelease, onFillShrink, isHiddenRow, isHiddenColumn, alwaysScrollToActiveCell, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, mouseDownInterceptor, mouseMoveInterceptor, mergedCells, canSelectionSpanMergedCells, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation, }: UseSelectionOptions<T>) => {
154
203
  isDragging: boolean;
155
204
  draggedSelection: SelectionArea<T> | undefined;
156
205
  initialDraggedSelection: SelectionArea<T> | undefined;
@@ -164,6 +213,7 @@ export declare const useSelection: <T extends AreaStyle>({ sheetId, activeCell,
164
213
  onFillHandleMouseDown: (e: React.MouseEvent<HTMLDivElement>) => void;
165
214
  onFillHandleDoubleClick: (e: React.MouseEvent<HTMLDivElement>) => void;
166
215
  fillSelection: SelectionArea | undefined;
216
+ fillShrink: FillShrink | undefined;
167
217
  clearLastSelection: () => void;
168
218
  modifySelection: (coords: CellInterface, setInProgress?: boolean) => void;
169
219
  selectAll: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"use-selection.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-selection.d.ts","sourceRoot":"","sources":["../../../hooks/use-selection.ts"],"names":[],"mappings":"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"}