@rowsncolumns/spreadsheet 10.2.77 → 10.3.1

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