@rowsncolumns/spreadsheet 10.6.5 → 10.7.0

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 (284) hide show
  1. package/dist/cjs/api/autocomplete.d.ts +42 -0
  2. package/dist/cjs/api/autocomplete.d.ts.map +1 -0
  3. package/dist/cjs/api/autocomplete.js +114 -0
  4. package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
  5. package/dist/cjs/api/banded-ranges.js +51 -1
  6. package/dist/cjs/api/error-checking.d.ts +82 -0
  7. package/dist/cjs/api/error-checking.d.ts.map +1 -0
  8. package/dist/cjs/api/error-checking.js +207 -0
  9. package/dist/cjs/api/move-overwrite.d.ts +8 -2
  10. package/dist/cjs/api/move-overwrite.d.ts.map +1 -1
  11. package/dist/cjs/api/move-overwrite.js +19 -3
  12. package/dist/cjs/api/selections.d.ts +2 -2
  13. package/dist/cjs/api/validation.d.ts +39 -1
  14. package/dist/cjs/api/validation.d.ts.map +1 -1
  15. package/dist/cjs/api/validation.js +87 -1
  16. package/dist/cjs/atoms/cell-input-context.atom.d.ts +4 -1
  17. package/dist/cjs/atoms/cell-input-context.atom.d.ts.map +1 -1
  18. package/dist/cjs/atoms/enter-key-direction.atom.d.ts +11 -0
  19. package/dist/cjs/atoms/enter-key-direction.atom.d.ts.map +1 -0
  20. package/dist/cjs/atoms/enter-key-direction.atom.js +13 -0
  21. package/dist/cjs/atoms/index.d.ts +1 -0
  22. package/dist/cjs/atoms/index.d.ts.map +1 -1
  23. package/dist/cjs/atoms/index.js +1 -0
  24. package/dist/cjs/atoms/paste-menu.atom.d.ts +22 -0
  25. package/dist/cjs/atoms/paste-menu.atom.d.ts.map +1 -1
  26. package/dist/cjs/atoms/paste-menu.atom.js +13 -1
  27. package/dist/cjs/atoms/pick-list.atom.d.ts +15 -0
  28. package/dist/cjs/atoms/pick-list.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/pick-list.atom.js +7 -0
  30. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  31. package/dist/cjs/components/canvas-grid/index.js +305 -70
  32. package/dist/cjs/components/canvas-grid/typings.d.ts +96 -11
  33. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  34. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  35. package/dist/cjs/components/cell/index.js +7 -8
  36. package/dist/cjs/components/cell/typings.d.ts +9 -0
  37. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  38. package/dist/cjs/components/cell-editor/helpers.d.ts +22 -2
  39. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  40. package/dist/cjs/components/cell-editor/helpers.js +32 -8
  41. package/dist/cjs/components/cell-editor/index.d.ts +7 -1
  42. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  43. package/dist/cjs/components/cell-editor/index.js +85 -13
  44. package/dist/cjs/components/cell-indicator/index.d.ts +41 -0
  45. package/dist/cjs/components/cell-indicator/index.d.ts.map +1 -0
  46. package/dist/cjs/components/cell-indicator/index.js +90 -0
  47. package/dist/cjs/components/cell-input/cell-input.d.ts +10 -2
  48. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
  49. package/dist/cjs/components/cell-input/cell-input.js +5 -3
  50. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  51. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +9 -2
  52. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +27 -1
  53. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  54. package/dist/cjs/components/cell-structured/sparkline-math.js +48 -1
  55. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  56. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  57. package/dist/cjs/components/cell-structured/sparkline.js +36 -92
  58. package/dist/cjs/components/cell-structured/types.d.ts +6 -0
  59. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  60. package/dist/cjs/components/data-table-dialog/index.d.ts +22 -0
  61. package/dist/cjs/components/data-table-dialog/index.d.ts.map +1 -0
  62. package/dist/cjs/components/data-table-dialog/index.js +93 -0
  63. package/dist/cjs/components/error-check-smart-tag/index.d.ts +27 -0
  64. package/dist/cjs/components/error-check-smart-tag/index.d.ts.map +1 -0
  65. package/dist/cjs/components/error-check-smart-tag/index.js +39 -0
  66. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts +26 -0
  67. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  68. package/dist/cjs/components/forecast-sheet-dialog/index.js +92 -0
  69. package/dist/cjs/components/paste-special-dialog/index.d.ts +3 -3
  70. package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -1
  71. package/dist/cjs/components/paste-special-dialog/index.js +61 -23
  72. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  73. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  74. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +196 -0
  75. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts +3 -0
  76. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  77. package/dist/cjs/components/protect-sheet-dialog/constants.js +5 -0
  78. package/dist/cjs/components/protect-sheet-dialog/index.d.ts +2 -2
  79. package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -1
  80. package/dist/cjs/components/protect-sheet-dialog/index.js +5 -3
  81. package/dist/cjs/components/scenario-manager-dialog/index.d.ts +51 -0
  82. package/dist/cjs/components/scenario-manager-dialog/index.d.ts.map +1 -0
  83. package/dist/cjs/components/scenario-manager-dialog/index.js +257 -0
  84. package/dist/cjs/components/selection/index.d.ts +1 -1
  85. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  86. package/dist/cjs/components/selection/index.js +9 -4
  87. package/dist/cjs/components/selection/paste-menu.d.ts +14 -1
  88. package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -1
  89. package/dist/cjs/components/selection/paste-menu.js +78 -6
  90. package/dist/cjs/components/selection/paste-options.d.ts +28 -0
  91. package/dist/cjs/components/selection/paste-options.d.ts.map +1 -0
  92. package/dist/cjs/components/selection/paste-options.js +70 -0
  93. package/dist/cjs/components/selection/types.d.ts +12 -1
  94. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  95. package/dist/cjs/components/selection-drop-menu/index.d.ts +18 -0
  96. package/dist/cjs/components/selection-drop-menu/index.d.ts.map +1 -0
  97. package/dist/cjs/components/selection-drop-menu/index.js +62 -0
  98. package/dist/cjs/components/solver-dialog/index.d.ts +57 -0
  99. package/dist/cjs/components/solver-dialog/index.d.ts.map +1 -0
  100. package/dist/cjs/components/solver-dialog/index.js +204 -0
  101. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +3 -2
  102. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -1
  103. package/dist/cjs/components/toolbar/sparkline-actions.js +6 -2
  104. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  105. package/dist/cjs/components/toolbar/table-style-selector.js +33 -2
  106. package/dist/cjs/config.d.ts +5 -4
  107. package/dist/cjs/config.d.ts.map +1 -1
  108. package/dist/cjs/config.js +13 -9
  109. package/dist/cjs/hooks/use-cell-renderer.d.ts +12 -1
  110. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  111. package/dist/cjs/hooks/use-cell-renderer.js +6 -3
  112. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +36 -2
  113. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  114. package/dist/cjs/hooks/use-copy-paste-cut.js +131 -5
  115. package/dist/cjs/hooks/use-editable.d.ts +6 -0
  116. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-editor-submit.d.ts +45 -3
  118. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  119. package/dist/cjs/hooks/use-editor-submit.js +91 -7
  120. package/dist/cjs/hooks/use-keyboard-handler.d.ts +5 -1
  121. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  122. package/dist/cjs/hooks/use-keyboard-handler.js +10 -1
  123. package/dist/cjs/hooks/use-selection-drag-copy.d.ts +55 -0
  124. package/dist/cjs/hooks/use-selection-drag-copy.d.ts.map +1 -0
  125. package/dist/cjs/hooks/use-selection-drag-copy.js +274 -0
  126. package/dist/cjs/hooks/use-selection-renderer.d.ts +8 -1
  127. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  128. package/dist/cjs/hooks/use-selection-renderer.js +7 -2
  129. package/dist/cjs/hooks/use-selection.d.ts +59 -1
  130. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  131. package/dist/cjs/hooks/use-selection.js +270 -61
  132. package/dist/cjs/index.d.ts +6 -1
  133. package/dist/cjs/index.d.ts.map +1 -1
  134. package/dist/cjs/index.js +5 -0
  135. package/dist/cjs/release-date.js +1 -1
  136. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  137. package/dist/cjs/types.d.ts +50 -1
  138. package/dist/cjs/types.d.ts.map +1 -1
  139. package/dist/esm/api/autocomplete.d.ts +42 -0
  140. package/dist/esm/api/autocomplete.d.ts.map +1 -0
  141. package/dist/esm/api/autocomplete.js +91 -0
  142. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  143. package/dist/esm/api/banded-ranges.js +52 -2
  144. package/dist/esm/api/error-checking.d.ts +82 -0
  145. package/dist/esm/api/error-checking.d.ts.map +1 -0
  146. package/dist/esm/api/error-checking.js +156 -0
  147. package/dist/esm/api/move-overwrite.d.ts +8 -2
  148. package/dist/esm/api/move-overwrite.d.ts.map +1 -1
  149. package/dist/esm/api/move-overwrite.js +17 -2
  150. package/dist/esm/api/selections.d.ts +2 -2
  151. package/dist/esm/api/validation.d.ts +39 -1
  152. package/dist/esm/api/validation.d.ts.map +1 -1
  153. package/dist/esm/api/validation.js +70 -0
  154. package/dist/esm/atoms/cell-input-context.atom.d.ts +4 -1
  155. package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -1
  156. package/dist/esm/atoms/enter-key-direction.atom.d.ts +11 -0
  157. package/dist/esm/atoms/enter-key-direction.atom.d.ts.map +1 -0
  158. package/dist/esm/atoms/enter-key-direction.atom.js +8 -0
  159. package/dist/esm/atoms/index.d.ts +1 -0
  160. package/dist/esm/atoms/index.d.ts.map +1 -1
  161. package/dist/esm/atoms/index.js +1 -0
  162. package/dist/esm/atoms/paste-menu.atom.d.ts +22 -0
  163. package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -1
  164. package/dist/esm/atoms/paste-menu.atom.js +10 -1
  165. package/dist/esm/atoms/pick-list.atom.d.ts +15 -0
  166. package/dist/esm/atoms/pick-list.atom.d.ts.map +1 -0
  167. package/dist/esm/atoms/pick-list.atom.js +3 -0
  168. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  169. package/dist/esm/components/canvas-grid/index.js +239 -13
  170. package/dist/esm/components/canvas-grid/typings.d.ts +96 -11
  171. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  172. package/dist/esm/components/cell/index.d.ts.map +1 -1
  173. package/dist/esm/components/cell/index.js +8 -9
  174. package/dist/esm/components/cell/typings.d.ts +9 -0
  175. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  176. package/dist/esm/components/cell-editor/helpers.d.ts +22 -2
  177. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  178. package/dist/esm/components/cell-editor/helpers.js +25 -7
  179. package/dist/esm/components/cell-editor/index.d.ts +7 -1
  180. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  181. package/dist/esm/components/cell-editor/index.js +80 -9
  182. package/dist/esm/components/cell-indicator/index.d.ts +41 -0
  183. package/dist/esm/components/cell-indicator/index.d.ts.map +1 -0
  184. package/dist/esm/components/cell-indicator/index.js +76 -0
  185. package/dist/esm/components/cell-input/cell-input.d.ts +10 -2
  186. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
  187. package/dist/esm/components/cell-input/cell-input.js +5 -3
  188. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  189. package/dist/esm/components/cell-input/formula-bar-cell-input.js +9 -2
  190. package/dist/esm/components/cell-structured/sparkline-math.d.ts +27 -1
  191. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  192. package/dist/esm/components/cell-structured/sparkline-math.js +35 -0
  193. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  194. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  195. package/dist/esm/components/cell-structured/sparkline.js +34 -88
  196. package/dist/esm/components/cell-structured/types.d.ts +6 -0
  197. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  198. package/dist/esm/components/data-table-dialog/index.d.ts +22 -0
  199. package/dist/esm/components/data-table-dialog/index.d.ts.map +1 -0
  200. package/dist/esm/components/data-table-dialog/index.js +75 -0
  201. package/dist/esm/components/error-check-smart-tag/index.d.ts +27 -0
  202. package/dist/esm/components/error-check-smart-tag/index.d.ts.map +1 -0
  203. package/dist/esm/components/error-check-smart-tag/index.js +33 -0
  204. package/dist/esm/components/forecast-sheet-dialog/index.d.ts +26 -0
  205. package/dist/esm/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  206. package/dist/esm/components/forecast-sheet-dialog/index.js +83 -0
  207. package/dist/esm/components/paste-special-dialog/index.d.ts +3 -3
  208. package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -1
  209. package/dist/esm/components/paste-special-dialog/index.js +58 -23
  210. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  211. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  212. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +177 -0
  213. package/dist/esm/components/protect-sheet-dialog/constants.d.ts +3 -0
  214. package/dist/esm/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  215. package/dist/esm/components/protect-sheet-dialog/constants.js +2 -0
  216. package/dist/esm/components/protect-sheet-dialog/index.d.ts +2 -2
  217. package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -1
  218. package/dist/esm/components/protect-sheet-dialog/index.js +3 -2
  219. package/dist/esm/components/scenario-manager-dialog/index.d.ts +51 -0
  220. package/dist/esm/components/scenario-manager-dialog/index.d.ts.map +1 -0
  221. package/dist/esm/components/scenario-manager-dialog/index.js +213 -0
  222. package/dist/esm/components/selection/index.d.ts +1 -1
  223. package/dist/esm/components/selection/index.d.ts.map +1 -1
  224. package/dist/esm/components/selection/index.js +9 -4
  225. package/dist/esm/components/selection/paste-menu.d.ts +14 -1
  226. package/dist/esm/components/selection/paste-menu.d.ts.map +1 -1
  227. package/dist/esm/components/selection/paste-menu.js +76 -8
  228. package/dist/esm/components/selection/paste-options.d.ts +28 -0
  229. package/dist/esm/components/selection/paste-options.d.ts.map +1 -0
  230. package/dist/esm/components/selection/paste-options.js +62 -0
  231. package/dist/esm/components/selection/types.d.ts +12 -1
  232. package/dist/esm/components/selection/types.d.ts.map +1 -1
  233. package/dist/esm/components/selection-drop-menu/index.d.ts +18 -0
  234. package/dist/esm/components/selection-drop-menu/index.d.ts.map +1 -0
  235. package/dist/esm/components/selection-drop-menu/index.js +56 -0
  236. package/dist/esm/components/solver-dialog/index.d.ts +57 -0
  237. package/dist/esm/components/solver-dialog/index.d.ts.map +1 -0
  238. package/dist/esm/components/solver-dialog/index.js +176 -0
  239. package/dist/esm/components/toolbar/sparkline-actions.d.ts +3 -2
  240. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -1
  241. package/dist/esm/components/toolbar/sparkline-actions.js +6 -2
  242. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  243. package/dist/esm/components/toolbar/table-style-selector.js +29 -3
  244. package/dist/esm/config.d.ts +5 -4
  245. package/dist/esm/config.d.ts.map +1 -1
  246. package/dist/esm/config.js +12 -8
  247. package/dist/esm/hooks/use-cell-renderer.d.ts +12 -1
  248. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  249. package/dist/esm/hooks/use-cell-renderer.js +5 -2
  250. package/dist/esm/hooks/use-copy-paste-cut.d.ts +36 -2
  251. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  252. package/dist/esm/hooks/use-copy-paste-cut.js +117 -6
  253. package/dist/esm/hooks/use-editable.d.ts +6 -0
  254. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  255. package/dist/esm/hooks/use-editor-submit.d.ts +45 -3
  256. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  257. package/dist/esm/hooks/use-editor-submit.js +81 -6
  258. package/dist/esm/hooks/use-keyboard-handler.d.ts +5 -1
  259. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  260. package/dist/esm/hooks/use-keyboard-handler.js +10 -1
  261. package/dist/esm/hooks/use-selection-drag-copy.d.ts +55 -0
  262. package/dist/esm/hooks/use-selection-drag-copy.d.ts.map +1 -0
  263. package/dist/esm/hooks/use-selection-drag-copy.js +245 -0
  264. package/dist/esm/hooks/use-selection-renderer.d.ts +8 -1
  265. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  266. package/dist/esm/hooks/use-selection-renderer.js +7 -2
  267. package/dist/esm/hooks/use-selection.d.ts +59 -1
  268. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  269. package/dist/esm/hooks/use-selection.js +245 -52
  270. package/dist/esm/index.d.ts +6 -1
  271. package/dist/esm/index.d.ts.map +1 -1
  272. package/dist/esm/index.js +5 -0
  273. package/dist/esm/release-date.js +1 -1
  274. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  275. package/dist/esm/types.d.ts +50 -1
  276. package/dist/esm/types.d.ts.map +1 -1
  277. package/dist/spreadsheet.min.css +1 -1
  278. package/package.json +6 -5
  279. package/dist/cjs/components/cell-error/index.d.ts +0 -14
  280. package/dist/cjs/components/cell-error/index.d.ts.map +0 -1
  281. package/dist/cjs/components/cell-error/index.js +0 -24
  282. package/dist/esm/components/cell-error/index.d.ts +0 -14
  283. package/dist/esm/components/cell-error/index.d.ts.map +0 -1
  284. package/dist/esm/components/cell-error/index.js +0 -18
@@ -15,6 +15,8 @@ var merge_1 = tslib_1.__importDefault(require("lodash/merge"));
15
15
  var throttle_1 = tslib_1.__importDefault(require("lodash/throttle"));
16
16
  var react_1 = tslib_1.__importStar(require("react"));
17
17
  var banded_ranges_1 = require("../../api/banded-ranges");
18
+ var error_checking_1 = require("../../api/error-checking");
19
+ var formula_bar_editor_value_atom_1 = require("../../atoms/formula-bar-editor-value.atom");
18
20
  var insert_options_1 = require("../../api/insert-options");
19
21
  var calculated_column_fill_1 = require("../../api/calculated-column-fill");
20
22
  var table_auto_expansion_1 = require("../../api/table-auto-expansion");
@@ -31,7 +33,8 @@ var atoms_1 = require("../../atoms");
31
33
  var active_editor_atom_1 = require("../../atoms/active-editor.atom");
32
34
  var watch_window_atom_1 = require("../../atoms/watch-window.atom");
33
35
  var editing_cell_atom_1 = require("../../atoms/editing-cell.atom");
34
- var formula_bar_editor_value_atom_1 = require("../../atoms/formula-bar-editor-value.atom");
36
+ var enter_key_direction_atom_1 = require("../../atoms/enter-key-direction.atom");
37
+ var formula_bar_editor_value_atom_2 = require("../../atoms/formula-bar-editor-value.atom");
35
38
  var formula_selection_state_atom_1 = require("../../atoms/formula-selection-state.atom");
36
39
  var formula_selections_atom_1 = require("../../atoms/formula-selections.atom");
37
40
  var magic_fill_state_atom_1 = require("../../atoms/magic-fill-state.atom");
@@ -84,6 +87,8 @@ var use_scale_listener_1 = require("../../hooks/use-scale-listener");
84
87
  var use_selected_rows_columns_1 = require("../../hooks/use-selected-rows-columns");
85
88
  var use_selection_1 = require("../../hooks/use-selection");
86
89
  var use_selection_change_1 = require("../../hooks/use-selection-change");
90
+ var use_selection_drag_copy_1 = require("../../hooks/use-selection-drag-copy");
91
+ var selection_drop_menu_1 = require("../selection-drop-menu");
87
92
  var use_selection_interceptors_1 = require("../../hooks/use-selection-interceptors");
88
93
  var use_selection_move_1 = require("../../hooks/use-selection-move");
89
94
  var use_selection_renderer_1 = require("../../hooks/use-selection-renderer");
@@ -102,6 +107,7 @@ var scroll_subscriber_1 = require("../../signals/scroll-subscriber");
102
107
  var themes_1 = require("../../themes");
103
108
  var fill_series_1 = require("../../api/fill-series");
104
109
  var cell_1 = require("../cell");
110
+ var autocomplete_1 = require("../../api/autocomplete");
105
111
  var cell_editor_1 = require("../cell-editor");
106
112
  var context_menu_1 = require("../context-menu");
107
113
  var menu_1 = require("../context-menu/menu");
@@ -135,8 +141,8 @@ function isDetachedEditor(editor) {
135
141
  return element != null && !element.isConnected;
136
142
  }
137
143
  function CanvasGridComponent(props, forwardedRef) {
138
- var _a, _b, _c, _d;
139
- var licenseKey = props.licenseKey, sheetId = props.sheetId, sheetType = props.sheetType, _e = props.ChartSheetView, ChartSheetViewComponent = _e === void 0 ? chart_sheet_view_1.ChartSheetView : _e, instanceId = props.instanceId, _f = props.activeCell, activeCell = _f === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _f, _g = props.selections, selections = _g === void 0 ? config_1.DEFAULT_ARRAY : _g, _h = props.frozenColumnCount, frozenColumnCount = _h === void 0 ? 0 : _h, _j = props.frozenRowCount, frozenRowCount = _j === void 0 ? 0 : _j, _k = props.rowCount, rowCount = _k === void 0 ? config_1.DEFAULT_ROW_COUNT : _k, _l = props.columnCount, columnCount = _l === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _l, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _m = props.bandedRanges, bandedRanges = _m === void 0 ? config_1.DEFAULT_ARRAY : _m, _o = props.tableBorderColor, tableBorderColor = _o === void 0 ? "#008000" : _o, _p = props.filterIconColor, filterIconColor = _p === void 0 ? config_1.FILTER_BUTTON_GLYPH_COLOR : _p, conditionalFormats = props.conditionalFormats, _q = props.showFilterIcon, showFilterIcon = _q === void 0 ? true : _q, _r = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _r === void 0 ? true : _r, _s = props.showHeaders, showHeaders = _s === void 0 ? true : _s, _t = props.defaultColumnWidth, defaultColumnWidth = _t === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _t, _u = props.defaultRowHeight, defaultRowHeight = _u === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _u, _v = props.lineHeightMode, lineHeightMode = _v === void 0 ? "fontMetrics" : _v, _w = props.columnHeaderHeight, columnHeaderHeight = _w === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _w, _x = props.rowHeaderWidth, rowHeaderWidth = _x === void 0 ? config_1.ROW_HEADER_WIDTH : _x, _y = props.gridLineColor, gridLineColor = _y === void 0 ? config_1.GRIDLINE_COLOR : _y, _z = props.cellBackgroundColor, cellBackgroundColor = _z === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _z, _0 = props.cellColor, cellColor = _0 === void 0 ? config_1.DEFAULT_CELL_COLOR : _0, _1 = props.headerBorderColor, headerBorderColor = _1 === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _1, _2 = props.headerBackgroundColor, headerBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_BG : _2, _3 = props.headerColor, headerColor = _3 === void 0 ? config_1.DEFAULT_HEADER_COLOR : _3, _4 = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _4 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _4, _5 = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _5 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _5, _6 = props.headerSelectedColor, headerSelectedColor = _6 === void 0 ? "white" : _6, _7 = props.headerTableBackgroundColor, headerTableBackgroundColor = _7 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _7, _8 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _8 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _8, _9 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _9 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _9, _10 = props.frozenShadowColor, frozenShadowColor = _10 === void 0 ? headerBorderColor : _10, _11 = props.frozenShadowThickness, frozenShadowThickness = _11 === void 0 ? 1 : _11, _12 = props.selectionBackgroundColor, selectionBackgroundColor = _12 === void 0 ? config_1.SELECTION_BG : _12, _13 = props.selectionBorderColor, selectionBorderColor = _13 === void 0 ? config_1.SELECTION_BORDER : _13, selectionStrokeWidth = props.selectionStrokeWidth, showActiveCellBorderInSelection = props.showActiveCellBorderInSelection, _14 = props.selectionDragBorderColor, selectionDragBorderColor = _14 === void 0 ? config_1.SELECTION_BORDER : _14, chartSelectedColor = props.chartSelectedColor, _15 = props.chipBackgroundColor, chipBackgroundColor = _15 === void 0 ? config_1.CHIP_COLOR : _15, _16 = props.merges, merges = _16 === void 0 ? config_1.DEFAULT_ARRAY : _16, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _17 = props.isWorkbookProtected, isWorkbookProtectedProp = _17 === void 0 ? false : _17, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, onUpdateChart = props.onUpdateChart, onChangeZOrder = props.onChangeZOrder, embeds = props.embeds, slicers = props.slicers, _18 = props.rowMetadata, rowMetadata = _18 === void 0 ? config_1.DEFAULT_ARRAY : _18, _19 = props.columnMetadata, columnMetadata = _19 === void 0 ? config_1.DEFAULT_ARRAY : _19, _20 = props.scale, scale = _20 === void 0 ? 1 : _20, _21 = props.zoomSpeed, zoomSpeed = _21 === void 0 ? 1 : _21, _22 = props.overscanCount, overscanCount = _22 === void 0 ? 3 : _22, enableEditOnEnterKeyProp = props.enableEditOnEnterKey, shouldHandleKeyDown = props.shouldHandleKeyDown, _23 = props.enableTextOverflow, enableTextOverflow = _23 === void 0 ? true : _23, _showGridLines = props.showGridLines, showZeros = props.showZeros, pageBreaks = props.pageBreaks, _24 = props.showFormulas, showFormulas = _24 === void 0 ? false : _24, _25 = props.protectFormulas, protectFormulas = _25 === void 0 ? false : _25, _26 = props.showFrozenSeparator, showFrozenSeparator = _26 === void 0 ? true : _26, _27 = props.HeaderCell, HeaderCell = _27 === void 0 ? header_cell_1.HeaderCell : _27, _28 = props.Cell, Cell = _28 === void 0 ? cell_1.Cell : _28, _29 = props.SelectionTitleComponent, SelectionTitleComponent = _29 === void 0 ? title_1.SelectionTitle : _29, _30 = props.CellEditor, CellEditor = _30 === void 0 ? cell_editor_1.CellEditor : _30, CellTooltip = props.CellTooltip, _31 = props.ContextMenu, ContextMenu = _31 === void 0 ? context_menu_1.ContextMenu : _31, _32 = props.ContextMenuWrapper, ContextMenuWrapper = _32 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _32, _33 = props.FilterBox, FilterBox = _33 === void 0 ? filter_box_1.FilterBox : _33, _34 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _34 === void 0 ? header_move_1.HeaderMoveDragComponent : _34, SuggestionsDropdown = props.SuggestionsDropdown, _35 = props.stickyEditor, stickyEditor = _35 === void 0 ? true : _35, _36 = props.scrollSnap, scrollSnap = _36 === void 0 ? false : _36, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _37 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _37 === void 0 ? 60 : _37, _38 = props.tooltipIntentInterval, tooltipIntentInterval = _38 === void 0 ? 60 : _38, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _39 = props.showHeaderMenuButton, showHeaderMenuButton = _39 === void 0 ? true : _39, _40 = props.scrollbarSize, scrollbarSize = _40 === void 0 ? config_1.SCROLLBAR_SIZE : _40, _41 = props.theme, theme = _41 === void 0 ? config_1.defaultSpreadsheetTheme : _41, _42 = props.showNotes, showNotes = _42 === void 0 ? true : _42, _43 = props.showComments, showComments = _43 === void 0 ? true : _43, locale = props.locale, formulaLocaleProp = props.formulaLocale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, getDataRegion = props.getDataRegion, getChartComponent = props.getChartComponent, getEmbedComponent = props.getEmbedComponent, getSlicerComponent = props.getSlicerComponent, onChange = props.onChange, onChangeBatch = props.onChangeBatch, onExpandCollapse = props.onExpandCollapse, onPivotDrillDown = props.onPivotDrillDown, onDelete = props.onDelete, onChangeEditorValue = props.onChangeEditorValue, onFill = props.onFill, onRequestCalculate = props.onRequestCalculate, onChangeActiveCell = props.onChangeActiveCell, onChangeActiveSheet = props.onChangeActiveSheet, onChangeSelections = props.onChangeSelections, getSheetName = props.getSheetName, getSheetId = props.getSheetId, getCellData = props.getCellData, getNoteProp = props.getNote, getTextFormatRuns = props.getTextFormatRuns, getDataValidation = props.getDataValidation, getEffectiveFormat = props.getEffectiveFormat, getFormattedValueProp = props.getFormattedValue, getTooltipContent = props.getTooltipContent, errorResolutionComponent = props.errorResolutionComponent, getEffectiveValueProp = props.getEffectiveValue, getSparklineGroup = props.getSparklineGroup, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _44 = props.windowConditionalFormats, windowConditionalFormats = _44 === void 0 ? false : _44, _45 = props.engineConditionalFormatResults, engineConditionalFormatResults = _45 === void 0 ? false : _45, getConditionalFormatRuleStats = props.getConditionalFormatRuleStats, onResize = props.onResize, onAutoResize = props.onAutoResize, onHideColumn = props.onHideColumn, onHideRow = props.onHideRow, onShowColumn = props.onShowColumn, onShowRow = props.onShowRow, onGroupRows = props.onGroupRows, onUngroupRows = props.onUngroupRows, onCollapseRowGroup = props.onCollapseRowGroup, onExpandRowGroup = props.onExpandRowGroup, onGroupColumns = props.onGroupColumns, onUngroupColumns = props.onUngroupColumns, onCollapseColumnGroup = props.onCollapseColumnGroup, onExpandColumnGroup = props.onExpandColumnGroup, onSetOutlineDepth = props.onSetOutlineDepth, onDeleteRow = props.onDeleteRow, onDeleteColumn = props.onDeleteColumn, onInsertRow = props.onInsertRow, onInsertColumn = props.onInsertColumn, onChangeAutoExpandTables = props.onChangeAutoExpandTables, onChangeAutoCalculatedColumns = props.onChangeAutoCalculatedColumns, onInsertCellsShiftDown = props.onInsertCellsShiftDown, onInsertCellsShiftRight = props.onInsertCellsShiftRight, onDeleteCellsShiftLeft = props.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = props.onDeleteCellsShiftUp, onClearContents = props.onClearContents, onMoveColumns = props.onMoveColumns, onMoveRows = props.onMoveRows, onSelectNextSheet = props.onSelectNextSheet, onSelectPreviousSheet = props.onSelectPreviousSheet, onCreateNewSheet = props.onCreateNewSheet, onKeyDown = props.onKeyDown, onChangeFormatting = props.onChangeFormatting, onRepeatFormatting = props.onRepeatFormatting, onClearFormatting = props.onClearFormatting, onRequestEditProtectedRange = props.onRequestEditProtectedRange, onMoveChart = props.onMoveChart, onResizeChart = props.onResizeChart, onDeleteChart = props.onDeleteChart, onCutChart = props.onCutChart, onCopyChart = props.onCopyChart, onMoveEmbed = props.onMoveEmbed, onResizeEmbed = props.onResizeEmbed, onDeleteEmbed = props.onDeleteEmbed, onRequestEditEmbed = props.onRequestEditEmbed, onMoveSlicer = props.onMoveSlicer, onResizeSlicer = props.onResizeSlicer, onDeleteSlicer = props.onDeleteSlicer, onRequestEditSlicer = props.onRequestEditSlicer, onFillRange = props.onFillRange, disableFillRightShortcut = props.disableFillRightShortcut, keymap = props.keymap, onCalculateNow = props.onCalculateNow, onRequestGoTo = props.onRequestGoTo, onMoveSelection = props.onMoveSelection, onInsertCutCells = props.onInsertCutCells, onInsertTime = props.onInsertTime, onInsertDate = props.onInsertDate, onInsertDateTime = props.onInsertDateTime, onInsertAutoSum = props.onInsertAutoSum, onUndo = props.onUndo, onRedo = props.onRedo, batchHistory = props.batchHistory, onPaste = props.onPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onUndoTableAutoExpansion = props.onUndoTableAutoExpansion, onUndoCalculatedColumn = props.onUndoCalculatedColumn, onOverwriteCalculatedColumn = props.onOverwriteCalculatedColumn, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRequestCreatePivotChart = props.onRequestCreatePivotChart, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onRequestCreateTable = props.onRequestCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, onUpdateTable = props.onUpdateTable, onRequestResizeTable = props.onRequestResizeTable, onRequestInsertSlicer = props.onRequestInsertSlicer, onCreateBasicFilter = props.onCreateBasicFilter, onRequestDefineNamedRange = props.onRequestDefineNamedRange, onRequestFormatCells = props.onRequestFormatCells, onRequestConditionalFormat = props.onRequestConditionalFormat, onRequestDataValidation = props.onRequestDataValidation, onRequestInsertComment = props.onRequestInsertComment, onRequestInsertLink = props.onRequestInsertLink, onFreezeColumn = props.onFreezeColumn, onFreezeRow = props.onFreezeRow, onUpdateNote = props.onUpdateNote, onProtectRange = props.onProtectRange, onUnProtectRange = props.onUnProtectRange, onSortRange = props.onSortRange, onRequestSearch = props.onRequestSearch, onRequestReplace = props.onRequestReplace, onRequestResize = props.onRequestResize, _46 = props.getRowHeaderText, getRowHeaderText = _46 === void 0 ? helpers_1.getDefaultRowHeader : _46, _47 = props.getColumnHeaderText, getColumnHeaderText = _47 === void 0 ? helpers_1.getDefaultColumnHeader : _47, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _48 = props.tokenizer, defaultTokenizer = _48 === void 0 ? calculator_1.tokenize : _48, onChangeScale = props.onChangeScale, onRemoveLink = props.onRemoveLink, onSelectLink = props.onSelectLink, onSplitTextToColumns = props.onSplitTextToColumns, onRemoveDuplicates = props.onRemoveDuplicates, onGoalSeek = props.onGoalSeek, onSubtotal = props.onSubtotal, onAdvancedFilter = props.onAdvancedFilter, onRequestExpand = props.onRequestExpand, cellExpandPredicate = props.cellExpandPredicate, _49 = props.StructuredResult, StructuredResult = _49 === void 0 ? cell_structured_1.StructuredResultRenderer : _49, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _50 = props.showSelectionResizeHandles, showSelectionResizeHandles = _50 === void 0 ? true : _50, enableMagicFill = props.enableMagicFill, _51 = props.enableQuickEdit, enableQuickEdit = _51 === void 0 ? true : _51, MagicFillComponent = props.MagicFillComponent, MagicFillContent = props.MagicFillContent, QuickEdit = props.QuickEdit, PasteMenu = props.PasteMenu, SuggestionAction = props.SuggestionAction, HiddenRowMarkers = props.HiddenRowMarkers, HiddenColumnMarkers = props.HiddenColumnMarkers, enableResizerOverflow = props.enableResizerOverflow, className = props.className, _52 = props.defaultFontSizePoint, defaultFontSizePoint = _52 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _52, defaultCellFormat = props.defaultCellFormat, readonly = props.readonly, _53 = props.isComparing, isComparing = _53 === void 0 ? false : _53, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
144
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
145
+ var licenseKey = props.licenseKey, sheetId = props.sheetId, sheetType = props.sheetType, _l = props.ChartSheetView, ChartSheetViewComponent = _l === void 0 ? chart_sheet_view_1.ChartSheetView : _l, instanceId = props.instanceId, _m = props.activeCell, activeCell = _m === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _m, _o = props.selections, selections = _o === void 0 ? config_1.DEFAULT_ARRAY : _o, _p = props.frozenColumnCount, frozenColumnCount = _p === void 0 ? 0 : _p, _q = props.frozenRowCount, frozenRowCount = _q === void 0 ? 0 : _q, _r = props.rowCount, rowCount = _r === void 0 ? config_1.DEFAULT_ROW_COUNT : _r, _s = props.columnCount, columnCount = _s === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _s, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _t = props.bandedRanges, bandedRanges = _t === void 0 ? config_1.DEFAULT_ARRAY : _t, _u = props.tableBorderColor, tableBorderColor = _u === void 0 ? "#008000" : _u, _v = props.filterIconColor, filterIconColor = _v === void 0 ? config_1.FILTER_BUTTON_GLYPH_COLOR : _v, conditionalFormats = props.conditionalFormats, _w = props.showFilterIcon, showFilterIcon = _w === void 0 ? true : _w, _x = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _x === void 0 ? true : _x, _y = props.showHeaders, showHeaders = _y === void 0 ? true : _y, _z = props.defaultColumnWidth, defaultColumnWidth = _z === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _z, _0 = props.defaultRowHeight, defaultRowHeight = _0 === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _0, _1 = props.lineHeightMode, lineHeightMode = _1 === void 0 ? "fontMetrics" : _1, _2 = props.columnHeaderHeight, columnHeaderHeight = _2 === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _2, _3 = props.rowHeaderWidth, rowHeaderWidth = _3 === void 0 ? config_1.ROW_HEADER_WIDTH : _3, _4 = props.gridLineColor, gridLineColor = _4 === void 0 ? config_1.GRIDLINE_COLOR : _4, _5 = props.cellBackgroundColor, cellBackgroundColor = _5 === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _5, _6 = props.cellColor, cellColor = _6 === void 0 ? config_1.DEFAULT_CELL_COLOR : _6, _7 = props.headerBorderColor, headerBorderColor = _7 === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _7, _8 = props.headerBackgroundColor, headerBackgroundColor = _8 === void 0 ? config_1.DEFAULT_HEADER_BG : _8, _9 = props.headerColor, headerColor = _9 === void 0 ? config_1.DEFAULT_HEADER_COLOR : _9, _10 = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _10 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _10, _11 = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _11 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _11, _12 = props.headerSelectedColor, headerSelectedColor = _12 === void 0 ? "white" : _12, _13 = props.headerTableBackgroundColor, headerTableBackgroundColor = _13 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _13, _14 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _14 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _14, _15 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _15 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _15, _16 = props.frozenShadowColor, frozenShadowColor = _16 === void 0 ? headerBorderColor : _16, _17 = props.frozenShadowThickness, frozenShadowThickness = _17 === void 0 ? 1 : _17, _18 = props.selectionBackgroundColor, selectionBackgroundColor = _18 === void 0 ? config_1.SELECTION_BG : _18, _19 = props.selectionBorderColor, selectionBorderColor = _19 === void 0 ? config_1.SELECTION_BORDER : _19, selectionStrokeWidth = props.selectionStrokeWidth, showActiveCellBorderInSelection = props.showActiveCellBorderInSelection, _20 = props.selectionDragBorderColor, selectionDragBorderColor = _20 === void 0 ? config_1.SELECTION_BORDER : _20, chartSelectedColor = props.chartSelectedColor, _21 = props.chipBackgroundColor, chipBackgroundColor = _21 === void 0 ? config_1.CHIP_COLOR : _21, _22 = props.merges, merges = _22 === void 0 ? config_1.DEFAULT_ARRAY : _22, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, allowEditRanges = props.allowEditRanges, _23 = props.isWorkbookProtected, isWorkbookProtectedProp = _23 === void 0 ? false : _23, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, onUpdateChart = props.onUpdateChart, onChangeZOrder = props.onChangeZOrder, embeds = props.embeds, slicers = props.slicers, _24 = props.rowMetadata, rowMetadata = _24 === void 0 ? config_1.DEFAULT_ARRAY : _24, _25 = props.columnMetadata, columnMetadata = _25 === void 0 ? config_1.DEFAULT_ARRAY : _25, _26 = props.scale, scale = _26 === void 0 ? 1 : _26, _27 = props.zoomSpeed, zoomSpeed = _27 === void 0 ? 1 : _27, _28 = props.overscanCount, overscanCount = _28 === void 0 ? 3 : _28, enableEditOnEnterKeyProp = props.enableEditOnEnterKey, _29 = props.enterKeyDirection, enterKeyDirection = _29 === void 0 ? "down" : _29, enableAutoCorrect = props.enableAutoCorrect, shouldHandleKeyDown = props.shouldHandleKeyDown, _30 = props.enableTextOverflow, enableTextOverflow = _30 === void 0 ? true : _30, _showGridLines = props.showGridLines, showZeros = props.showZeros, pageBreaks = props.pageBreaks, _31 = props.showFormulas, showFormulas = _31 === void 0 ? false : _31, _32 = props.protectFormulas, protectFormulas = _32 === void 0 ? false : _32, _33 = props.showFrozenSeparator, showFrozenSeparator = _33 === void 0 ? true : _33, _34 = props.HeaderCell, HeaderCell = _34 === void 0 ? header_cell_1.HeaderCell : _34, _35 = props.Cell, Cell = _35 === void 0 ? cell_1.Cell : _35, _36 = props.SelectionTitleComponent, SelectionTitleComponent = _36 === void 0 ? title_1.SelectionTitle : _36, _37 = props.CellEditor, CellEditor = _37 === void 0 ? cell_editor_1.CellEditor : _37, CellTooltip = props.CellTooltip, _38 = props.ContextMenu, ContextMenu = _38 === void 0 ? context_menu_1.ContextMenu : _38, _39 = props.ContextMenuWrapper, ContextMenuWrapper = _39 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _39, _40 = props.FilterBox, FilterBox = _40 === void 0 ? filter_box_1.FilterBox : _40, _41 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _41 === void 0 ? header_move_1.HeaderMoveDragComponent : _41, SuggestionsDropdown = props.SuggestionsDropdown, _42 = props.stickyEditor, stickyEditor = _42 === void 0 ? true : _42, _43 = props.scrollSnap, scrollSnap = _43 === void 0 ? false : _43, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _44 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _44 === void 0 ? 60 : _44, _45 = props.tooltipIntentInterval, tooltipIntentInterval = _45 === void 0 ? 60 : _45, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _46 = props.showHeaderMenuButton, showHeaderMenuButton = _46 === void 0 ? true : _46, _47 = props.scrollbarSize, scrollbarSize = _47 === void 0 ? config_1.SCROLLBAR_SIZE : _47, _48 = props.theme, theme = _48 === void 0 ? config_1.defaultSpreadsheetTheme : _48, _49 = props.showNotes, showNotes = _49 === void 0 ? true : _49, _50 = props.showComments, showComments = _50 === void 0 ? true : _50, _51 = props.circleInvalidData, circleInvalidData = _51 === void 0 ? false : _51, getIgnoredErrors = props.getIgnoredErrors, locale = props.locale, formulaLocaleProp = props.formulaLocale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, getDataRegion = props.getDataRegion, getArrayFormula = props.getArrayFormula, getChartComponent = props.getChartComponent, getEmbedComponent = props.getEmbedComponent, getSlicerComponent = props.getSlicerComponent, onChange = props.onChange, onChangeBatch = props.onChangeBatch, onChangeArrayFormula = props.onChangeArrayFormula, onExpandCollapse = props.onExpandCollapse, onPivotDrillDown = props.onPivotDrillDown, onDelete = props.onDelete, onChangeEditorValue = props.onChangeEditorValue, onFill = props.onFill, onRequestCalculate = props.onRequestCalculate, onChangeActiveCell = props.onChangeActiveCell, onChangeActiveSheet = props.onChangeActiveSheet, onChangeSelections = props.onChangeSelections, getSheetName = props.getSheetName, getSheetId = props.getSheetId, getCellData = props.getCellData, getNoteProp = props.getNote, getTextFormatRuns = props.getTextFormatRuns, getDataValidation = props.getDataValidation, getEffectiveFormat = props.getEffectiveFormat, getFormattedValueProp = props.getFormattedValue, getTooltipContent = props.getTooltipContent, errorResolutionComponent = props.errorResolutionComponent, getEffectiveValueProp = props.getEffectiveValue, getSparklineGroup = props.getSparklineGroup, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _52 = props.windowConditionalFormats, windowConditionalFormats = _52 === void 0 ? false : _52, _53 = props.engineConditionalFormatResults, engineConditionalFormatResults = _53 === void 0 ? false : _53, getConditionalFormatRuleStats = props.getConditionalFormatRuleStats, onResize = props.onResize, onAutoResize = props.onAutoResize, onHideColumn = props.onHideColumn, onHideRow = props.onHideRow, onShowColumn = props.onShowColumn, onShowRow = props.onShowRow, onGroupRows = props.onGroupRows, onUngroupRows = props.onUngroupRows, onCollapseRowGroup = props.onCollapseRowGroup, onExpandRowGroup = props.onExpandRowGroup, onGroupColumns = props.onGroupColumns, onUngroupColumns = props.onUngroupColumns, onCollapseColumnGroup = props.onCollapseColumnGroup, onExpandColumnGroup = props.onExpandColumnGroup, onSetOutlineDepth = props.onSetOutlineDepth, onDeleteRow = props.onDeleteRow, onDeleteColumn = props.onDeleteColumn, onInsertRow = props.onInsertRow, onInsertColumn = props.onInsertColumn, onChangeAutoExpandTables = props.onChangeAutoExpandTables, onChangeAutoCalculatedColumns = props.onChangeAutoCalculatedColumns, onInsertCellsShiftDown = props.onInsertCellsShiftDown, onInsertCellsShiftRight = props.onInsertCellsShiftRight, onDeleteCellsShiftLeft = props.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = props.onDeleteCellsShiftUp, onClearContents = props.onClearContents, onMoveColumns = props.onMoveColumns, onMoveRows = props.onMoveRows, onSelectNextSheet = props.onSelectNextSheet, onSelectPreviousSheet = props.onSelectPreviousSheet, onCreateNewSheet = props.onCreateNewSheet, onKeyDown = props.onKeyDown, onChangeFormatting = props.onChangeFormatting, onRepeatFormatting = props.onRepeatFormatting, onClearFormatting = props.onClearFormatting, onRequestEditProtectedRange = props.onRequestEditProtectedRange, onRequestUnlockAllowEditRange = props.onRequestUnlockAllowEditRange, onMoveChart = props.onMoveChart, onResizeChart = props.onResizeChart, onDeleteChart = props.onDeleteChart, onCutChart = props.onCutChart, onCopyChart = props.onCopyChart, onMoveEmbed = props.onMoveEmbed, onResizeEmbed = props.onResizeEmbed, onDeleteEmbed = props.onDeleteEmbed, onRequestEditEmbed = props.onRequestEditEmbed, onMoveSlicer = props.onMoveSlicer, onResizeSlicer = props.onResizeSlicer, onDeleteSlicer = props.onDeleteSlicer, onRequestEditSlicer = props.onRequestEditSlicer, onFillRange = props.onFillRange, disableFillRightShortcut = props.disableFillRightShortcut, keymap = props.keymap, _54 = props.enableAutoComplete, enableAutoComplete = _54 === void 0 ? true : _54, onCalculateNow = props.onCalculateNow, onRequestGoTo = props.onRequestGoTo, onMoveSelection = props.onMoveSelection, onInsertCutCells = props.onInsertCutCells, onInsertCopiedCells = props.onInsertCopiedCells, onInsertTime = props.onInsertTime, onInsertDate = props.onInsertDate, onInsertDateTime = props.onInsertDateTime, onInsertAutoSum = props.onInsertAutoSum, onUndo = props.onUndo, onRedo = props.onRedo, batchHistory = props.batchHistory, onPaste = props.onPaste, onReapplyPaste = props.onReapplyPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onUndoTableAutoExpansion = props.onUndoTableAutoExpansion, onUndoCalculatedColumn = props.onUndoCalculatedColumn, onOverwriteCalculatedColumn = props.onOverwriteCalculatedColumn, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRequestCreatePivotChart = props.onRequestCreatePivotChart, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onRequestCreateTable = props.onRequestCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, onUpdateTable = props.onUpdateTable, onRequestResizeTable = props.onRequestResizeTable, onRequestInsertSlicer = props.onRequestInsertSlicer, onCreateBasicFilter = props.onCreateBasicFilter, onRequestDefineNamedRange = props.onRequestDefineNamedRange, onRequestFormatCells = props.onRequestFormatCells, onRequestConditionalFormat = props.onRequestConditionalFormat, onRequestDataValidation = props.onRequestDataValidation, onRequestInsertComment = props.onRequestInsertComment, onRequestInsertLink = props.onRequestInsertLink, onFreezeColumn = props.onFreezeColumn, onFreezeRow = props.onFreezeRow, onUpdateNote = props.onUpdateNote, onProtectRange = props.onProtectRange, onUnProtectRange = props.onUnProtectRange, onSortRange = props.onSortRange, onRequestSearch = props.onRequestSearch, onRequestReplace = props.onRequestReplace, onRequestResize = props.onRequestResize, _55 = props.getRowHeaderText, getRowHeaderText = _55 === void 0 ? helpers_1.getDefaultRowHeader : _55, _56 = props.getColumnHeaderText, getColumnHeaderText = _56 === void 0 ? helpers_1.getDefaultColumnHeader : _56, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _57 = props.tokenizer, defaultTokenizer = _57 === void 0 ? calculator_1.tokenize : _57, onChangeScale = props.onChangeScale, onRemoveLink = props.onRemoveLink, onSelectLink = props.onSelectLink, onSplitTextToColumns = props.onSplitTextToColumns, onRemoveDuplicates = props.onRemoveDuplicates, onGoalSeek = props.onGoalSeek, onSubtotal = props.onSubtotal, onAdvancedFilter = props.onAdvancedFilter, onRequestExpand = props.onRequestExpand, cellExpandPredicate = props.cellExpandPredicate, _58 = props.StructuredResult, StructuredResult = _58 === void 0 ? cell_structured_1.StructuredResultRenderer : _58, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _59 = props.showSelectionResizeHandles, showSelectionResizeHandles = _59 === void 0 ? true : _59, enableMagicFill = props.enableMagicFill, _60 = props.enableQuickEdit, enableQuickEdit = _60 === void 0 ? true : _60, MagicFillComponent = props.MagicFillComponent, MagicFillContent = props.MagicFillContent, QuickEdit = props.QuickEdit, PasteMenu = props.PasteMenu, SuggestionAction = props.SuggestionAction, HiddenRowMarkers = props.HiddenRowMarkers, HiddenColumnMarkers = props.HiddenColumnMarkers, enableResizerOverflow = props.enableResizerOverflow, className = props.className, _61 = props.defaultFontSizePoint, defaultFontSizePoint = _61 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _61, defaultCellFormat = props.defaultCellFormat, readonly = props.readonly, _62 = props.isComparing, isComparing = _62 === void 0 ? false : _62, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
140
146
  // Host-driven filter props. `hostHiddenRowRanges`
141
147
  // supplies compact [start, end] hidden-row tuples; `getFilterValues` supplies a
142
148
  // column's distinct values. Both let a million-row filter render without scanning
@@ -151,10 +157,21 @@ function CanvasGridComponent(props, forwardedRef) {
151
157
  // (formula-valued names, structured references, OFFSET/INDIRECT/FILTER/UNIQUE).
152
158
  resolveValidationSourceValues = props.resolveValidationSourceValues,
153
159
  // Unused props only for api
154
- getDataColumnCount = props.getDataColumnCount, onDeleteNamedRange = props.onDeleteNamedRange, onChangeBorder = props.onChangeBorder, onDuplicateSheet = props.onDuplicateSheet, onCreateConditionalFormattingRule = props.onCreateConditionalFormattingRule, onDeleteConditionalFormattingRule = props.onDeleteConditionalFormattingRule, onUpdateConditionalFormattingRule = props.onUpdateConditionalFormattingRule, onCreateDataValidationRule = props.onCreateDataValidationRule, onUpdateDataValidationRule = props.onUpdateDataValidationRule, onDeleteDataValidationRule = props.onDeleteDataValidationRule, onCreateChart = props.onCreateChart, onDeleteSheet = props.onDeleteSheet, onCreateEmbed = props.onCreateEmbed, onDecreaseIndent = props.onDecreaseIndent, onIncreaseIndent = props.onIncreaseIndent, onChangeTheme = props.onChangeTheme, onChangeDecimals = props.onChangeDecimals, onUpdateSheet = props.onUpdateSheet, onChangeBatchStream = props.onChangeBatchStream, onBlur = props.onBlur, rest = tslib_1.__rest(props, ["licenseKey", "sheetId", "sheetType", "ChartSheetView", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "lineHeightMode", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionStrokeWidth", "showActiveCellBorderInSelection", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "onUpdateChart", "onChangeZOrder", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "shouldHandleKeyDown", "enableTextOverflow", "showGridLines", "showZeros", "pageBreaks", "showFormulas", "protectFormulas", "showFrozenSeparator", "HeaderCell", "Cell", "SelectionTitleComponent", "CellEditor", "CellTooltip", "ContextMenu", "ContextMenuWrapper", "FilterBox", "HeaderMoveDragComponent", "SuggestionsDropdown", "stickyEditor", "scrollSnap", "scrollThrottleTimeout", "preventBrowserDefaultScroll", "mouseMoveThrottleTimeout", "tooltipIntentInterval", "selectionPolicy", "users", "userId", "renderCollaboratorCursor", "functionDescriptions", "showHeaderMenuButton", "scrollbarSize", "theme", "showNotes", "showComments", "locale", "formulaLocale", "agentSuggestions", "onReviewSuggestion", "onShowFormulas", "getDataRowCount", "getDataRegion", "getChartComponent", "getEmbedComponent", "getSlicerComponent", "onChange", "onChangeBatch", "onExpandCollapse", "onPivotDrillDown", "onDelete", "onChangeEditorValue", "onFill", "onRequestCalculate", "onChangeActiveCell", "onChangeActiveSheet", "onChangeSelections", "getSheetName", "getSheetId", "getCellData", "getNote", "getTextFormatRuns", "getDataValidation", "getEffectiveFormat", "getFormattedValue", "getTooltipContent", "errorResolutionComponent", "getEffectiveValue", "getSparklineGroup", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "getConditionalFormatRuleStats", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onChangeAutoExpandTables", "onChangeAutoCalculatedColumns", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onCutChart", "onCopyChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "keymap", "onCalculateNow", "onRequestGoTo", "onMoveSelection", "onInsertCutCells", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "batchHistory", "onPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onUndoTableAutoExpansion", "onUndoCalculatedColumn", "onOverwriteCalculatedColumn", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRequestCreatePivotChart", "onRemoveTable", "onCreateTable", "onRequestCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "onUpdateTable", "onRequestResizeTable", "onRequestInsertSlicer", "onCreateBasicFilter", "onRequestDefineNamedRange", "onRequestFormatCells", "onRequestConditionalFormat", "onRequestDataValidation", "onRequestInsertComment", "onRequestInsertLink", "onFreezeColumn", "onFreezeRow", "onUpdateNote", "onProtectRange", "onUnProtectRange", "onSortRange", "onRequestSearch", "onRequestReplace", "onRequestResize", "getRowHeaderText", "getColumnHeaderText", "getAdditionalCellSpacing", "tokenizer", "onChangeScale", "onRemoveLink", "onSelectLink", "onSplitTextToColumns", "onRemoveDuplicates", "onGoalSeek", "onSubtotal", "onAdvancedFilter", "onRequestExpand", "cellExpandPredicate", "StructuredResult", "getMentions", "getStructuredProperties", "getFunctionParameterSuggestions", "shouldFetchFunctionParameters", "MentionTagComponent", "MentionDropdownItemComponent", "showSelectionResizeHandles", "enableMagicFill", "enableQuickEdit", "MagicFillComponent", "MagicFillContent", "QuickEdit", "PasteMenu", "SuggestionAction", "HiddenRowMarkers", "HiddenColumnMarkers", "enableResizerOverflow", "className", "defaultFontSizePoint", "defaultCellFormat", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "resolveValidationSourceValues", "getDataColumnCount", "onDeleteNamedRange", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
160
+ getDataColumnCount = props.getDataColumnCount, onDeleteNamedRange = props.onDeleteNamedRange, onChangeBorder = props.onChangeBorder, onDuplicateSheet = props.onDuplicateSheet, onCreateConditionalFormattingRule = props.onCreateConditionalFormattingRule, onDeleteConditionalFormattingRule = props.onDeleteConditionalFormattingRule, onUpdateConditionalFormattingRule = props.onUpdateConditionalFormattingRule, onCreateDataValidationRule = props.onCreateDataValidationRule, onUpdateDataValidationRule = props.onUpdateDataValidationRule, onDeleteDataValidationRule = props.onDeleteDataValidationRule, onCreateChart = props.onCreateChart, onDeleteSheet = props.onDeleteSheet, onCreateEmbed = props.onCreateEmbed, onDecreaseIndent = props.onDecreaseIndent, onIncreaseIndent = props.onIncreaseIndent, onChangeTheme = props.onChangeTheme, onChangeDecimals = props.onChangeDecimals, onUpdateSheet = props.onUpdateSheet, onChangeBatchStream = props.onChangeBatchStream, onBlur = props.onBlur, rest = tslib_1.__rest(props, ["licenseKey", "sheetId", "sheetType", "ChartSheetView", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "lineHeightMode", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionStrokeWidth", "showActiveCellBorderInSelection", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "allowEditRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "onUpdateChart", "onChangeZOrder", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enterKeyDirection", "enableAutoCorrect", "shouldHandleKeyDown", "enableTextOverflow", "showGridLines", "showZeros", "pageBreaks", "showFormulas", "protectFormulas", "showFrozenSeparator", "HeaderCell", "Cell", "SelectionTitleComponent", "CellEditor", "CellTooltip", "ContextMenu", "ContextMenuWrapper", "FilterBox", "HeaderMoveDragComponent", "SuggestionsDropdown", "stickyEditor", "scrollSnap", "scrollThrottleTimeout", "preventBrowserDefaultScroll", "mouseMoveThrottleTimeout", "tooltipIntentInterval", "selectionPolicy", "users", "userId", "renderCollaboratorCursor", "functionDescriptions", "showHeaderMenuButton", "scrollbarSize", "theme", "showNotes", "showComments", "circleInvalidData", "getIgnoredErrors", "locale", "formulaLocale", "agentSuggestions", "onReviewSuggestion", "onShowFormulas", "getDataRowCount", "getDataRegion", "getArrayFormula", "getChartComponent", "getEmbedComponent", "getSlicerComponent", "onChange", "onChangeBatch", "onChangeArrayFormula", "onExpandCollapse", "onPivotDrillDown", "onDelete", "onChangeEditorValue", "onFill", "onRequestCalculate", "onChangeActiveCell", "onChangeActiveSheet", "onChangeSelections", "getSheetName", "getSheetId", "getCellData", "getNote", "getTextFormatRuns", "getDataValidation", "getEffectiveFormat", "getFormattedValue", "getTooltipContent", "errorResolutionComponent", "getEffectiveValue", "getSparklineGroup", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "getConditionalFormatRuleStats", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onChangeAutoExpandTables", "onChangeAutoCalculatedColumns", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onRequestUnlockAllowEditRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onCutChart", "onCopyChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "keymap", "enableAutoComplete", "onCalculateNow", "onRequestGoTo", "onMoveSelection", "onInsertCutCells", "onInsertCopiedCells", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "batchHistory", "onPaste", "onReapplyPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onUndoTableAutoExpansion", "onUndoCalculatedColumn", "onOverwriteCalculatedColumn", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRequestCreatePivotChart", "onRemoveTable", "onCreateTable", "onRequestCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "onUpdateTable", "onRequestResizeTable", "onRequestInsertSlicer", "onCreateBasicFilter", "onRequestDefineNamedRange", "onRequestFormatCells", "onRequestConditionalFormat", "onRequestDataValidation", "onRequestInsertComment", "onRequestInsertLink", "onFreezeColumn", "onFreezeRow", "onUpdateNote", "onProtectRange", "onUnProtectRange", "onSortRange", "onRequestSearch", "onRequestReplace", "onRequestResize", "getRowHeaderText", "getColumnHeaderText", "getAdditionalCellSpacing", "tokenizer", "onChangeScale", "onRemoveLink", "onSelectLink", "onSplitTextToColumns", "onRemoveDuplicates", "onGoalSeek", "onSubtotal", "onAdvancedFilter", "onRequestExpand", "cellExpandPredicate", "StructuredResult", "getMentions", "getStructuredProperties", "getFunctionParameterSuggestions", "shouldFetchFunctionParameters", "MentionTagComponent", "MentionDropdownItemComponent", "showSelectionResizeHandles", "enableMagicFill", "enableQuickEdit", "MagicFillComponent", "MagicFillContent", "QuickEdit", "PasteMenu", "SuggestionAction", "HiddenRowMarkers", "HiddenColumnMarkers", "enableResizerOverflow", "className", "defaultFontSizePoint", "defaultCellFormat", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "resolveValidationSourceValues", "getDataColumnCount", "onDeleteNamedRange", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
155
161
  // Enter on a cell opens the editor in Google Sheets and moves down in
156
162
  // Excel; a host's explicit value wins under either keymap.
157
163
  var enableEditOnEnterKey = enableEditOnEnterKeyProp !== null && enableEditOnEnterKeyProp !== void 0 ? enableEditOnEnterKeyProp : keymap !== "excel";
164
+ // The editors that commit on Enter outside these props (the host's in-cell editor, the formula
165
+ // bar) read the direction from the provider.
166
+ var setEnterKeyDirection = (0, enter_key_direction_atom_1.useSetEnterKeyDirection)();
167
+ (0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
168
+ setEnterKeyDirection(enterKeyDirection);
169
+ }, [enterKeyDirection, setEnterKeyDirection]);
170
+ var autoCorrect = (0, react_1.useMemo)(function () {
171
+ return enableAutoCorrect === true
172
+ ? utils_1.DEFAULT_AUTOCORRECT_OPTIONS
173
+ : enableAutoCorrect || undefined;
174
+ }, [enableAutoCorrect]);
158
175
  /**
159
176
  * Fire onBlur only when the cell editor blurs to an element outside the
160
177
  * spreadsheet. Routed through `useEditable` so we hook the always-focused
@@ -170,7 +187,7 @@ function CanvasGridComponent(props, forwardedRef) {
170
187
  var showGridLines = _showGridLines !== null && _showGridLines !== void 0 ? _showGridLines : true;
171
188
  var gridRef = (0, react_1.useRef)(null);
172
189
  // Hovered cell state (immediate, updated on mousemove)
173
- var _54 = tslib_1.__read((0, react_1.useState)(), 2), hoveredCell = _54[0], setHoveredCell = _54[1];
190
+ var _63 = tslib_1.__read((0, react_1.useState)(), 2), hoveredCell = _63[0], setHoveredCell = _63[1];
174
191
  // Delayed hovered cell for tooltips and selection titles
175
192
  var delayedHoveredCell = (0, use_delayed_value_1.useDelayedValue)(hoveredCell, tooltipIntentInterval);
176
193
  // Text overflow functionality
@@ -260,20 +277,21 @@ function CanvasGridComponent(props, forwardedRef) {
260
277
  var onHideFormulaHelp = (0, show_formula_help_atom_1.useOnHideFormulaHelp)();
261
278
  var onShowFormulaHelp = (0, show_formula_help_atom_1.useOnShowFormulaHelp)();
262
279
  // Cell editor
263
- var cellEditorInstance = (0, formula_bar_editor_value_atom_1.useCellEditorInstance)();
280
+ var cellEditorInstance = (0, formula_bar_editor_value_atom_2.useCellEditorInstance)();
264
281
  // Paste menu
265
- var _55 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _55[0], setShowPasteMenu = _55[1];
282
+ var _64 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _64[0], setShowPasteMenu = _64[1];
283
+ var _65 = tslib_1.__read((0, atoms_1.usePickList)(), 2), setPickList = _65[1];
266
284
  // Auto Fill Options smart tag / right-drag fill menu + Series dialog
267
- var _56 = tslib_1.__read((0, atoms_1.useFillOptionsState)(), 2), fillOptions = _56[0], setFillOptions = _56[1];
268
- var _57 = tslib_1.__read((0, atoms_1.useInsertOptionsState)(), 2), insertOptions = _57[0], setInsertOptions = _57[1];
269
- var _58 = tslib_1.__read((0, atoms_1.useTableAutoExpansionState)(), 2), tableAutoExpansion = _58[0], setTableAutoExpansion = _58[1];
270
- var _59 = tslib_1.__read((0, atoms_1.useCalculatedColumnFillState)(), 2), calculatedColumnFill = _59[0], setCalculatedColumnFill = _59[1];
285
+ var _66 = tslib_1.__read((0, atoms_1.useFillOptionsState)(), 2), fillOptions = _66[0], setFillOptions = _66[1];
286
+ var _67 = tslib_1.__read((0, atoms_1.useInsertOptionsState)(), 2), insertOptions = _67[0], setInsertOptions = _67[1];
287
+ var _68 = tslib_1.__read((0, atoms_1.useTableAutoExpansionState)(), 2), tableAutoExpansion = _68[0], setTableAutoExpansion = _68[1];
288
+ var _69 = tslib_1.__read((0, atoms_1.useCalculatedColumnFillState)(), 2), calculatedColumnFill = _69[0], setCalculatedColumnFill = _69[1];
271
289
  var openFillSeriesDialog = (0, atoms_1.useOpenFillSeriesDialog)();
272
290
  // Shared state
273
291
  var formulaMode = (0, atoms_1.useFormulaModeValue)();
274
292
  var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
275
- var _60 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _60[0], setEditingCellCoordinate = _60[1];
276
- var setFormulabarEditorValue = (0, formula_bar_editor_value_atom_1.useSetFormulabarEditorValue)();
293
+ var _70 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _70[0], setEditingCellCoordinate = _70[1];
294
+ var setFormulabarEditorValue = (0, formula_bar_editor_value_atom_2.useSetFormulabarEditorValue)();
277
295
  /**
278
296
  * The formula SYNTAX the editor / formula bar speak (rowsncolumns/spreadsheet#655): Excel follows
279
297
  * the user's language, so it defaults to `locale`. Everything that crosses the grid boundary stays
@@ -284,13 +302,13 @@ function CanvasGridComponent(props, forwardedRef) {
284
302
  var localizedFunctionDescriptions = (0, react_1.useMemo)(function () {
285
303
  return (0, utils_1.localizeFunctionDescriptions)(functionDescriptions !== null && functionDescriptions !== void 0 ? functionDescriptions : undefined, formulaLocale);
286
304
  }, [functionDescriptions, formulaLocale]);
287
- var setFormulaBarTextFormatRuns = (0, formula_bar_editor_value_atom_1.useSetFormulaBarTextFormatRuns)();
305
+ var setFormulaBarTextFormatRuns = (0, formula_bar_editor_value_atom_2.useSetFormulaBarTextFormatRuns)();
288
306
  var canSelectCells = (0, formula_selection_state_atom_1.useFormulaCanSelectCells)();
289
307
  var selectionMode = (0, formula_selection_state_atom_1.useFormulaSelectionMode)();
290
308
  var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
291
309
  var activeEditor = (0, active_editor_atom_1.useActiveEditor)();
292
310
  // Magic fill state
293
- var _61 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _61[0], setQuickEditState = _61[1];
311
+ var _71 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _71[0], setQuickEditState = _71[1];
294
312
  var setNoteEditorCell = (0, atoms_1.useSetNoteEditorCell)();
295
313
  var setPinnedTooltip = (0, atoms_1.useSetPinnedTooltip)();
296
314
  var setSpreadsheetApi = (0, spreadsheet_api_atom_1.useSetSpreadsheetApi)();
@@ -301,7 +319,7 @@ function CanvasGridComponent(props, forwardedRef) {
301
319
  var instanceStore = (0, jotai_1.useStore)({ store: spreadsheet_provider_1.multiInstanceStore });
302
320
  // To access closures
303
321
  var hoveredCellRef = (0, use_stable_ref_1.useStableRef)(hoveredCell);
304
- var _62 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _62[0], _63 = _62[1], width = _63.width, height = _63.height;
322
+ var _72 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _72[0], _73 = _72[1], width = _73.width, height = _73.height;
305
323
  // Row 0 / column 0 are the heading slots and exist whether or not headings are
306
324
  // shown (hidden headings are zero-sized, not removed), so the sheet's frozen
307
325
  // counts always sit one past them.
@@ -315,9 +333,9 @@ function CanvasGridComponent(props, forwardedRef) {
315
333
  var sheetRowCount = Math.min(config_1.MAX_ROW_COUNT + 1, rowCount + 1);
316
334
  var sheetColumnCount = Math.min(config_1.MAX_COLUMN_COUNT + 1, columnCount + 1);
317
335
  // License key validator
318
- var _64 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
336
+ var _74 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
319
337
  licenseKey: licenseKey,
320
- }), 3), _ = _64[0], licenseType = _64[1], validatorResult = _64[2];
338
+ }), 3), _ = _74[0], licenseType = _74[1], validatorResult = _74[2];
321
339
  var isRestricted = licenseType === "solo";
322
340
  // Grid line width
323
341
  var gridLineWidth = 1 * scale;
@@ -564,6 +582,13 @@ function CanvasGridComponent(props, forwardedRef) {
564
582
  * context without churning it on re-renders.
565
583
  */
566
584
  var getSheetProtectionStable = (0, use_callback_ref_1.useCallbackRef)(getSheetProtection);
585
+ /**
586
+ * Excel's "Select locked cells" / "Select unlocked cells" on a protected
587
+ * sheet: the selection hook refuses any range this rejects.
588
+ */
589
+ var isRangeSelectable = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (range) {
590
+ return (0, validation_1.isRangeSelectableUnderProtection)(getSheetProtection === null || getSheetProtection === void 0 ? void 0 : getSheetProtection(sheetId), range, function (rowIndex, columnIndex) { var _a; return (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.protection; });
591
+ }, [getSheetProtection, getCellData, sheetId]));
567
592
  /**
568
593
  * Check if the cell can be edited
569
594
  */
@@ -587,7 +612,25 @@ function CanvasGridComponent(props, forwardedRef) {
587
612
  // active, LOCKED cells refuse edits — a cell is locked unless its
588
613
  // `protection.locked` is `false` (Excel's default) — and unlocked
589
614
  // cells stay editable.
590
- var lockedBySheetProtection = (0, validation_1.isCellLockedUnderProtection)(getSheetProtection === null || getSheetProtection === void 0 ? void 0 : getSheetProtection(sheetId), (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.protection);
615
+ // An Excel Allow Edit Range opens its locked cells; one behind a
616
+ // password asks for it first (Excel's Unlock Range prompt).
617
+ var protectedEdit = (0, validation_1.resolveProtectedCellEdit)({
618
+ sheetId: sheetId,
619
+ cell: cell,
620
+ sheetProtection: getSheetProtection === null || getSheetProtection === void 0 ? void 0 : getSheetProtection(sheetId),
621
+ cellProtection: (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.protection,
622
+ allowEditRanges: allowEditRanges,
623
+ });
624
+ if (typeof protectedEdit === "object") {
625
+ if (onRequestUnlockAllowEditRange) {
626
+ onRequestUnlockAllowEditRange(sheetId, protectedEdit.unlock, cell);
627
+ }
628
+ else {
629
+ onRequestEditProtectedRange === null || onRequestEditProtectedRange === void 0 ? void 0 : onRequestEditProtectedRange(sheetId, cell);
630
+ }
631
+ return false;
632
+ }
633
+ var lockedBySheetProtection = protectedEdit === "locked";
591
634
  var canEdit = !lockedBySheetProtection &&
592
635
  (protectedRanges
593
636
  ? !(0, validation_1.isProtectedCell)(sheetId, cell, protectedRanges)
@@ -600,11 +643,13 @@ function CanvasGridComponent(props, forwardedRef) {
600
643
  }, [
601
644
  readonly,
602
645
  protectedRanges,
646
+ allowEditRanges,
603
647
  getSheetProtection,
604
648
  getCellData,
605
649
  isRowHeader,
606
650
  isColumnHeader,
607
651
  onRequestEditProtectedRange,
652
+ onRequestUnlockAllowEditRange,
608
653
  getPivotTableAtCell,
609
654
  ]));
610
655
  /**
@@ -1051,6 +1096,49 @@ function CanvasGridComponent(props, forwardedRef) {
1051
1096
  var getErrorValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1052
1097
  return (0, helpers_1.getExtendedValueError)(getEffectiveValue === null || getEffectiveValue === void 0 ? void 0 : getEffectiveValue(sheetId, rowIndex, columnIndex));
1053
1098
  }, [getEffectiveValue]);
1099
+ /**
1100
+ * Excel's background error checking: the rule (formula error, number stored as text) that puts
1101
+ * the green ◤ on a cell.
1102
+ */
1103
+ // Keyed on the active sheet's list CONTENT: an inline host lookup must not repaint every cell
1104
+ // per render, while Ignore Error (a new list) must repaint the flags.
1105
+ var getIgnoredErrorsStable = (0, use_callback_ref_1.useCallbackRef)(function (targetSheetId) { return getIgnoredErrors === null || getIgnoredErrors === void 0 ? void 0 : getIgnoredErrors(targetSheetId); });
1106
+ var activeIgnoredErrors = getIgnoredErrors === null || getIgnoredErrors === void 0 ? void 0 : getIgnoredErrors(sheetId);
1107
+ var activeIgnoredErrorsKey = JSON.stringify(activeIgnoredErrors !== null && activeIgnoredErrors !== void 0 ? activeIgnoredErrors : null);
1108
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1109
+ var stableIgnoredErrors = (0, react_1.useMemo)(function () { return activeIgnoredErrors; }, [activeIgnoredErrorsKey]);
1110
+ var getErrorCheck = (0, react_1.useCallback)(function (targetSheetId, rowIndex, columnIndex) {
1111
+ var kind = (0, error_checking_1.getErrorCheckKind)({
1112
+ userEnteredValue: getUserEnteredValue(targetSheetId, rowIndex, columnIndex),
1113
+ errorValue: getErrorValue(targetSheetId, rowIndex, columnIndex),
1114
+ });
1115
+ if (kind &&
1116
+ (0, error_checking_1.isErrorIgnored)(targetSheetId === sheetId
1117
+ ? stableIgnoredErrors
1118
+ : getIgnoredErrorsStable(targetSheetId), rowIndex, columnIndex, kind)) {
1119
+ return undefined;
1120
+ }
1121
+ return kind;
1122
+ }, [
1123
+ getUserEnteredValue,
1124
+ getErrorValue,
1125
+ getIgnoredErrorsStable,
1126
+ stableIgnoredErrors,
1127
+ sheetId,
1128
+ ]);
1129
+ // Excel's error-checking smart tag: open from its button or Alt+Shift+F10, closed when the
1130
+ // active cell moves.
1131
+ var _75 = tslib_1.__read((0, react_1.useState)(false), 2), errorCheckMenuOpen = _75[0], setErrorCheckMenuOpen = _75[1];
1132
+ (0, react_1.useEffect)(function () {
1133
+ setErrorCheckMenuOpen(false);
1134
+ }, [activeCell.rowIndex, activeCell.columnIndex, sheetId]);
1135
+ var showErrorCheckMenu = (0, use_callback_ref_1.useCallbackRef)(function (targetSheetId, cell) {
1136
+ if (readonly || !getErrorCheck(targetSheetId, cell.rowIndex, cell.columnIndex)) {
1137
+ return false;
1138
+ }
1139
+ setErrorCheckMenuOpen(true);
1140
+ return true;
1141
+ });
1054
1142
  /**
1055
1143
  * Get notes. The host's `getNote` wins when provided — engines that keep
1056
1144
  * notes off the cell data (rnc serves notes over their own channel) have
@@ -1166,9 +1254,11 @@ function CanvasGridComponent(props, forwardedRef) {
1166
1254
  * as `#ЗНАЧ!`. `useEditorSubmit` canonicalizes the text again on commit.
1167
1255
  */
1168
1256
  var getEditorDisplayValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1169
- var value = getUserEnteredStringValue(sheetId, rowIndex, columnIndex);
1257
+ var _a, _b;
1258
+ // Every cell of a CSE array edits as the array's formula (Excel), not only its anchor.
1259
+ var value = (_b = (_a = getArrayFormula === null || getArrayFormula === void 0 ? void 0 : getArrayFormula(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.formula) !== null && _b !== void 0 ? _b : getUserEnteredStringValue(sheetId, rowIndex, columnIndex);
1170
1260
  return (0, utils_1.isNil)(value) ? value : (0, utils_1.localizeCellInput)(value, formulaLocale);
1171
- }, [getUserEnteredStringValue, formulaLocale]);
1261
+ }, [getUserEnteredStringValue, getArrayFormula, formulaLocale]);
1172
1262
  /**
1173
1263
  * Get cell value used for validations
1174
1264
  */
@@ -1189,11 +1279,11 @@ function CanvasGridComponent(props, forwardedRef) {
1189
1279
  * Touch support
1190
1280
  * Mainly for scrolling
1191
1281
  */
1192
- var _65 = (0, use_touch_1.useTouch)({
1282
+ var _76 = (0, use_touch_1.useTouch)({
1193
1283
  scrollTo: scrollTo,
1194
1284
  scale: scale,
1195
1285
  onChangeScale: onChangeScale,
1196
- }), onTouchStart = _65.onTouchStart, onDimensionsChange = _65.onDimensionsChange, scrollToTouchDevice = _65.scrollToTouchDevice, onAfterScrollToCell = _65.onAfterScrollToCell;
1286
+ }), onTouchStart = _76.onTouchStart, onDimensionsChange = _76.onDimensionsChange, scrollToTouchDevice = _76.scrollToTouchDevice, onAfterScrollToCell = _76.onAfterScrollToCell;
1197
1287
  /**
1198
1288
  * Conditional-formatting evaluation window: the padded, tile-quantized
1199
1289
  * viewport. The raw viewport lives in a ref (no render per scroll frame);
@@ -1201,7 +1291,7 @@ function CanvasGridComponent(props, forwardedRef) {
1201
1291
  * `startTransition` so the CF recompute is low-priority and interruptible —
1202
1292
  * scrolling never blocks on it.
1203
1293
  */
1204
- var _66 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _66[0], setCfWindow = _66[1];
1294
+ var _77 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _77[0], setCfWindow = _77[1];
1205
1295
  var cfWindowRef = (0, react_1.useRef)(null);
1206
1296
  var handleViewPortChange = (0, react_1.useCallback)(function (viewport) {
1207
1297
  onViewPortChange === null || onViewPortChange === void 0 ? void 0 : onViewPortChange(viewport);
@@ -1496,14 +1586,14 @@ function CanvasGridComponent(props, forwardedRef) {
1496
1586
  : localeTokenizerBase,
1497
1587
  });
1498
1588
  // Helper function to convert a selection to readable selection address
1499
- var _67 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
1589
+ var _78 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
1500
1590
  sheetId: sheetId,
1501
1591
  rowCount: rowCount,
1502
1592
  columnCount: columnCount,
1503
1593
  tables: tables !== null && tables !== void 0 ? tables : undefined,
1504
1594
  namedRanges: namedRanges !== null && namedRanges !== void 0 ? namedRanges : undefined,
1505
1595
  merges: merges,
1506
- }), 2), getAddressFromSelection = _67[0], getR1C1AddressFromSelection = _67[1];
1596
+ }), 2), getAddressFromSelection = _78[0], getR1C1AddressFromSelection = _78[1];
1507
1597
  /**
1508
1598
  * Exports a data region as image
1509
1599
  */
@@ -1549,7 +1639,7 @@ function CanvasGridComponent(props, forwardedRef) {
1549
1639
  * Get user entered value from a range
1550
1640
  * of cells
1551
1641
  */
1552
- var _68 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
1642
+ var _79 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
1553
1643
  sheetId: sheetId,
1554
1644
  getSelectionsFromFormula: getSelectionsFromFormula,
1555
1645
  getFormattedValue: getFormattedValue,
@@ -1558,7 +1648,7 @@ function CanvasGridComponent(props, forwardedRef) {
1558
1648
  onRequestCalculate: onRequestCalculate,
1559
1649
  getValidationSourceValue: getValidationSourceValue,
1560
1650
  resolveValidationSourceValues: resolveValidationSourceValues,
1561
- }), 3), getFormattedValuesFromAddress = _68[0], getEffectiveValuesFromRange = _68[1], getFormattedValuesFromAddressAsync = _68[2];
1651
+ }), 3), getFormattedValuesFromAddress = _79[0], getEffectiveValuesFromRange = _79[1], getFormattedValuesFromAddressAsync = _79[2];
1562
1652
  /**
1563
1653
  * The cell editor's dropdown options: same resolver, editor argument order.
1564
1654
  */
@@ -1909,7 +1999,7 @@ function CanvasGridComponent(props, forwardedRef) {
1909
1999
  * O(n)
1910
2000
  * Reduces Space Complexity by using `all`
1911
2001
  */
1912
- var _69 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
2002
+ var _80 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
1913
2003
  activeCell: activeCell,
1914
2004
  selections: selections,
1915
2005
  selectionLeftBound: selectionLeftBound,
@@ -1917,7 +2007,7 @@ function CanvasGridComponent(props, forwardedRef) {
1917
2007
  rowCount: rowCount,
1918
2008
  columnCount: columnCount,
1919
2009
  getCellBounds: getCellBounds,
1920
- }), 6), selectedRows = _69[0], selectedColumns = _69[1], selectedRowHeaders = _69[2], selectedColumnHeaders = _69[3], selectedRowHeadersIds = _69[4], selectedColumnHeadersIds = _69[5];
2010
+ }), 6), selectedRows = _80[0], selectedColumns = _80[1], selectedRowHeaders = _80[2], selectedColumnHeaders = _80[3], selectedRowHeadersIds = _80[4], selectedColumnHeadersIds = _80[5];
1921
2011
  // Named ranges for editor dropdown
1922
2012
  var getNamedRanges = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
1923
2013
  return namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (range) { return ({
@@ -1987,7 +2077,7 @@ function CanvasGridComponent(props, forwardedRef) {
1987
2077
  * user can select entire column or row when selecting
1988
2078
  * header cells
1989
2079
  */
1990
- var _70 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
2080
+ var _81 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1991
2081
  sheetId: sheetId,
1992
2082
  rowCount: rowCount,
1993
2083
  columnCount: columnCount,
@@ -2003,7 +2093,7 @@ function CanvasGridComponent(props, forwardedRef) {
2003
2093
  onChangeActiveCell: onChangeActiveCell,
2004
2094
  scrollToCell: scrollToCell,
2005
2095
  isMergedCell: isMergedCell,
2006
- }), onMouseDownInterceptor = _70.onMouseDownInterceptor, onMouseMoveInterceptor = _70.onMouseMoveInterceptor;
2096
+ }), onMouseDownInterceptor = _81.onMouseDownInterceptor, onMouseMoveInterceptor = _81.onMouseMoveInterceptor;
2007
2097
  /**
2008
2098
  * When user selections full rows
2009
2099
  * or columns, we have to ignore
@@ -2093,7 +2183,7 @@ function CanvasGridComponent(props, forwardedRef) {
2093
2183
  * Enables auto resizing
2094
2184
  * rows and columns
2095
2185
  */
2096
- var _71 = (0, use_sizer_1.useSizer)({
2186
+ var _82 = (0, use_sizer_1.useSizer)({
2097
2187
  frozenRows: frozenRows,
2098
2188
  frozenColumns: frozenColumns,
2099
2189
  scale: scale,
@@ -2120,7 +2210,7 @@ function CanvasGridComponent(props, forwardedRef) {
2120
2210
  fontSize: defaultFontSize,
2121
2211
  lineHeightMode: lineHeightMode,
2122
2212
  resizeStrategy: "full",
2123
- }), getColumnWidth = _71.getColumnWidth, getRowHeight = _71.getRowHeight, getCellDimensions = _71.getCellDimensions, getCellDimensionsStable = _71.getCellDimensionsStable, getTextDimension = _71.getTextDimension;
2213
+ }), getColumnWidth = _82.getColumnWidth, getRowHeight = _82.getRowHeight, getCellDimensions = _82.getCellDimensions, getCellDimensionsStable = _82.getCellDimensionsStable, getTextDimension = _82.getTextDimension;
2124
2214
  /**
2125
2215
  * Called when user tries to
2126
2216
  * autofit a column or row
@@ -2147,6 +2237,20 @@ function CanvasGridComponent(props, forwardedRef) {
2147
2237
  }
2148
2238
  return ((_a = (0, grid_2.getOwnerDocument)(editorElement)) === null || _a === void 0 ? void 0 : _a.activeElement) === editorElement;
2149
2239
  }, [cellEditorInstance]);
2240
+ /**
2241
+ * The text entries of `cell`'s column block, for AutoComplete and Pick From
2242
+ * Drop-down List.
2243
+ */
2244
+ var getColumnEntries = (0, use_callback_ref_1.useCallbackRef)(function (targetSheetId, cell) {
2245
+ var _a;
2246
+ return (0, autocomplete_1.getColumnAutoCompleteEntries)({
2247
+ rowIndex: cell.rowIndex,
2248
+ maxRowIndex: (_a = getSheetRowCount === null || getSheetRowCount === void 0 ? void 0 : getSheetRowCount(targetSheetId)) !== null && _a !== void 0 ? _a : rowCount,
2249
+ getCell: function (r) {
2250
+ return (0, autocomplete_1.toAutoCompleteCell)(getUserEnteredValue(targetSheetId, r, cell.columnIndex));
2251
+ },
2252
+ });
2253
+ });
2150
2254
  /**
2151
2255
  * Get Cell Editor
2152
2256
  */
@@ -2162,8 +2266,12 @@ function CanvasGridComponent(props, forwardedRef) {
2162
2266
  var editingSheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(editingSheetId);
2163
2267
  var effectiveValue = getEffectiveValue(editingSheetId, rowIndex, columnIndex);
2164
2268
  var horizontalAlignment = getEditorHorizontalAlignment(editingSheetId, rowIndex, columnIndex);
2165
- return (react_1.default.createElement(CellEditor, tslib_1.__assign({}, props, { locale: locale, effectiveValue: effectiveValue, format: cellFormat, dataValidation: dataValidation, getRangeValues: getFormattedValuesFromAddress, getRangeValuesAsync: getEditorRangeValuesAsync, scale: scale, sheetName: sheetName, editingSheetId: editingSheetId, sheetId: sheetId, editingSheetName: editingSheetName, address: address, theme: theme, tokenizer: localeTokenizer, formulaLocale: formulaLocale, horizontalAlignment: horizontalAlignment, defaultBackgroundColor: cellBackgroundColor, defaultTextColor: (0, themes_1.getStringifiedColor)(cellColor, theme), functionDescriptions: localizedFunctionDescriptions, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getStructuredProperties: getStructuredProperties, getTableColumnNames: getTableColumnNames, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, onShowFormulaHelp: onShowFormulaHelp, onRequestCalculate: onRequestCalculate, SuggestionsDropdown: SuggestionsDropdown, stickyEditor: stickyEditor, defaultFontSizePoint: defaultFontSize, getMentions: getMentions, getFunctionParameterSuggestions: getFunctionParameterSuggestions, shouldFetchFunctionParameters: shouldFetchFunctionParameters, MentionTagComponent: MentionTagComponent, MentionDropdownItemComponent: MentionDropdownItemComponent })));
2269
+ return (react_1.default.createElement(CellEditor, tslib_1.__assign({}, props, { locale: locale, effectiveValue: effectiveValue, format: cellFormat, dataValidation: dataValidation, getRangeValues: getFormattedValuesFromAddress, getRangeValuesAsync: getEditorRangeValuesAsync, scale: scale, sheetName: sheetName, editingSheetId: editingSheetId, sheetId: sheetId, editingSheetName: editingSheetName, address: address, theme: theme, tokenizer: localeTokenizer, formulaLocale: formulaLocale, horizontalAlignment: horizontalAlignment, defaultBackgroundColor: cellBackgroundColor, defaultTextColor: (0, themes_1.getStringifiedColor)(cellColor, theme), functionDescriptions: localizedFunctionDescriptions, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getStructuredProperties: getStructuredProperties, getTableColumnNames: getTableColumnNames, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, onShowFormulaHelp: onShowFormulaHelp, onRequestCalculate: onRequestCalculate, SuggestionsDropdown: SuggestionsDropdown, stickyEditor: stickyEditor, defaultFontSizePoint: defaultFontSize, getMentions: getMentions, getFunctionParameterSuggestions: getFunctionParameterSuggestions, shouldFetchFunctionParameters: shouldFetchFunctionParameters, MentionTagComponent: MentionTagComponent, MentionDropdownItemComponent: MentionDropdownItemComponent, getAutoCompleteEntries: enableAutoComplete
2270
+ ? function () { return getColumnEntries(editingSheetId, cell); }
2271
+ : undefined })));
2166
2272
  }, [
2273
+ enableAutoComplete,
2274
+ getColumnEntries,
2167
2275
  scale,
2168
2276
  getEffectiveCellFormat,
2169
2277
  getDataValidationRule,
@@ -2200,7 +2308,7 @@ function CanvasGridComponent(props, forwardedRef) {
2200
2308
  /**
2201
2309
  * Popover cell
2202
2310
  */
2203
- var _72 = (0, use_cell_popover_1.useCellPopover)({
2311
+ var _83 = (0, use_cell_popover_1.useCellPopover)({
2204
2312
  sheetId: sheetId,
2205
2313
  getCellPopoverContent: getCellPopoverContent !== null && getCellPopoverContent !== void 0 ? getCellPopoverContent : getFormattedValue,
2206
2314
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -2208,7 +2316,7 @@ function CanvasGridComponent(props, forwardedRef) {
2208
2316
  isFrozenColumn: isFrozenColumn,
2209
2317
  isFrozenRow: isFrozenRow,
2210
2318
  onChangeActiveSheet: onChangeActiveSheet,
2211
- }), popoverComponent = _72.popoverComponent, popoverRange = _72.popoverRange, showCellPopover = _72.showCellPopover, hideCellPopover = _72.hideCellPopover;
2319
+ }), popoverComponent = _83.popoverComponent, popoverRange = _83.popoverRange, showCellPopover = _83.showCellPopover, hideCellPopover = _83.hideCellPopover;
2212
2320
  /**
2213
2321
  * Get tooltip component of a cell
2214
2322
  * Only error, invalid values are
@@ -2632,10 +2740,32 @@ function CanvasGridComponent(props, forwardedRef) {
2632
2740
  var handleFillShrink = (0, react_1.useCallback)(function (sheetId, activeCell, clearRange, options) {
2633
2741
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(sheetId, activeCell, [{ range: clearRange }], (options === null || options === void 0 ? void 0 : options.modifier) === "toggle" ? "all" : "contents");
2634
2742
  }, [onDelete]);
2743
+ /**
2744
+ * Copy gestures of the selection border (Ctrl/⌥+drag, Ctrl+Shift/⌥⇧+drag, right-drag menu),
2745
+ * through the host's own copy → paste on a private clipboard.
2746
+ */
2747
+ var selectionDragCopy = (0, use_selection_drag_copy_1.useSelectionDragCopy)({
2748
+ sheetId: sheetId,
2749
+ readonly: readonly,
2750
+ onCopy: onCopy,
2751
+ onPaste: onPaste,
2752
+ onChangeBatch: onChangeBatch,
2753
+ onMoveSelection: onMoveSelection,
2754
+ onInsertCutCells: onInsertCutCells,
2755
+ onInsertCopiedCells: onInsertCopiedCells,
2756
+ confirmOverwrite: confirmMoveOverwrite,
2757
+ getValue: getUserEnteredStringValue,
2758
+ onChangeSelections: onSelectionChange,
2759
+ onChangeActiveCell: onChangeActiveCell,
2760
+ focusSheet: focusSheet,
2761
+ });
2762
+ var copySelectionDrop = selectionDragCopy.copySelection, insertCopyDrop = selectionDragCopy.insertCopiedCells;
2763
+ var handleCopySelectionDrop = (0, react_1.useCallback)(function (_sheetId, from, to) { return copySelectionDrop(from, to); }, [copySelectionDrop]);
2764
+ var handleInsertCopyDrop = (0, react_1.useCallback)(function (_sheetId, from, to) { return insertCopyDrop(from, to); }, [insertCopyDrop]);
2635
2765
  /**
2636
2766
  * Handle grid selections
2637
2767
  */
2638
- var _73 = (0, use_selection_1.useSelection)({
2768
+ var _84 = (0, use_selection_1.useSelection)({
2639
2769
  sheetId: sheetId,
2640
2770
  getDataRowCount: getDataRowCount,
2641
2771
  getDataRegion: getDataRegion,
@@ -2643,6 +2773,7 @@ function CanvasGridComponent(props, forwardedRef) {
2643
2773
  allowDeselectSelection: false,
2644
2774
  formulaMode: formulaMode,
2645
2775
  enableSelectOnEnterKey: !enableEditOnEnterKey,
2776
+ enterKeyDirection: enterKeyDirection,
2646
2777
  newSelectionMode: formulaMode && canSelectCells ? selectionMode : "clear",
2647
2778
  activeCell: activeCell,
2648
2779
  selections: selections,
@@ -2670,6 +2801,9 @@ function CanvasGridComponent(props, forwardedRef) {
2670
2801
  onFillShrink: readonly ? undefined : handleFillShrink,
2671
2802
  onMoveSelection: readonly ? undefined : onMoveSelection,
2672
2803
  onInsertCutCells: onInsertCutCells,
2804
+ onCopySelection: readonly ? undefined : handleCopySelectionDrop,
2805
+ onInsertCopiedCells: readonly || !onInsertCopiedCells ? undefined : handleInsertCopyDrop,
2806
+ onSelectionDragMenu: readonly ? undefined : selectionDragCopy.openDropMenu,
2673
2807
  confirmMoveOverwrite: confirmMoveOverwrite,
2674
2808
  isHiddenColumn: isHiddenColumn,
2675
2809
  isHiddenRow: isHiddenRow,
@@ -2679,11 +2813,12 @@ function CanvasGridComponent(props, forwardedRef) {
2679
2813
  dataRegionBoundaries: dataRegionBoundaries,
2680
2814
  tables: tables,
2681
2815
  onInsertTableRow: onInsertTableRow,
2682
- }), onMouseDownSelection = _73.onMouseDown, onPointerDownSelection = _73.onPointerDown, onKeyDownSelection = _73.onKeyDown, fillSelection = _73.fillSelection, fillShrink = _73.fillShrink, onFillHandleMouseDown = _73.onFillHandleMouseDown, onFillHandleDoubleClick = _73.onFillHandleDoubleClick, isDragging = _73.isDragging, isFilling = _73.isFilling, isSelectionInProgress = _73.isSelectionInProgress, draggedSelection = _73.draggedSelection, onSelectionMouseDown = _73.onSelectionMouseDown, setActiveCell = _73.setActiveCell, initialDraggedSelection = _73.initialDraggedSelection, updateSelectionStartEndReference = _73.updateSelectionStartEndReference, selectColumn = _73.selectColumn, getContentfulGridRangeAroundCell = _73.getContentfulGridRangeAroundCell, newSelection = _73.newSelection, modifySelection = _73.modifySelection, clearSelections = _73.clearSelections;
2816
+ isRangeSelectable: getSheetProtection ? isRangeSelectable : undefined,
2817
+ }), onMouseDownSelection = _84.onMouseDown, onPointerDownSelection = _84.onPointerDown, onKeyDownSelection = _84.onKeyDown, fillSelection = _84.fillSelection, fillShrink = _84.fillShrink, onFillHandleMouseDown = _84.onFillHandleMouseDown, onFillHandleDoubleClick = _84.onFillHandleDoubleClick, isDragging = _84.isDragging, isDragCopy = _84.isDragCopy, isFilling = _84.isFilling, isSelectionInProgress = _84.isSelectionInProgress, draggedSelection = _84.draggedSelection, onSelectionMouseDown = _84.onSelectionMouseDown, setActiveCell = _84.setActiveCell, initialDraggedSelection = _84.initialDraggedSelection, updateSelectionStartEndReference = _84.updateSelectionStartEndReference, selectColumn = _84.selectColumn, getContentfulGridRangeAroundCell = _84.getContentfulGridRangeAroundCell, newSelection = _84.newSelection, modifySelection = _84.modifySelection, clearSelections = _84.clearSelections;
2683
2818
  /**
2684
2819
  * Copy, Paste and Cut hook
2685
2820
  */
2686
- var _74 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2821
+ var _85 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2687
2822
  activeCell: activeCell,
2688
2823
  selections: selections,
2689
2824
  sheetId: sheetId,
@@ -2692,7 +2827,8 @@ function CanvasGridComponent(props, forwardedRef) {
2692
2827
  onPaste: onPaste,
2693
2828
  onCopy: onCopy,
2694
2829
  onCut: onCut,
2695
- }), copiedSelections = _74.copiedSelections, isCutPending = _74.isCutPending, copiedSheetId = _74.copiedSheetId, cancelCut = _74.cancelCut, clearCopiedSelections = _74.clearCopiedSelections, copy = _74.copy, cut = _74.cut, paste = _74.paste, onInternalCopy = _74.onInternalCopy, onInternalCut = _74.onInternalCut, onInternalPaste = _74.onInternalPaste;
2830
+ onReapplyPaste: onReapplyPaste,
2831
+ }), copiedSelections = _85.copiedSelections, isCutPending = _85.isCutPending, copiedSheetId = _85.copiedSheetId, cancelCut = _85.cancelCut, clearCopiedSelections = _85.clearCopiedSelections, copy = _85.copy, cut = _85.cut, paste = _85.paste, onInternalCopy = _85.onInternalCopy, onInternalCut = _85.onInternalCut, onInternalPaste = _85.onInternalPaste, choosePasteOption = _85.choosePasteOption;
2696
2832
  /**
2697
2833
  * Ctrl+C / Ctrl+X / Ctrl+V / Ctrl+D on a selected chart. The focused chart is
2698
2834
  * the target of those events (see `EmbedDraggable`); a paste that lands in the
@@ -2937,6 +3073,11 @@ function CanvasGridComponent(props, forwardedRef) {
2937
3073
  onChangeBatch: onChangeBatch,
2938
3074
  batchHistory: batchHistory,
2939
3075
  formulaLocale: formulaLocale,
3076
+ onChangeArrayFormula: onChangeArrayFormula,
3077
+ getArrayFormula: getArrayFormula,
3078
+ getEffectiveFormat: getEffectiveFormat,
3079
+ onChangeFormatting: onChangeFormatting,
3080
+ autoCorrect: autoCorrect,
2940
3081
  });
2941
3082
  /**
2942
3083
  * User cancels editing the cell
@@ -3036,9 +3177,19 @@ function CanvasGridComponent(props, forwardedRef) {
3036
3177
  return true;
3037
3178
  }
3038
3179
  var type = (_b = (_a = getDataValidationRule(targetSheetId, cell.rowIndex, cell.columnIndex)) === null || _a === void 0 ? void 0 : _a.condition) === null || _b === void 0 ? void 0 : _b.type;
3039
- if (type !== "ONE_OF_LIST" && type !== "ONE_OF_RANGE") {
3180
+ if (type === "ONE_OF_LIST" || type === "ONE_OF_RANGE") {
3181
+ editCell(targetSheetId, cell);
3182
+ return true;
3183
+ }
3184
+ // Excel's Pick From Drop-down List: the column block's text entries.
3185
+ if (readonly || !canEditCell(targetSheetId, cell)) {
3186
+ return false;
3187
+ }
3188
+ var entries = (0, autocomplete_1.getPickListEntries)(getColumnEntries(targetSheetId, cell));
3189
+ if (!entries.length) {
3040
3190
  return false;
3041
3191
  }
3192
+ setPickList({ sheetId: targetSheetId, cell: cell, entries: entries });
3042
3193
  editCell(targetSheetId, cell);
3043
3194
  return true;
3044
3195
  });
@@ -3051,7 +3202,7 @@ function CanvasGridComponent(props, forwardedRef) {
3051
3202
  onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(targetSheetId, [{ range: range }]);
3052
3203
  }, [setActiveCell, onChangeSelections]);
3053
3204
  // Excel's table hit zones (header top edge / corner / row left edge).
3054
- var _75 = (0, use_table_hit_zones_1.useTableHitZones)({
3205
+ var _86 = (0, use_table_hit_zones_1.useTableHitZones)({
3055
3206
  sheetId: sheetId,
3056
3207
  tables: activeTables,
3057
3208
  selections: selections,
@@ -3062,7 +3213,7 @@ function CanvasGridComponent(props, forwardedRef) {
3062
3213
  getCellOffsetFromCoords: getCellOffsetFromCoords,
3063
3214
  getScrollPosition: getScrollPosition,
3064
3215
  onSelectRange: selectRangeFromMenu,
3065
- }), tableHitCursor = _75.cursor, onMouseMoveTableHitZones = _75.onMouseMove, onMouseDownTableHitZones = _75.onMouseDown, clearTableHitZone = _75.clearHitZone;
3216
+ }), tableHitCursor = _86.cursor, onMouseMoveTableHitZones = _86.onMouseMove, onMouseDownTableHitZones = _86.onMouseDown, clearTableHitZone = _86.clearHitZone;
3066
3217
  /**
3067
3218
  * Get context Menu component
3068
3219
  */
@@ -3164,7 +3315,7 @@ function CanvasGridComponent(props, forwardedRef) {
3164
3315
  * Displays Context menu when user right clicks
3165
3316
  * the grid
3166
3317
  */
3167
- var _76 = (0, use_context_menu_1.useContextMenu)({
3318
+ var _87 = (0, use_context_menu_1.useContextMenu)({
3168
3319
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3169
3320
  getRelativePositionFromOffset: getRelativePositionFromOffset,
3170
3321
  isRowHeader: isRowHeader,
@@ -3173,7 +3324,7 @@ function CanvasGridComponent(props, forwardedRef) {
3173
3324
  getCellOffsetFromCoords: getCellOffsetFromCoords,
3174
3325
  getScrollPosition: getScrollPosition,
3175
3326
  ContextMenuWrapper: ContextMenuWrapper,
3176
- }), onContextMenu = _76.onContextMenu, contextMenuComponent = _76.contextMenuComponent, onRequestCloseContextMenu = _76.onRequestClose, showContextMenu = _76.showContextMenu;
3327
+ }), onContextMenu = _87.onContextMenu, contextMenuComponent = _87.contextMenuComponent, onRequestCloseContextMenu = _87.onRequestClose, showContextMenu = _87.showContextMenu;
3177
3328
  /**
3178
3329
  * Shortcut handlers for formatting
3179
3330
  * TODO: Decide on the output
@@ -3206,6 +3357,7 @@ function CanvasGridComponent(props, forwardedRef) {
3206
3357
  onRequestPasteSpecial: requestPasteSpecial,
3207
3358
  onRequestEditCell: requestEditCell,
3208
3359
  onShowCellList: showCellList,
3360
+ onShowErrorCheckMenu: showErrorCheckMenu,
3209
3361
  onChangeBatch: onChangeBatch,
3210
3362
  getUserEnteredValue: getUserEnteredStringValue,
3211
3363
  getEffectiveValue: getEffectiveValue,
@@ -3256,7 +3408,7 @@ function CanvasGridComponent(props, forwardedRef) {
3256
3408
  /**
3257
3409
  * Allow grid to be ediable
3258
3410
  */
3259
- var _77 = (0, use_editable_1.useEditable)({
3411
+ var _88 = (0, use_editable_1.useEditable)({
3260
3412
  sheetId: sheetId,
3261
3413
  enableEditOnEnterKey: enableEditOnEnterKey,
3262
3414
  keymap: keymap,
@@ -3312,11 +3464,71 @@ function CanvasGridComponent(props, forwardedRef) {
3312
3464
  onCut: handleEditorCut,
3313
3465
  tables: tables,
3314
3466
  onInsertTableRow: onInsertTableRow,
3315
- }), onMouseDownEditable = _77.onMouseDown, onDoubleClickEditable = _77.onDoubleClick, editorComponent = _77.editorComponent, isEditInProgress = _77.isEditInProgress, makeEditable = _77.makeEditable, editCell = _77.editCell, setEditorValue = _77.setEditorValue, hideEditor = _77.hideEditor, getNextFocusableCell = _77.getNextFocusableCell, submitEditor = _77.submitEditor, cancelEditor = _77.cancelEditor, commit = _77.commit, onKeyDownEditable = _77.onKeyDown;
3467
+ }), onMouseDownEditable = _88.onMouseDown, onDoubleClickEditable = _88.onDoubleClick, editorComponent = _88.editorComponent, isEditInProgress = _88.isEditInProgress, makeEditable = _88.makeEditable, editCell = _88.editCell, setEditorValue = _88.setEditorValue, hideEditor = _88.hideEditor, getNextFocusableCell = _88.getNextFocusableCell, submitEditor = _88.submitEditor, cancelEditor = _88.cancelEditor, commit = _88.commit, onKeyDownEditable = _88.onKeyDown;
3468
+ /**
3469
+ * Excel's error-checking smart tag on the active cell. Convert to Number and Ignore Error act on
3470
+ * every selected cell, as in Excel: Convert to Number rewrites each number stored as text as its
3471
+ * number in ONE undo step; Ignore Error records the selection in the sheet's `ignoredErrors`
3472
+ * (xlsx `<ignoredErrors>`), so the flag stays off after a save and reopen.
3473
+ */
3474
+ var formulaBarEditor = (0, jotai_1.useAtomValue)(formula_bar_editor_value_atom_1.formulaBarEditorInstanceAtom);
3475
+ var activeErrorCheck = !readonly
3476
+ ? getErrorCheck(sheetId, activeCell.rowIndex, activeCell.columnIndex)
3477
+ : undefined;
3478
+ var activeErrorName = activeErrorCheck === "evalError"
3479
+ ? (_f = (_e = getErrorValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : getFormattedValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)
3480
+ : undefined;
3481
+ var activeErrorCheckTag = (0, react_1.useMemo)(function () {
3482
+ return activeErrorCheck
3483
+ ? { kind: activeErrorCheck, errorName: activeErrorName }
3484
+ : undefined;
3485
+ }, [activeErrorCheck, activeErrorName]);
3486
+ var handleChooseErrorCheckOption = (0, use_callback_ref_1.useCallbackRef)(function (option) {
3487
+ var _a, _b;
3488
+ setErrorCheckMenuOpen(false);
3489
+ var kind = activeErrorCheck;
3490
+ if (!kind)
3491
+ return;
3492
+ var ranges = selections.length
3493
+ ? selections.map(function (selection) { return selection.range; })
3494
+ : [
3495
+ {
3496
+ startRowIndex: activeCell.rowIndex,
3497
+ endRowIndex: activeCell.rowIndex,
3498
+ startColumnIndex: activeCell.columnIndex,
3499
+ endColumnIndex: activeCell.columnIndex,
3500
+ },
3501
+ ];
3502
+ (0, error_checking_1.runErrorCheckOption)(option, {
3503
+ sheetId: sheetId,
3504
+ kind: kind,
3505
+ errorName: activeErrorName,
3506
+ ranges: ranges,
3507
+ getUserEnteredValue: function (rowIndex, columnIndex) {
3508
+ return getUserEnteredValue(sheetId, rowIndex, columnIndex);
3509
+ },
3510
+ maxRow: (_a = getDataRowCount === null || getDataRowCount === void 0 ? void 0 : getDataRowCount(sheetId)) !== null && _a !== void 0 ? _a : Number.MAX_SAFE_INTEGER,
3511
+ maxColumn: (_b = getDataColumnCount === null || getDataColumnCount === void 0 ? void 0 : getDataColumnCount(sheetId)) !== null && _b !== void 0 ? _b : Number.MAX_SAFE_INTEGER,
3512
+ getIgnoredErrors: getIgnoredErrors,
3513
+ onChangeBatch: onChangeBatch,
3514
+ batchHistory: batchHistory,
3515
+ onUpdateSheet: onUpdateSheet,
3516
+ editInFormulaBar: function () {
3517
+ if (formulaBarEditor)
3518
+ formulaBarEditor.focus();
3519
+ else
3520
+ makeEditable(sheetId, activeCell);
3521
+ },
3522
+ openUrl: function (url) { return window.open(url, "_blank", "noopener"); },
3523
+ });
3524
+ if (option === "editInFormulaBar")
3525
+ return;
3526
+ focusSheet();
3527
+ });
3316
3528
  /**
3317
3529
  * Move rows and columns
3318
3530
  */
3319
- var _78 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
3531
+ var _89 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
3320
3532
  getCellOffsetFromCoords: getCellOffsetFromCoords,
3321
3533
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3322
3534
  getRelativePositionFromOffset: getRelativePositionFromOffset,
@@ -3339,11 +3551,11 @@ function CanvasGridComponent(props, forwardedRef) {
3339
3551
  sheetId: sheetId,
3340
3552
  disabled: isRestricted,
3341
3553
  HeaderMoveDragComponent: HeaderMoveDragComponent,
3342
- }), draggableColumns = _78.draggableColumns, draggableRows = _78.draggableRows, isDraggingRowsAndColumns = _78.isDragging;
3554
+ }), draggableColumns = _89.draggableColumns, draggableRows = _89.draggableRows, isDraggingRowsAndColumns = _89.isDragging;
3343
3555
  /**
3344
3556
  * Header actions
3345
3557
  */
3346
- var _79 = (0, use_header_actions_1.useHeaderActions)({
3558
+ var _90 = (0, use_header_actions_1.useHeaderActions)({
3347
3559
  activeCell: isSelectionInProgress || isFilling || isDragging ? null : hoveredCell,
3348
3560
  getScrollPosition: getScrollPosition,
3349
3561
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -3371,7 +3583,7 @@ function CanvasGridComponent(props, forwardedRef) {
3371
3583
  selectedRowHeadersIds: selectedRowHeadersIds,
3372
3584
  selectedColumnHeadersIds: selectedColumnHeadersIds,
3373
3585
  enableResizerOverflow: enableResizerOverflow,
3374
- }), headerMenuComponent = _79.headerMenuComponent, isHeaderMenuInFrozenColumn = _79.isHeaderMenuInFrozenColumn, headerResizer = _79.headerResizer, isDraggingHeader = _79.isDragging;
3586
+ }), headerMenuComponent = _90.headerMenuComponent, isHeaderMenuInFrozenColumn = _90.isHeaderMenuInFrozenColumn, headerResizer = _90.headerResizer, isDraggingHeader = _90.isDragging;
3375
3587
  /**
3376
3588
  * Close tooltip
3377
3589
  */
@@ -3413,7 +3625,7 @@ function CanvasGridComponent(props, forwardedRef) {
3413
3625
  /**
3414
3626
  * Show basicFilter panels
3415
3627
  */
3416
- var _80 = (0, use_filter_1.useFilter)({
3628
+ var _91 = (0, use_filter_1.useFilter)({
3417
3629
  sheetId: sheetId,
3418
3630
  scale: scale,
3419
3631
  theme: theme,
@@ -3438,9 +3650,9 @@ function CanvasGridComponent(props, forwardedRef) {
3438
3650
  // Live filter state so the open popup tracks Auto-apply spec changes.
3439
3651
  basicFilter: basicFilter,
3440
3652
  tables: activeTables,
3441
- }), showFilter = _80.showFilter, hideFilter = _80.hideFilter, filterComponent = _80.filterComponent;
3653
+ }), showFilter = _91.showFilter, hideFilter = _91.hideFilter, filterComponent = _91.filterComponent;
3442
3654
  // Table resize
3443
- var _81 = (0, use_table_resizer_1.useTableResizer)({
3655
+ var _92 = (0, use_table_resizer_1.useTableResizer)({
3444
3656
  sheetId: sheetId,
3445
3657
  tables: tables !== null && tables !== void 0 ? tables : undefined,
3446
3658
  theme: theme,
@@ -3451,11 +3663,11 @@ function CanvasGridComponent(props, forwardedRef) {
3451
3663
  scrollToCell: scrollToCell,
3452
3664
  onResizeTable: onResizeTable,
3453
3665
  focusSheet: focusSheet,
3454
- }), tableResizers = _81.tableResizers, isResizingTable = _81.isResizingTable;
3666
+ }), tableResizers = _92.tableResizers, isResizingTable = _92.isResizingTable;
3455
3667
  /**
3456
3668
  * Displays resizable/draggable charts
3457
3669
  */
3458
- var _82 = (0, use_embeds_charts_1.useEmbedsCharts)({
3670
+ var _93 = (0, use_embeds_charts_1.useEmbedsCharts)({
3459
3671
  charts: charts,
3460
3672
  embeds: embeds,
3461
3673
  slicers: slicers,
@@ -3499,7 +3711,7 @@ function CanvasGridComponent(props, forwardedRef) {
3499
3711
  backgroundColor: cellBackgroundColor,
3500
3712
  disabled: isRestricted,
3501
3713
  readonly: readonly,
3502
- }), chartComponents = _82.chartComponents, embedComponents = _82.embedComponents, slicerComponents = _82.slicerComponents, embedContextMenuComponent = _82.contextMenuComponent, onMouseDownCharts = _82.onMouseDown, requestChartContextMenu = _82.requestChartContextMenu;
3714
+ }), chartComponents = _93.chartComponents, embedComponents = _93.embedComponents, slicerComponents = _93.slicerComponents, embedContextMenuComponent = _93.contextMenuComponent, onMouseDownCharts = _93.onMouseDown, requestChartContextMenu = _93.requestChartContextMenu;
3503
3715
  /**
3504
3716
  * The basic filter or table whose range holds a cell
3505
3717
  */
@@ -3574,7 +3786,7 @@ function CanvasGridComponent(props, forwardedRef) {
3574
3786
  * The totals-function picker a totals cell's in-cell arrow opens (Excel):
3575
3787
  * anchored at the cell's bottom-right corner like the filter dropdown.
3576
3788
  */
3577
- var _83 = tslib_1.__read((0, react_1.useState)(null), 2), totalsPicker = _83[0], setTotalsPicker = _83[1];
3789
+ var _94 = tslib_1.__read((0, react_1.useState)(null), 2), totalsPicker = _94[0], setTotalsPicker = _94[1];
3578
3790
  var closeTotalsPicker = (0, react_1.useCallback)(function () { return setTotalsPicker(null); }, []);
3579
3791
  var handleTotalsArrowClick = (0, react_1.useCallback)(function (cell) {
3580
3792
  var table = activeTables === null || activeTables === void 0 ? void 0 : activeTables.find(function (candidate) {
@@ -3968,7 +4180,7 @@ function CanvasGridComponent(props, forwardedRef) {
3968
4180
  /**
3969
4181
  * Render Cells in the grid
3970
4182
  */
3971
- var _84 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
4183
+ var _95 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
3972
4184
  sheetId: sheetId,
3973
4185
  isTableTotalsCell: isTableTotalsCell,
3974
4186
  onTotalsArrowClick: handleTotalsArrowClick,
@@ -4038,12 +4250,14 @@ function CanvasGridComponent(props, forwardedRef) {
4038
4250
  gridLineWidth: gridLineWidth,
4039
4251
  showNotes: showNotes,
4040
4252
  showComments: showComments,
4253
+ getErrorCheck: getErrorCheck,
4254
+ circleInvalidData: circleInvalidData,
4041
4255
  StructuredResult: StructuredResult,
4042
4256
  readonly: readonly,
4043
4257
  onOverflow: handleOverflow,
4044
4258
  isComparing: isComparing,
4045
4259
  getCellDiff: getCellDiff,
4046
- }), 5), cellBackgroundRenderer = _84[0], cellRenderer = _84[1], cellOverlayRenderer = _84[2], headerCellRenderer = _84[3], cellBackgroundsRenderer = _84[4];
4260
+ }), 5), cellBackgroundRenderer = _95[0], cellRenderer = _95[1], cellOverlayRenderer = _95[2], headerCellRenderer = _95[3], cellBackgroundsRenderer = _95[4];
4047
4261
  /**
4048
4262
  * When user selects a selection for moving
4049
4263
  * If its a table, we select the entire column
@@ -4079,16 +4293,16 @@ function CanvasGridComponent(props, forwardedRef) {
4079
4293
  tokenizer: localeTokenizer,
4080
4294
  });
4081
4295
  // Selection move: drag a formula reference via its border covers
4082
- var _85 = (0, use_selection_move_1.useSelectionMove)({
4296
+ var _96 = (0, use_selection_move_1.useSelectionMove)({
4083
4297
  getCellCoordsFromOffset: getCellCoordsFromOffset,
4084
4298
  scrollToCell: scrollToCell,
4085
4299
  tokenizer: localeTokenizer,
4086
- }), onMouseDownMoveSelection = _85.onMouseDownMoveSelection, isDraggingMoveSelection = _85.isDragging;
4300
+ }), onMouseDownMoveSelection = _96.onMouseDownMoveSelection, isDraggingMoveSelection = _96.isDragging;
4087
4301
  /**
4088
4302
  * Selected chart: outline its source ranges on this sheet and re-bind
4089
4303
  * them when a corner handle is dragged (Excel's chart data highlight).
4090
4304
  */
4091
- var _86 = (0, use_chart_source_ranges_1.useChartSourceRanges)({
4305
+ var _97 = (0, use_chart_source_ranges_1.useChartSourceRanges)({
4092
4306
  charts: charts,
4093
4307
  sheetId: sheetId,
4094
4308
  getSheetName: getSheetName,
@@ -4097,7 +4311,7 @@ function CanvasGridComponent(props, forwardedRef) {
4097
4311
  getCellBounds: getCellBounds,
4098
4312
  getCellCoordsFromOffset: getCellCoordsFromOffset,
4099
4313
  scrollToCell: scrollToCell,
4100
- }), chartSourceBorderStyles = _86.chartSourceBorderStyles, onMouseDownChartSourceResizeHandle = _86.onMouseDownChartSourceResizeHandle;
4314
+ }), chartSourceBorderStyles = _97.chartSourceBorderStyles, onMouseDownChartSourceResizeHandle = _97.onMouseDownChartSourceResizeHandle;
4101
4315
  /**
4102
4316
  * Hide fill handle
4103
4317
  * 1. When user is in edit mode
@@ -4112,9 +4326,9 @@ function CanvasGridComponent(props, forwardedRef) {
4112
4326
  /**
4113
4327
  * Flashing
4114
4328
  */
4115
- var _87 = (0, use_flash_1.useFlash)({
4329
+ var _98 = (0, use_flash_1.useFlash)({
4116
4330
  theme: theme,
4117
- }), flash = _87.flash, mark = _87.mark, unmark = _87.unmark, onFlashEnd = _87.onFlashEnd, flashingBorders = _87.flashingBorders;
4331
+ }), flash = _98.flash, mark = _98.mark, unmark = _98.unmark, onFlashEnd = _98.onFlashEnd, flashingBorders = _98.flashingBorders;
4118
4332
  // Cache hover ids
4119
4333
  var cachedHoveredSelectionIds = (0, use_hovered_selection_ids_1.useHoveredSelectionIds)({
4120
4334
  selections: selections,
@@ -4160,6 +4374,7 @@ function CanvasGridComponent(props, forwardedRef) {
4160
4374
  SuggestionAction: SuggestionAction,
4161
4375
  readonly: readonly,
4162
4376
  onSplitTextToColumns: onSplitTextToColumns,
4377
+ onChoosePasteOption: onReapplyPaste ? choosePasteOption : undefined,
4163
4378
  showPasteMenu: showPasteMenu,
4164
4379
  fillOptions: fillOptions,
4165
4380
  onChooseFillType: handleChooseFillType,
@@ -4173,6 +4388,10 @@ function CanvasGridComponent(props, forwardedRef) {
4173
4388
  calculatedColumnFill: calculatedColumnFill,
4174
4389
  canStopAutoCalculatedColumns: !!onChangeAutoCalculatedColumns,
4175
4390
  onChooseCalculatedColumnOption: handleChooseCalculatedColumnOption,
4391
+ errorCheck: activeErrorCheckTag,
4392
+ errorCheckMenuOpen: errorCheckMenuOpen,
4393
+ onErrorCheckMenuOpenChange: setErrorCheckMenuOpen,
4394
+ onChooseErrorCheckOption: handleChooseErrorCheckOption,
4176
4395
  hoveredCell: delayedHoveredCell,
4177
4396
  onRemoveQuickEdit: onRemoveQuickEdit,
4178
4397
  onAddQuickEdit: onAddQuickEdit,
@@ -4216,7 +4435,7 @@ function CanvasGridComponent(props, forwardedRef) {
4216
4435
  ? tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(pageBreakBorderStyles), false), tslib_1.__read(finalBorderStyles), false), tslib_1.__read(chartSourceBorderStyles), false) : finalBorderStyles;
4217
4436
  }, [finalBorderStyles, chartSourceBorderStyles, pageBreakBorderStyles]);
4218
4437
  // Hidden column markers
4219
- var _88 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
4438
+ var _99 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
4220
4439
  sheetId: sheetId,
4221
4440
  columnMetadata: columnMetadata,
4222
4441
  rowMetadata: rowMetadata,
@@ -4229,7 +4448,7 @@ function CanvasGridComponent(props, forwardedRef) {
4229
4448
  columnCount: columnCount,
4230
4449
  HiddenRowMarkers: HiddenRowMarkers,
4231
4450
  HiddenColumnMarkers: HiddenColumnMarkers,
4232
- }), 4), hiddenColumnMarkers = _88[0], frozenHiddenColumnMarkers = _88[1], hiddenRowMarkers = _88[2], frozenHiddenRowMarkers = _88[3];
4451
+ }), 4), hiddenColumnMarkers = _99[0], frozenHiddenColumnMarkers = _99[1], hiddenRowMarkers = _99[2], frozenHiddenRowMarkers = _99[3];
4233
4452
  // Zoom lister
4234
4453
  var onMouseWheel = (0, use_scale_listener_1.useScaleListener)({
4235
4454
  zoomSpeed: zoomSpeed,
@@ -4547,6 +4766,14 @@ function CanvasGridComponent(props, forwardedRef) {
4547
4766
  setFormulaBarTextFormatRuns(undefined);
4548
4767
  return;
4549
4768
  }
4769
+ // Excel shows a legacy CSE array's formula in braces for every cell of the array
4770
+ // (`{=SUM(A1:A3*B1:B3)}`); the braces leave once the edit starts (`getEditorDisplayValue`).
4771
+ var arrayFormula = getArrayFormula === null || getArrayFormula === void 0 ? void 0 : getArrayFormula(sheetId, rowIndex, columnIndex);
4772
+ if (arrayFormula) {
4773
+ setFormulabarEditorValue("{".concat((0, utils_1.localizeCellInput)(arrayFormula.formula, formulaLocale), "}"));
4774
+ setFormulaBarTextFormatRuns(undefined);
4775
+ return;
4776
+ }
4550
4777
  var value = getUserEnteredStringValue(sheetId, rowIndex, columnIndex);
4551
4778
  var textFormatRuns = getTextFormatRuns === null || getTextFormatRuns === void 0 ? void 0 : getTextFormatRuns(sheetId, rowIndex, columnIndex);
4552
4779
  // Update formula bar input (in the grid's formula locale, like the cell editor)
@@ -4559,6 +4786,7 @@ function CanvasGridComponent(props, forwardedRef) {
4559
4786
  editingCellCoordinate,
4560
4787
  getSheetProtection,
4561
4788
  getCellData,
4789
+ getArrayFormula,
4562
4790
  getUserEnteredStringValue,
4563
4791
  formulaLocale,
4564
4792
  setFormulabarEditorValue,
@@ -4621,7 +4849,11 @@ function CanvasGridComponent(props, forwardedRef) {
4621
4849
  // Bind to outer container, so it always takes
4622
4850
  // priority over other components
4623
4851
  // generated by hooks
4624
- onMouseMove: mouseMoveThrottler, onWheel: onMouseWheel }, rest, { style: tableHitCursor ? tslib_1.__assign(tslib_1.__assign({}, rest.style), { cursor: tableHitCursor }) : rest.style }),
4852
+ onMouseMove: mouseMoveThrottler, onWheel: onMouseWheel }, rest, { style:
4853
+ // Ctrl / ⌥ held over a selection-border drag: Excel's copy (+) pointer.
4854
+ isDragging && isDragCopy
4855
+ ? tslib_1.__assign(tslib_1.__assign({}, rest.style), { cursor: "copy" }) : tableHitCursor
4856
+ ? tslib_1.__assign(tslib_1.__assign({}, rest.style), { cursor: tableHitCursor }) : rest.style }),
4625
4857
  width === 0 || height === 0 ? (react_1.default.createElement("div", { className: "flex border-solid border-rnc-border border border-t border-b flex-1 justify-center items-center" },
4626
4858
  react_1.default.createElement("div", { className: "space-y-2" },
4627
4859
  react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" }),
@@ -4633,6 +4865,9 @@ function CanvasGridComponent(props, forwardedRef) {
4633
4865
  draggableColumns,
4634
4866
  draggableRows,
4635
4867
  contextMenuComponent,
4868
+ selectionDragCopy.dropMenu ? (react_1.default.createElement(selection_drop_menu_1.SelectionDropMenu, { key: "".concat(selectionDragCopy.dropMenu.clientX, ":").concat(selectionDragCopy.dropMenu.clientY), x: selectionDragCopy.dropMenu.clientX -
4869
+ ((_h = (_g = gridContainerRef.current) === null || _g === void 0 ? void 0 : _g.getBoundingClientRect().left) !== null && _h !== void 0 ? _h : 0), y: selectionDragCopy.dropMenu.clientY -
4870
+ ((_k = (_j = gridContainerRef.current) === null || _j === void 0 ? void 0 : _j.getBoundingClientRect().top) !== null && _k !== void 0 ? _k : 0), actions: selectionDragCopy.dropActions, onSelectAction: selectionDragCopy.runDropAction, onCancel: selectionDragCopy.closeDropMenu })) : null,
4636
4871
  embedContextMenuComponent,
4637
4872
  filterComponent,
4638
4873
  totalsPickerComponent,