@rowsncolumns/spreadsheet 10.3.0 → 10.4.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 (484) hide show
  1. package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
  2. package/dist/cjs/api/banded-ranges.js +40 -14
  3. package/dist/cjs/api/calculated-column-fill.d.ts +43 -0
  4. package/dist/cjs/api/calculated-column-fill.d.ts.map +1 -0
  5. package/dist/cjs/api/calculated-column-fill.js +16 -0
  6. package/dist/cjs/api/chart-sheet.d.ts +8 -0
  7. package/dist/cjs/api/chart-sheet.d.ts.map +1 -0
  8. package/dist/cjs/api/chart-sheet.js +20 -0
  9. package/dist/cjs/api/chart-source-ranges.d.ts +64 -0
  10. package/dist/cjs/api/chart-source-ranges.d.ts.map +1 -0
  11. package/dist/cjs/api/chart-source-ranges.js +175 -0
  12. package/dist/cjs/api/selections.d.ts +3 -3
  13. package/dist/cjs/api/selections.d.ts.map +1 -1
  14. package/dist/cjs/api/selections.js +28 -2
  15. package/dist/cjs/api/spreadsheet-api.d.ts +16 -3
  16. package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
  17. package/dist/cjs/api/spreadsheet-api.js +22 -2
  18. package/dist/cjs/api/table-auto-expansion.d.ts +37 -0
  19. package/dist/cjs/api/table-auto-expansion.d.ts.map +1 -0
  20. package/dist/cjs/api/table-auto-expansion.js +16 -0
  21. package/dist/cjs/api/table.d.ts +49 -1
  22. package/dist/cjs/api/table.d.ts.map +1 -1
  23. package/dist/cjs/api/table.js +145 -1
  24. package/dist/cjs/api/validation.d.ts +26 -1
  25. package/dist/cjs/api/validation.d.ts.map +1 -1
  26. package/dist/cjs/api/validation.js +127 -9
  27. package/dist/cjs/atoms/calculated-column-fill.atom.d.ts +15 -0
  28. package/dist/cjs/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/calculated-column-fill.atom.js +18 -0
  30. package/dist/cjs/atoms/chart-actions.atom.d.ts +40 -0
  31. package/dist/cjs/atoms/chart-actions.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/chart-actions.atom.js +66 -0
  33. package/dist/cjs/atoms/index.d.ts +5 -0
  34. package/dist/cjs/atoms/index.d.ts.map +1 -1
  35. package/dist/cjs/atoms/index.js +5 -0
  36. package/dist/cjs/atoms/move-chart-dialog.atom.d.ts +28 -0
  37. package/dist/cjs/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/move-chart-dialog.atom.js +34 -0
  39. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts +9 -1
  40. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  41. package/dist/cjs/atoms/selected-chart-embed.atom.js +18 -1
  42. package/dist/cjs/atoms/selected-chart-series.atom.d.ts +24 -0
  43. package/dist/cjs/atoms/selected-chart-series.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/selected-chart-series.atom.js +11 -0
  45. package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
  46. package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
  47. package/dist/cjs/atoms/sheet-context.atom.js +5 -2
  48. package/dist/cjs/atoms/sparkline-dialog.atom.d.ts +34 -0
  49. package/dist/cjs/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  50. package/dist/cjs/atoms/sparkline-dialog.atom.js +30 -0
  51. package/dist/cjs/atoms/table-auto-expansion.atom.d.ts +14 -0
  52. package/dist/cjs/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  53. package/dist/cjs/atoms/table-auto-expansion.atom.js +17 -0
  54. package/dist/cjs/components/calculated-column-smart-tag/index.d.ts +25 -0
  55. package/dist/cjs/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  56. package/dist/cjs/components/calculated-column-smart-tag/index.js +31 -0
  57. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  58. package/dist/cjs/components/canvas-grid/index.js +407 -77
  59. package/dist/cjs/components/canvas-grid/typings.d.ts +127 -14
  60. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  61. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  62. package/dist/cjs/components/cell/index.js +3 -3
  63. package/dist/cjs/components/cell/typings.d.ts +13 -0
  64. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  65. package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
  66. package/dist/cjs/components/cell-filter/index.js +13 -2
  67. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  68. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +4 -1
  69. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +28 -5
  70. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  71. package/dist/cjs/components/cell-structured/sparkline-math.js +93 -5
  72. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  73. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  74. package/dist/cjs/components/cell-structured/sparkline.js +3 -3
  75. package/dist/cjs/components/cell-structured/types.d.ts +1 -1
  76. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  77. package/dist/cjs/components/chart-sheet-view/index.d.ts +27 -0
  78. package/dist/cjs/components/chart-sheet-view/index.d.ts.map +1 -0
  79. package/dist/cjs/components/chart-sheet-view/index.js +35 -0
  80. package/dist/cjs/components/context-menu/embed-context-menu.d.ts +48 -0
  81. package/dist/cjs/components/context-menu/embed-context-menu.d.ts.map +1 -0
  82. package/dist/cjs/components/context-menu/embed-context-menu.js +123 -0
  83. package/dist/cjs/components/context-menu/index.d.ts +23 -2
  84. package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
  85. package/dist/cjs/components/context-menu/index.js +217 -39
  86. package/dist/cjs/components/context-menu/total-row-function-menu.d.ts +33 -0
  87. package/dist/cjs/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  88. package/dist/cjs/components/context-menu/total-row-function-menu.js +58 -0
  89. package/dist/cjs/components/context-menu/total-row-functions.d.ts +12 -12
  90. package/dist/cjs/components/context-menu/total-row-functions.d.ts.map +1 -1
  91. package/dist/cjs/components/context-menu/total-row-functions.js +39 -39
  92. package/dist/cjs/components/embeds/chart-component.d.ts +17 -0
  93. package/dist/cjs/components/embeds/chart-component.d.ts.map +1 -1
  94. package/dist/cjs/components/embeds/embed-draggable.d.ts +61 -4
  95. package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
  96. package/dist/cjs/components/embeds/embed-draggable.js +218 -42
  97. package/dist/cjs/components/filter-box/date-tree.d.ts +28 -0
  98. package/dist/cjs/components/filter-box/date-tree.d.ts.map +1 -0
  99. package/dist/cjs/components/filter-box/date-tree.js +147 -0
  100. package/dist/cjs/components/filter-box/filter-by-condition.d.ts +14 -2
  101. package/dist/cjs/components/filter-box/filter-by-condition.d.ts.map +1 -1
  102. package/dist/cjs/components/filter-box/filter-by-condition.js +95 -19
  103. package/dist/cjs/components/filter-box/filter-by-value.d.ts.map +1 -1
  104. package/dist/cjs/components/filter-box/filter-by-value.js +126 -40
  105. package/dist/cjs/components/filter-box/index.d.ts +7 -1
  106. package/dist/cjs/components/filter-box/index.d.ts.map +1 -1
  107. package/dist/cjs/components/filter-box/index.js +102 -11
  108. package/dist/cjs/components/move-chart-dialog/index.d.ts +34 -0
  109. package/dist/cjs/components/move-chart-dialog/index.d.ts.map +1 -0
  110. package/dist/cjs/components/move-chart-dialog/index.js +96 -0
  111. package/dist/cjs/components/print-preview/page-block.d.ts +9 -1
  112. package/dist/cjs/components/print-preview/page-block.d.ts.map +1 -1
  113. package/dist/cjs/components/print-preview/page-block.js +28 -2
  114. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts +8 -1
  115. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  116. package/dist/cjs/components/print-preview/print-preview-dialog.js +144 -3
  117. package/dist/cjs/components/print-preview/run-print.d.ts.map +1 -1
  118. package/dist/cjs/components/print-preview/run-print.js +19 -7
  119. package/dist/cjs/components/print-preview/use-page-layout.d.ts +47 -0
  120. package/dist/cjs/components/print-preview/use-page-layout.d.ts.map +1 -1
  121. package/dist/cjs/components/print-preview/use-page-layout.js +81 -7
  122. package/dist/cjs/components/resizer/index.d.ts.map +1 -1
  123. package/dist/cjs/components/resizer/index.js +10 -5
  124. package/dist/cjs/components/selection/index.d.ts +1 -1
  125. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  126. package/dist/cjs/components/selection/index.js +6 -2
  127. package/dist/cjs/components/selection/types.d.ts +15 -0
  128. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  129. package/dist/cjs/components/sheet-search/index.d.ts.map +1 -1
  130. package/dist/cjs/components/sheet-search/index.js +6 -2
  131. package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
  132. package/dist/cjs/components/sheet-tabs/index.js +2 -2
  133. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
  134. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  135. package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
  136. package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
  137. package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
  138. package/dist/cjs/components/sparkline-dialog/index.js +127 -0
  139. package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
  140. package/dist/cjs/components/subtotal-dialog/index.js +10 -1
  141. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  142. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  143. package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
  144. package/dist/cjs/components/toolbar/index.d.ts +1 -0
  145. package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
  146. package/dist/cjs/components/toolbar/index.js +1 -0
  147. package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
  148. package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
  149. package/dist/cjs/components/toolbar/insert-menu.js +24 -1
  150. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
  151. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  152. package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
  153. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
  154. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
  155. package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
  156. package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
  157. package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
  158. package/dist/cjs/components/toolbar/table-actions.js +17 -7
  159. package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
  160. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  161. package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
  162. package/dist/cjs/config.d.ts +2 -0
  163. package/dist/cjs/config.d.ts.map +1 -1
  164. package/dist/cjs/config.js +31 -1
  165. package/dist/cjs/helpers.d.ts +1 -1
  166. package/dist/cjs/helpers.d.ts.map +1 -1
  167. package/dist/cjs/helpers.js +13 -2
  168. package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
  169. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  170. package/dist/cjs/hooks/use-cell-renderer.js +20 -8
  171. package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
  172. package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
  173. package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
  174. package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
  175. package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
  176. package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
  177. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  178. package/dist/cjs/hooks/use-context-setter.js +3 -1
  179. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-copy-paste-cut.js +6 -3
  181. package/dist/cjs/hooks/use-editable.d.ts +9 -1
  182. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-editable.js +25 -1
  184. package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
  185. package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-embeds-charts.js +412 -41
  187. package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
  188. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-grid-children.js +12 -6
  190. package/dist/cjs/hooks/use-header-actions.d.ts.map +1 -1
  191. package/dist/cjs/hooks/use-header-actions.js +17 -10
  192. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  193. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  194. package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
  195. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  196. package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
  197. package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
  198. package/dist/cjs/hooks/use-move-columns-rows.js +21 -15
  199. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
  200. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  201. package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
  202. package/dist/cjs/hooks/use-selection-move.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-selection-move.js +14 -6
  204. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
  205. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-selection-renderer.js +37 -7
  207. package/dist/cjs/hooks/use-selection-resize.d.ts.map +1 -1
  208. package/dist/cjs/hooks/use-selection-resize.js +13 -6
  209. package/dist/cjs/hooks/use-selection.d.ts +9 -1
  210. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  211. package/dist/cjs/hooks/use-selection.js +177 -55
  212. package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
  213. package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
  214. package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
  215. package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
  216. package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
  217. package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
  218. package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
  219. package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
  220. package/dist/cjs/hooks/use-table-resizer.js +38 -18
  221. package/dist/cjs/hooks/use-touch.d.ts.map +1 -1
  222. package/dist/cjs/hooks/use-touch.js +16 -8
  223. package/dist/cjs/index.d.ts +13 -0
  224. package/dist/cjs/index.d.ts.map +1 -1
  225. package/dist/cjs/index.js +17 -1
  226. package/dist/cjs/release-date.js +1 -1
  227. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  228. package/dist/cjs/types.d.ts +289 -4
  229. package/dist/cjs/types.d.ts.map +1 -1
  230. package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
  231. package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
  232. package/dist/cjs/utils/copy-as-picture.js +70 -0
  233. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
  234. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  235. package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
  236. package/dist/cjs/utils/z-order.d.ts +47 -0
  237. package/dist/cjs/utils/z-order.d.ts.map +1 -0
  238. package/dist/cjs/utils/z-order.js +124 -0
  239. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  240. package/dist/esm/api/banded-ranges.js +39 -12
  241. package/dist/esm/api/calculated-column-fill.d.ts +43 -0
  242. package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
  243. package/dist/esm/api/calculated-column-fill.js +10 -0
  244. package/dist/esm/api/chart-sheet.d.ts +8 -0
  245. package/dist/esm/api/chart-sheet.d.ts.map +1 -0
  246. package/dist/esm/api/chart-sheet.js +15 -0
  247. package/dist/esm/api/chart-source-ranges.d.ts +64 -0
  248. package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
  249. package/dist/esm/api/chart-source-ranges.js +168 -0
  250. package/dist/esm/api/selections.d.ts +3 -3
  251. package/dist/esm/api/selections.d.ts.map +1 -1
  252. package/dist/esm/api/selections.js +26 -2
  253. package/dist/esm/api/spreadsheet-api.d.ts +16 -3
  254. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  255. package/dist/esm/api/spreadsheet-api.js +18 -2
  256. package/dist/esm/api/table-auto-expansion.d.ts +37 -0
  257. package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
  258. package/dist/esm/api/table-auto-expansion.js +10 -0
  259. package/dist/esm/api/table.d.ts +49 -1
  260. package/dist/esm/api/table.d.ts.map +1 -1
  261. package/dist/esm/api/table.js +138 -1
  262. package/dist/esm/api/validation.d.ts +26 -1
  263. package/dist/esm/api/validation.d.ts.map +1 -1
  264. package/dist/esm/api/validation.js +119 -9
  265. package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
  266. package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  267. package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
  268. package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
  269. package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
  270. package/dist/esm/atoms/chart-actions.atom.js +58 -0
  271. package/dist/esm/atoms/index.d.ts +5 -0
  272. package/dist/esm/atoms/index.d.ts.map +1 -1
  273. package/dist/esm/atoms/index.js +5 -0
  274. package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
  275. package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  276. package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
  277. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
  278. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  279. package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
  280. package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
  281. package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
  282. package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
  283. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  284. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  285. package/dist/esm/atoms/sheet-context.atom.js +2 -0
  286. package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
  287. package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  288. package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
  289. package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
  290. package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  291. package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
  292. package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
  293. package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  294. package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
  295. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  296. package/dist/esm/components/canvas-grid/index.js +346 -26
  297. package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
  298. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  299. package/dist/esm/components/cell/index.d.ts.map +1 -1
  300. package/dist/esm/components/cell/index.js +3 -3
  301. package/dist/esm/components/cell/typings.d.ts +13 -0
  302. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  303. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  304. package/dist/esm/components/cell-filter/index.js +14 -3
  305. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  306. package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
  307. package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
  308. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  309. package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
  310. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  311. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  312. package/dist/esm/components/cell-structured/sparkline.js +3 -3
  313. package/dist/esm/components/cell-structured/types.d.ts +1 -1
  314. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  315. package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
  316. package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
  317. package/dist/esm/components/chart-sheet-view/index.js +30 -0
  318. package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
  319. package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
  320. package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
  321. package/dist/esm/components/context-menu/index.d.ts +23 -2
  322. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  323. package/dist/esm/components/context-menu/index.js +174 -38
  324. package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
  325. package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  326. package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
  327. package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
  328. package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
  329. package/dist/esm/components/context-menu/total-row-functions.js +29 -31
  330. package/dist/esm/components/embeds/chart-component.d.ts +17 -0
  331. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
  332. package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
  333. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
  334. package/dist/esm/components/embeds/embed-draggable.js +207 -47
  335. package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
  336. package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
  337. package/dist/esm/components/filter-box/date-tree.js +107 -0
  338. package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
  339. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
  340. package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
  341. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
  342. package/dist/esm/components/filter-box/filter-by-value.js +110 -39
  343. package/dist/esm/components/filter-box/index.d.ts +7 -1
  344. package/dist/esm/components/filter-box/index.d.ts.map +1 -1
  345. package/dist/esm/components/filter-box/index.js +88 -2
  346. package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
  347. package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
  348. package/dist/esm/components/move-chart-dialog/index.js +88 -0
  349. package/dist/esm/components/print-preview/page-block.d.ts +9 -1
  350. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
  351. package/dist/esm/components/print-preview/page-block.js +27 -2
  352. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
  353. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  354. package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
  355. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
  356. package/dist/esm/components/print-preview/run-print.js +17 -7
  357. package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
  358. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
  359. package/dist/esm/components/print-preview/use-page-layout.js +55 -0
  360. package/dist/esm/components/resizer/index.d.ts.map +1 -1
  361. package/dist/esm/components/resizer/index.js +8 -4
  362. package/dist/esm/components/selection/index.d.ts +1 -1
  363. package/dist/esm/components/selection/index.d.ts.map +1 -1
  364. package/dist/esm/components/selection/index.js +6 -2
  365. package/dist/esm/components/selection/types.d.ts +15 -0
  366. package/dist/esm/components/selection/types.d.ts.map +1 -1
  367. package/dist/esm/components/sheet-search/index.d.ts.map +1 -1
  368. package/dist/esm/components/sheet-search/index.js +5 -2
  369. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
  370. package/dist/esm/components/sheet-tabs/index.js +2 -2
  371. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
  372. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  373. package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
  374. package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
  375. package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
  376. package/dist/esm/components/sparkline-dialog/index.js +123 -0
  377. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
  378. package/dist/esm/components/subtotal-dialog/index.js +10 -1
  379. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  380. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  381. package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
  382. package/dist/esm/components/toolbar/index.d.ts +1 -0
  383. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  384. package/dist/esm/components/toolbar/index.js +1 -0
  385. package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
  386. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
  387. package/dist/esm/components/toolbar/insert-menu.js +24 -1
  388. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
  389. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  390. package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
  391. package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
  392. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
  393. package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
  394. package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
  395. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
  396. package/dist/esm/components/toolbar/table-actions.js +15 -7
  397. package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
  398. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  399. package/dist/esm/components/toolbar/table-style-selector.js +210 -399
  400. package/dist/esm/config.d.ts +2 -0
  401. package/dist/esm/config.d.ts.map +1 -1
  402. package/dist/esm/config.js +30 -0
  403. package/dist/esm/helpers.d.ts +1 -1
  404. package/dist/esm/helpers.d.ts.map +1 -1
  405. package/dist/esm/helpers.js +12 -1
  406. package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
  407. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  408. package/dist/esm/hooks/use-cell-renderer.js +14 -4
  409. package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
  410. package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
  411. package/dist/esm/hooks/use-chart-clipboard.js +213 -0
  412. package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
  413. package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
  414. package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
  415. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-context-setter.js +3 -1
  417. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-copy-paste-cut.js +6 -4
  419. package/dist/esm/hooks/use-editable.d.ts +9 -1
  420. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-editable.js +25 -1
  422. package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
  423. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-embeds-charts.js +394 -39
  425. package/dist/esm/hooks/use-grid-children.d.ts +2 -2
  426. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-grid-children.js +8 -2
  428. package/dist/esm/hooks/use-header-actions.d.ts.map +1 -1
  429. package/dist/esm/hooks/use-header-actions.js +11 -4
  430. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  431. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  432. package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
  433. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  434. package/dist/esm/hooks/use-keyboard-handler.js +8 -2
  435. package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-move-columns-rows.js +12 -6
  437. package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
  438. package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  439. package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
  440. package/dist/esm/hooks/use-selection-move.d.ts.map +1 -1
  441. package/dist/esm/hooks/use-selection-move.js +11 -4
  442. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
  443. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  444. package/dist/esm/hooks/use-selection-renderer.js +35 -6
  445. package/dist/esm/hooks/use-selection-resize.d.ts.map +1 -1
  446. package/dist/esm/hooks/use-selection-resize.js +11 -5
  447. package/dist/esm/hooks/use-selection.d.ts +9 -1
  448. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  449. package/dist/esm/hooks/use-selection.js +172 -54
  450. package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
  451. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
  452. package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
  453. package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
  454. package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
  455. package/dist/esm/hooks/use-table-hit-zones.js +146 -0
  456. package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
  457. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
  458. package/dist/esm/hooks/use-table-resizer.js +36 -19
  459. package/dist/esm/hooks/use-touch.d.ts.map +1 -1
  460. package/dist/esm/hooks/use-touch.js +15 -7
  461. package/dist/esm/index.d.ts +13 -0
  462. package/dist/esm/index.d.ts.map +1 -1
  463. package/dist/esm/index.js +13 -0
  464. package/dist/esm/release-date.js +1 -1
  465. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  466. package/dist/esm/types.d.ts +289 -4
  467. package/dist/esm/types.d.ts.map +1 -1
  468. package/dist/esm/utils/copy-as-picture.d.ts +13 -0
  469. package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
  470. package/dist/esm/utils/copy-as-picture.js +45 -0
  471. package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
  472. package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  473. package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
  474. package/dist/esm/utils/z-order.d.ts +47 -0
  475. package/dist/esm/utils/z-order.d.ts.map +1 -0
  476. package/dist/esm/utils/z-order.js +111 -0
  477. package/dist/spreadsheet.min.css +1 -1
  478. package/package.json +8 -6
  479. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
  480. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
  481. package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
  482. package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
  483. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
  484. package/dist/esm/components/cell-editor/helpers.spec.js +0 -30
@@ -8,7 +8,6 @@ var grid_2 = require("@rowsncolumns/grid");
8
8
  var grid_3 = require("@rowsncolumns/grid");
9
9
  var grid_4 = require("@rowsncolumns/grid");
10
10
  var grid_5 = require("@rowsncolumns/grid");
11
- var spreadsheet_state_1 = require("@rowsncolumns/spreadsheet-state");
12
11
  var ui_1 = require("@rowsncolumns/ui");
13
12
  var utils_1 = require("@rowsncolumns/utils");
14
13
  var jotai_1 = require("jotai");
@@ -17,6 +16,8 @@ var throttle_1 = tslib_1.__importDefault(require("lodash/throttle"));
17
16
  var react_1 = tslib_1.__importStar(require("react"));
18
17
  var banded_ranges_1 = require("../../api/banded-ranges");
19
18
  var insert_options_1 = require("../../api/insert-options");
19
+ var calculated_column_fill_1 = require("../../api/calculated-column-fill");
20
+ var table_auto_expansion_1 = require("../../api/table-auto-expansion");
20
21
  var cf_window_1 = require("../../api/cf-window");
21
22
  var selections_1 = require("../../api/selections");
22
23
  var spreadsheet_api_1 = require("../../api/spreadsheet-api");
@@ -41,9 +42,12 @@ var use_border_styles_1 = require("../../hooks/use-border-styles");
41
42
  var use_callback_ref_1 = require("../../hooks/use-callback-ref");
42
43
  var use_cell_popover_1 = require("../../hooks/use-cell-popover");
43
44
  var use_cell_renderer_1 = require("../../hooks/use-cell-renderer");
45
+ var use_chart_source_ranges_1 = require("../../hooks/use-chart-source-ranges");
44
46
  var use_conditional_formatting_1 = require("../../hooks/use-conditional-formatting");
45
47
  var use_context_menu_1 = require("../../hooks/use-context-menu");
46
48
  var use_context_setter_1 = require("../../hooks/use-context-setter");
49
+ var use_reveal_chart_embed_1 = require("../../hooks/use-reveal-chart-embed");
50
+ var use_chart_clipboard_1 = require("../../hooks/use-chart-clipboard");
47
51
  var use_copy_paste_cut_1 = require("../../hooks/use-copy-paste-cut");
48
52
  var use_create_address_from_selection_1 = require("../../hooks/use-create-address-from-selection");
49
53
  var use_create_formula_tokenizer_1 = require("../../hooks/use-create-formula-tokenizer");
@@ -53,6 +57,7 @@ var use_editor_change_1 = require("../../hooks/use-editor-change");
53
57
  var use_editor_keydown_1 = require("../../hooks/use-editor-keydown");
54
58
  var use_editor_submit_1 = require("../../hooks/use-editor-submit");
55
59
  var use_embeds_charts_1 = require("../../hooks/use-embeds-charts");
60
+ var chart_sheet_view_1 = require("../chart-sheet-view");
56
61
  var use_expand_cell_1 = require("../../hooks/use-expand-cell");
57
62
  var use_export_range_1 = require("../../hooks/use-export-range");
58
63
  var use_filter_1 = require("../../hooks/use-filter");
@@ -84,6 +89,7 @@ var use_sheet_change_handler_1 = require("../../hooks/use-sheet-change-handler")
84
89
  var use_sizer_1 = require("../../hooks/use-sizer");
85
90
  var use_stable_ref_1 = require("../../hooks/use-stable-ref");
86
91
  var use_structured_reference_selection_1 = require("../../hooks/use-structured-reference-selection");
92
+ var use_table_hit_zones_1 = require("../../hooks/use-table-hit-zones");
87
93
  var use_table_resizer_1 = require("../../hooks/use-table-resizer");
88
94
  var use_delayed_value_1 = require("../../hooks/use-delayed-value");
89
95
  var use_tooltip_1 = require("../../hooks/use-tooltip");
@@ -95,6 +101,9 @@ var fill_series_1 = require("../../api/fill-series");
95
101
  var cell_1 = require("../cell");
96
102
  var cell_editor_1 = require("../cell-editor");
97
103
  var context_menu_1 = require("../context-menu");
104
+ var menu_1 = require("../context-menu/menu");
105
+ var style_1 = require("../context-menu/style");
106
+ var total_row_function_menu_1 = require("../context-menu/total-row-function-menu");
98
107
  var fill_handle_1 = require("../fill-handle");
99
108
  var filter_box_1 = require("../filter-box");
100
109
  var header_cell_1 = require("../header-cell");
@@ -109,8 +118,10 @@ var helpers_2 = require("./helpers");
109
118
  * @param CanvasGridMethods
110
119
  * @returns
111
120
  */
121
+ /** Where the grid focuses when no cell is given (A1); mirrors spreadsheet-state's `defaultCellCoords` without importing it — that package depends on this one. */
122
+ var defaultCellCoords = { rowIndex: 1, columnIndex: 1 };
112
123
  function CanvasGridComponent(props, forwardedRef) {
113
- var licenseKey = props.licenseKey, sheetId = props.sheetId, instanceId = props.instanceId, _a = props.activeCell, activeCell = _a === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _a, _b = props.selections, selections = _b === void 0 ? config_1.DEFAULT_ARRAY : _b, _c = props.frozenColumnCount, frozenColumnCount = _c === void 0 ? 0 : _c, _d = props.frozenRowCount, frozenRowCount = _d === void 0 ? 0 : _d, _e = props.rowCount, rowCount = _e === void 0 ? config_1.DEFAULT_ROW_COUNT : _e, _f = props.columnCount, columnCount = _f === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _f, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _g = props.bandedRanges, bandedRanges = _g === void 0 ? config_1.DEFAULT_ARRAY : _g, _h = props.tableBorderColor, tableBorderColor = _h === void 0 ? "#008000" : _h, _j = props.filterIconColor, filterIconColor = _j === void 0 ? "#008000" : _j, conditionalFormats = props.conditionalFormats, _k = props.showFilterIcon, showFilterIcon = _k === void 0 ? true : _k, _l = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _l === void 0 ? true : _l, _m = props.showHeaders, showHeaders = _m === void 0 ? true : _m, _o = props.defaultColumnWidth, defaultColumnWidth = _o === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _o, _p = props.defaultRowHeight, defaultRowHeight = _p === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _p, _q = props.columnHeaderHeight, columnHeaderHeight = _q === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _q, _r = props.rowHeaderWidth, rowHeaderWidth = _r === void 0 ? config_1.ROW_HEADER_WIDTH : _r, _s = props.gridLineColor, gridLineColor = _s === void 0 ? config_1.GRIDLINE_COLOR : _s, _t = props.cellBackgroundColor, cellBackgroundColor = _t === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _t, _u = props.cellColor, cellColor = _u === void 0 ? config_1.DEFAULT_CELL_COLOR : _u, _v = props.headerBorderColor, headerBorderColor = _v === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _v, _w = props.headerBackgroundColor, headerBackgroundColor = _w === void 0 ? config_1.DEFAULT_HEADER_BG : _w, _x = props.headerColor, headerColor = _x === void 0 ? config_1.DEFAULT_HEADER_COLOR : _x, _y = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _y === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _y, _z = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _z === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _z, _0 = props.headerSelectedColor, headerSelectedColor = _0 === void 0 ? "white" : _0, _1 = props.headerTableBackgroundColor, headerTableBackgroundColor = _1 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _1, _2 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _2, _3 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _3 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _3, _4 = props.frozenShadowColor, frozenShadowColor = _4 === void 0 ? headerBorderColor : _4, _5 = props.frozenShadowThickness, frozenShadowThickness = _5 === void 0 ? 1 : _5, _6 = props.selectionBackgroundColor, selectionBackgroundColor = _6 === void 0 ? config_1.SELECTION_BG : _6, _7 = props.selectionBorderColor, selectionBorderColor = _7 === void 0 ? config_1.SELECTION_BORDER : _7, _8 = props.selectionDragBorderColor, selectionDragBorderColor = _8 === void 0 ? config_1.SELECTION_BORDER : _8, chartSelectedColor = props.chartSelectedColor, _9 = props.chipBackgroundColor, chipBackgroundColor = _9 === void 0 ? config_1.CHIP_COLOR : _9, _10 = props.merges, merges = _10 === void 0 ? config_1.DEFAULT_ARRAY : _10, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _11 = props.isWorkbookProtected, isWorkbookProtectedProp = _11 === void 0 ? false : _11, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, embeds = props.embeds, slicers = props.slicers, _12 = props.rowMetadata, rowMetadata = _12 === void 0 ? config_1.DEFAULT_ARRAY : _12, _13 = props.columnMetadata, columnMetadata = _13 === void 0 ? config_1.DEFAULT_ARRAY : _13, _14 = props.scale, scale = _14 === void 0 ? 1 : _14, _15 = props.zoomSpeed, zoomSpeed = _15 === void 0 ? 1 : _15, _16 = props.overscanCount, overscanCount = _16 === void 0 ? 3 : _16, _17 = props.enableEditOnEnterKey, enableEditOnEnterKey = _17 === void 0 ? true : _17, _18 = props.enableTextOverflow, enableTextOverflow = _18 === void 0 ? true : _18, _showGridLines = props.showGridLines, _19 = props.showFormulas, showFormulas = _19 === void 0 ? false : _19, _20 = props.protectFormulas, protectFormulas = _20 === void 0 ? false : _20, _21 = props.showFrozenSeparator, showFrozenSeparator = _21 === void 0 ? true : _21, _22 = props.HeaderCell, HeaderCell = _22 === void 0 ? header_cell_1.HeaderCell : _22, _23 = props.Cell, Cell = _23 === void 0 ? cell_1.Cell : _23, _24 = props.SelectionTitleComponent, SelectionTitleComponent = _24 === void 0 ? title_1.SelectionTitle : _24, _25 = props.CellEditor, CellEditor = _25 === void 0 ? cell_editor_1.CellEditor : _25, CellTooltip = props.CellTooltip, _26 = props.ContextMenu, ContextMenu = _26 === void 0 ? context_menu_1.ContextMenu : _26, _27 = props.ContextMenuWrapper, ContextMenuWrapper = _27 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _27, _28 = props.FilterBox, FilterBox = _28 === void 0 ? filter_box_1.FilterBox : _28, _29 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _29 === void 0 ? header_move_1.HeaderMoveDragComponent : _29, SuggestionsDropdown = props.SuggestionsDropdown, _30 = props.stickyEditor, stickyEditor = _30 === void 0 ? true : _30, _31 = props.scrollSnap, scrollSnap = _31 === void 0 ? false : _31, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _32 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _32 === void 0 ? 60 : _32, _33 = props.tooltipIntentInterval, tooltipIntentInterval = _33 === void 0 ? 60 : _33, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _34 = props.showHeaderMenuButton, showHeaderMenuButton = _34 === void 0 ? true : _34, _35 = props.scrollbarSize, scrollbarSize = _35 === void 0 ? config_1.SCROLLBAR_SIZE : _35, _36 = props.theme, theme = _36 === void 0 ? config_1.defaultSpreadsheetTheme : _36, _37 = props.showNotes, showNotes = _37 === void 0 ? true : _37, _38 = props.showComments, showComments = _38 === void 0 ? true : _38, locale = props.locale, formulaLocaleProp = props.formulaLocale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, 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, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _39 = props.windowConditionalFormats, windowConditionalFormats = _39 === void 0 ? false : _39, _40 = props.engineConditionalFormatResults, engineConditionalFormatResults = _40 === void 0 ? false : _40, 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, 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, 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, onPaste = props.onPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, 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, _41 = props.getRowHeaderText, getRowHeaderText = _41 === void 0 ? helpers_1.getDefaultRowHeader : _41, _42 = props.getColumnHeaderText, getColumnHeaderText = _42 === void 0 ? helpers_1.getDefaultColumnHeader : _42, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _43 = props.tokenizer, defaultTokenizer = _43 === void 0 ? calculator_1.tokenize : _43, 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, _44 = props.StructuredResult, StructuredResult = _44 === void 0 ? cell_structured_1.StructuredResultRenderer : _44, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _45 = props.showSelectionResizeHandles, showSelectionResizeHandles = _45 === void 0 ? true : _45, enableMagicFill = props.enableMagicFill, _46 = props.enableQuickEdit, enableQuickEdit = _46 === void 0 ? true : _46, 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, _47 = props.defaultFontSizePoint, defaultFontSizePoint = _47 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _47, readonly = props.readonly, _48 = props.isComparing, isComparing = _48 === void 0 ? false : _48, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
124
+ var licenseKey = props.licenseKey, sheetId = props.sheetId, sheetType = props.sheetType, _a = props.ChartSheetView, ChartSheetViewComponent = _a === void 0 ? chart_sheet_view_1.ChartSheetView : _a, instanceId = props.instanceId, _b = props.activeCell, activeCell = _b === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _b, _c = props.selections, selections = _c === void 0 ? config_1.DEFAULT_ARRAY : _c, _d = props.frozenColumnCount, frozenColumnCount = _d === void 0 ? 0 : _d, _e = props.frozenRowCount, frozenRowCount = _e === void 0 ? 0 : _e, _f = props.rowCount, rowCount = _f === void 0 ? config_1.DEFAULT_ROW_COUNT : _f, _g = props.columnCount, columnCount = _g === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _g, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _h = props.bandedRanges, bandedRanges = _h === void 0 ? config_1.DEFAULT_ARRAY : _h, _j = props.tableBorderColor, tableBorderColor = _j === void 0 ? "#008000" : _j, _k = props.filterIconColor, filterIconColor = _k === void 0 ? "#008000" : _k, conditionalFormats = props.conditionalFormats, _l = props.showFilterIcon, showFilterIcon = _l === void 0 ? true : _l, _m = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _m === void 0 ? true : _m, _o = props.showHeaders, showHeaders = _o === void 0 ? true : _o, _p = props.defaultColumnWidth, defaultColumnWidth = _p === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _p, _q = props.defaultRowHeight, defaultRowHeight = _q === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _q, _r = props.columnHeaderHeight, columnHeaderHeight = _r === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _r, _s = props.rowHeaderWidth, rowHeaderWidth = _s === void 0 ? config_1.ROW_HEADER_WIDTH : _s, _t = props.gridLineColor, gridLineColor = _t === void 0 ? config_1.GRIDLINE_COLOR : _t, _u = props.cellBackgroundColor, cellBackgroundColor = _u === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _u, _v = props.cellColor, cellColor = _v === void 0 ? config_1.DEFAULT_CELL_COLOR : _v, _w = props.headerBorderColor, headerBorderColor = _w === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _w, _x = props.headerBackgroundColor, headerBackgroundColor = _x === void 0 ? config_1.DEFAULT_HEADER_BG : _x, _y = props.headerColor, headerColor = _y === void 0 ? config_1.DEFAULT_HEADER_COLOR : _y, _z = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _z === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _z, _0 = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _0 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _0, _1 = props.headerSelectedColor, headerSelectedColor = _1 === void 0 ? "white" : _1, _2 = props.headerTableBackgroundColor, headerTableBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _2, _3 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _3 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _3, _4 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _4 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _4, _5 = props.frozenShadowColor, frozenShadowColor = _5 === void 0 ? headerBorderColor : _5, _6 = props.frozenShadowThickness, frozenShadowThickness = _6 === void 0 ? 1 : _6, _7 = props.selectionBackgroundColor, selectionBackgroundColor = _7 === void 0 ? config_1.SELECTION_BG : _7, _8 = props.selectionBorderColor, selectionBorderColor = _8 === void 0 ? config_1.SELECTION_BORDER : _8, _9 = props.selectionDragBorderColor, selectionDragBorderColor = _9 === void 0 ? config_1.SELECTION_BORDER : _9, chartSelectedColor = props.chartSelectedColor, _10 = props.chipBackgroundColor, chipBackgroundColor = _10 === void 0 ? config_1.CHIP_COLOR : _10, _11 = props.merges, merges = _11 === void 0 ? config_1.DEFAULT_ARRAY : _11, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _12 = props.isWorkbookProtected, isWorkbookProtectedProp = _12 === void 0 ? false : _12, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, onUpdateChart = props.onUpdateChart, onChangeZOrder = props.onChangeZOrder, embeds = props.embeds, slicers = props.slicers, _13 = props.rowMetadata, rowMetadata = _13 === void 0 ? config_1.DEFAULT_ARRAY : _13, _14 = props.columnMetadata, columnMetadata = _14 === void 0 ? config_1.DEFAULT_ARRAY : _14, _15 = props.scale, scale = _15 === void 0 ? 1 : _15, _16 = props.zoomSpeed, zoomSpeed = _16 === void 0 ? 1 : _16, _17 = props.overscanCount, overscanCount = _17 === void 0 ? 3 : _17, _18 = props.enableEditOnEnterKey, enableEditOnEnterKey = _18 === void 0 ? true : _18, _19 = props.enableTextOverflow, enableTextOverflow = _19 === void 0 ? true : _19, _showGridLines = props.showGridLines, _20 = props.showFormulas, showFormulas = _20 === void 0 ? false : _20, _21 = props.protectFormulas, protectFormulas = _21 === void 0 ? false : _21, _22 = props.showFrozenSeparator, showFrozenSeparator = _22 === void 0 ? true : _22, _23 = props.HeaderCell, HeaderCell = _23 === void 0 ? header_cell_1.HeaderCell : _23, _24 = props.Cell, Cell = _24 === void 0 ? cell_1.Cell : _24, _25 = props.SelectionTitleComponent, SelectionTitleComponent = _25 === void 0 ? title_1.SelectionTitle : _25, _26 = props.CellEditor, CellEditor = _26 === void 0 ? cell_editor_1.CellEditor : _26, CellTooltip = props.CellTooltip, _27 = props.ContextMenu, ContextMenu = _27 === void 0 ? context_menu_1.ContextMenu : _27, _28 = props.ContextMenuWrapper, ContextMenuWrapper = _28 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _28, _29 = props.FilterBox, FilterBox = _29 === void 0 ? filter_box_1.FilterBox : _29, _30 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _30 === void 0 ? header_move_1.HeaderMoveDragComponent : _30, SuggestionsDropdown = props.SuggestionsDropdown, _31 = props.stickyEditor, stickyEditor = _31 === void 0 ? true : _31, _32 = props.scrollSnap, scrollSnap = _32 === void 0 ? false : _32, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _33 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _33 === void 0 ? 60 : _33, _34 = props.tooltipIntentInterval, tooltipIntentInterval = _34 === void 0 ? 60 : _34, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _35 = props.showHeaderMenuButton, showHeaderMenuButton = _35 === void 0 ? true : _35, _36 = props.scrollbarSize, scrollbarSize = _36 === void 0 ? config_1.SCROLLBAR_SIZE : _36, _37 = props.theme, theme = _37 === void 0 ? config_1.defaultSpreadsheetTheme : _37, _38 = props.showNotes, showNotes = _38 === void 0 ? true : _38, _39 = props.showComments, showComments = _39 === void 0 ? true : _39, locale = props.locale, formulaLocaleProp = props.formulaLocale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, 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, _40 = props.windowConditionalFormats, windowConditionalFormats = _40 === void 0 ? false : _40, _41 = props.engineConditionalFormatResults, engineConditionalFormatResults = _41 === void 0 ? false : _41, 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, 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, _42 = props.getRowHeaderText, getRowHeaderText = _42 === void 0 ? helpers_1.getDefaultRowHeader : _42, _43 = props.getColumnHeaderText, getColumnHeaderText = _43 === void 0 ? helpers_1.getDefaultColumnHeader : _43, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _44 = props.tokenizer, defaultTokenizer = _44 === void 0 ? calculator_1.tokenize : _44, 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, _45 = props.StructuredResult, StructuredResult = _45 === void 0 ? cell_structured_1.StructuredResultRenderer : _45, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _46 = props.showSelectionResizeHandles, showSelectionResizeHandles = _46 === void 0 ? true : _46, enableMagicFill = props.enableMagicFill, _47 = props.enableQuickEdit, enableQuickEdit = _47 === void 0 ? true : _47, 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, _48 = props.defaultFontSizePoint, defaultFontSizePoint = _48 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _48, readonly = props.readonly, _49 = props.isComparing, isComparing = _49 === void 0 ? false : _49, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
114
125
  // Host-driven filter props. `hostHiddenRowRanges`
115
126
  // supplies compact [start, end] hidden-row tuples; `getFilterValues` supplies a
116
127
  // column's distinct values. Both let a million-row filter render without scanning
@@ -122,7 +133,7 @@ function CanvasGridComponent(props, forwardedRef) {
122
133
  // defaults to `getFormattedValue` inside `useGetValuesFromRange`.
123
134
  getValidationSourceValue = props.getValidationSourceValue,
124
135
  // Unused props only for api
125
- 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", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enableTextOverflow", "showGridLines", "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", "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", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "keymap", "onCalculateNow", "onRequestGoTo", "onMoveSelection", "onInsertCutCells", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "onPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRemoveTable", "onCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "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", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
136
+ 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", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "onUpdateChart", "onChangeZOrder", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enableTextOverflow", "showGridLines", "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", "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", "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", "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", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
126
137
  /**
127
138
  * Fire onBlur only when the cell editor blurs to an element outside the
128
139
  * spreadsheet. Routed through `useEditable` so we hook the always-focused
@@ -138,7 +149,7 @@ function CanvasGridComponent(props, forwardedRef) {
138
149
  var showGridLines = _showGridLines !== null && _showGridLines !== void 0 ? _showGridLines : true;
139
150
  var gridRef = (0, react_1.useRef)(null);
140
151
  // Hovered cell state (immediate, updated on mousemove)
141
- var _49 = tslib_1.__read((0, react_1.useState)(), 2), hoveredCell = _49[0], setHoveredCell = _49[1];
152
+ var _50 = tslib_1.__read((0, react_1.useState)(), 2), hoveredCell = _50[0], setHoveredCell = _50[1];
142
153
  // Delayed hovered cell for tooltips and selection titles
143
154
  var delayedHoveredCell = (0, use_delayed_value_1.useDelayedValue)(hoveredCell, tooltipIntentInterval);
144
155
  // Text overflow functionality
@@ -230,15 +241,17 @@ function CanvasGridComponent(props, forwardedRef) {
230
241
  // Cell editor
231
242
  var cellEditorInstance = (0, formula_bar_editor_value_atom_1.useCellEditorInstance)();
232
243
  // Paste menu
233
- var _50 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _50[0], setShowPasteMenu = _50[1];
244
+ var _51 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _51[0], setShowPasteMenu = _51[1];
234
245
  // Auto Fill Options smart tag / right-drag fill menu + Series dialog
235
- var _51 = tslib_1.__read((0, atoms_1.useFillOptionsState)(), 2), fillOptions = _51[0], setFillOptions = _51[1];
236
- var _52 = tslib_1.__read((0, atoms_1.useInsertOptionsState)(), 2), insertOptions = _52[0], setInsertOptions = _52[1];
246
+ var _52 = tslib_1.__read((0, atoms_1.useFillOptionsState)(), 2), fillOptions = _52[0], setFillOptions = _52[1];
247
+ var _53 = tslib_1.__read((0, atoms_1.useInsertOptionsState)(), 2), insertOptions = _53[0], setInsertOptions = _53[1];
248
+ var _54 = tslib_1.__read((0, atoms_1.useTableAutoExpansionState)(), 2), tableAutoExpansion = _54[0], setTableAutoExpansion = _54[1];
249
+ var _55 = tslib_1.__read((0, atoms_1.useCalculatedColumnFillState)(), 2), calculatedColumnFill = _55[0], setCalculatedColumnFill = _55[1];
237
250
  var openFillSeriesDialog = (0, atoms_1.useOpenFillSeriesDialog)();
238
251
  // Shared state
239
252
  var formulaMode = (0, atoms_1.useFormulaModeValue)();
240
253
  var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
241
- var _53 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _53[0], setEditingCellCoordinate = _53[1];
254
+ var _56 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _56[0], setEditingCellCoordinate = _56[1];
242
255
  var setFormulabarEditorValue = (0, formula_bar_editor_value_atom_1.useSetFormulabarEditorValue)();
243
256
  /**
244
257
  * The formula SYNTAX the editor / formula bar speak (rowsncolumns/spreadsheet#655): Excel follows
@@ -254,7 +267,7 @@ function CanvasGridComponent(props, forwardedRef) {
254
267
  var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
255
268
  var activeEditor = (0, active_editor_atom_1.useActiveEditor)();
256
269
  // Magic fill state
257
- var _54 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _54[0], setQuickEditState = _54[1];
270
+ var _57 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _57[0], setQuickEditState = _57[1];
258
271
  var setNoteEditorCell = (0, atoms_1.useSetNoteEditorCell)();
259
272
  var setPinnedTooltip = (0, atoms_1.useSetPinnedTooltip)();
260
273
  var setSpreadsheetApi = (0, spreadsheet_api_atom_1.useSetSpreadsheetApi)();
@@ -265,7 +278,7 @@ function CanvasGridComponent(props, forwardedRef) {
265
278
  var instanceStore = (0, jotai_1.useStore)({ store: spreadsheet_provider_1.multiInstanceStore });
266
279
  // To access closures
267
280
  var hoveredCellRef = (0, use_stable_ref_1.useStableRef)(hoveredCell);
268
- var _55 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _55[0], _56 = _55[1], width = _56.width, height = _56.height;
281
+ var _58 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _58[0], _59 = _58[1], width = _59.width, height = _59.height;
269
282
  var defaultFrozenDims = showHeaders ? 1 : 0;
270
283
  var frozenRows = Math.max(defaultFrozenDims, (frozenRowCount !== null && frozenRowCount !== void 0 ? frozenRowCount : 0) + defaultFrozenDims);
271
284
  var frozenColumns = Math.max(defaultFrozenDims, (frozenColumnCount !== null && frozenColumnCount !== void 0 ? frozenColumnCount : 0) + defaultFrozenDims);
@@ -277,9 +290,9 @@ function CanvasGridComponent(props, forwardedRef) {
277
290
  var sheetRowCount = Math.min(config_1.MAX_ROW_COUNT + 1, rowCount + 1);
278
291
  var sheetColumnCount = Math.min(config_1.MAX_COLUMN_COUNT + 1, columnCount + 1);
279
292
  // License key validator
280
- var _57 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
293
+ var _60 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
281
294
  licenseKey: licenseKey,
282
- }), 3), _ = _57[0], licenseType = _57[1], validatorResult = _57[2];
295
+ }), 3), _ = _60[0], licenseType = _60[1], validatorResult = _60[2];
283
296
  var isRestricted = licenseType === "solo";
284
297
  // Grid line width
285
298
  var gridLineWidth = 1 * scale;
@@ -593,6 +606,15 @@ function CanvasGridComponent(props, forwardedRef) {
593
606
  var tableHeaderCells = (0, react_1.useMemo)(function () {
594
607
  return (0, helpers_1.getTableHeaderCells)(activeTables, basicFilter);
595
608
  }, [activeTables, basicFilter]);
609
+ /** A cell on a table's totals row (its in-cell arrow opens the function picker). */
610
+ var isTableTotalsCell = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
611
+ return !!(activeTables === null || activeTables === void 0 ? void 0 : activeTables.some(function (table) {
612
+ return table.totalRow &&
613
+ rowIndex === table.range.endRowIndex &&
614
+ columnIndex >= table.range.startColumnIndex &&
615
+ columnIndex <= table.range.endColumnIndex;
616
+ }));
617
+ }, [activeTables]);
596
618
  /**
597
619
  * Retrieve banded cells
598
620
  */
@@ -621,6 +643,13 @@ function CanvasGridComponent(props, forwardedRef) {
621
643
  lastScheduledScrollRef.current = Date.now();
622
644
  (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.scrollToCell(cell, align);
623
645
  }, []);
646
+ // Excel scrolls to a chart / picture it has just inserted or restored.
647
+ var scrollToChart = (0, use_reveal_chart_embed_1.useRevealChartEmbed)({
648
+ charts: charts,
649
+ embeds: embeds,
650
+ sheetId: sheetId,
651
+ scrollToCell: scrollToCell,
652
+ });
624
653
  /**
625
654
  * Scroll to bottom of the sheet
626
655
  */
@@ -767,16 +796,20 @@ function CanvasGridComponent(props, forwardedRef) {
767
796
  * Focus sheet
768
797
  */
769
798
  var focusSheet = (0, use_raf_1.useRaf)(function () {
799
+ var _a;
770
800
  // Only suppress refocus when we're certain focus moved to a focusable
771
801
  // element outside the grid (e.g. another asset pane in a split view).
772
802
  // Mirrors the relatedTarget-outside-grid guard in handleEditorBlur. A
773
803
  // user gesture on the grid focuses the tabIndex=0 container first, so
774
804
  // this only suppresses render-driven refocus; a null container ref
775
805
  // (mid mount/unmount) falls through to the original focus behavior.
776
- var activeElement = grid_2.canUseDOM ? document.activeElement : null;
806
+ // The grid may render into a popout window: read focus from its own
807
+ // document, never from the bundle's global one.
808
+ var ownerDocument = (0, grid_2.getOwnerDocument)(gridContainerRef.current);
809
+ var activeElement = (_a = ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.activeElement) !== null && _a !== void 0 ? _a : null;
777
810
  var gridContainer = gridContainerRef.current;
778
811
  if (activeElement &&
779
- activeElement !== document.body &&
812
+ activeElement !== (ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body) &&
780
813
  gridContainer &&
781
814
  !gridContainer.contains(activeElement)) {
782
815
  return;
@@ -803,7 +836,13 @@ function CanvasGridComponent(props, forwardedRef) {
803
836
  */
804
837
  var getRelativePositionFromOffset = (0, react_1.useCallback)(function (x, y) {
805
838
  var _a;
806
- return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getRelativePositionFromOffset(x, y);
839
+ var grid = gridRef.current;
840
+ if (grid) {
841
+ return grid.getRelativePositionFromOffset(x, y);
842
+ }
843
+ // A chartsheet mounts no grid; overlays position against the wrapper itself.
844
+ var rect = (_a = gridContainerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
845
+ return rect ? { x: x - rect.left, y: y - rect.top } : undefined;
807
846
  }, []);
808
847
  /**
809
848
  * Get scroll position
@@ -1106,11 +1145,11 @@ function CanvasGridComponent(props, forwardedRef) {
1106
1145
  * Touch support
1107
1146
  * Mainly for scrolling
1108
1147
  */
1109
- var _58 = (0, use_touch_1.useTouch)({
1148
+ var _61 = (0, use_touch_1.useTouch)({
1110
1149
  scrollTo: scrollTo,
1111
1150
  scale: scale,
1112
1151
  onChangeScale: onChangeScale,
1113
- }), onTouchStart = _58.onTouchStart, onDimensionsChange = _58.onDimensionsChange, scrollToTouchDevice = _58.scrollToTouchDevice, onAfterScrollToCell = _58.onAfterScrollToCell;
1152
+ }), onTouchStart = _61.onTouchStart, onDimensionsChange = _61.onDimensionsChange, scrollToTouchDevice = _61.scrollToTouchDevice, onAfterScrollToCell = _61.onAfterScrollToCell;
1114
1153
  /**
1115
1154
  * Conditional-formatting evaluation window: the padded, tile-quantized
1116
1155
  * viewport. The raw viewport lives in a ref (no render per scroll frame);
@@ -1118,7 +1157,7 @@ function CanvasGridComponent(props, forwardedRef) {
1118
1157
  * `startTransition` so the CF recompute is low-priority and interruptible —
1119
1158
  * scrolling never blocks on it.
1120
1159
  */
1121
- var _59 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _59[0], setCfWindow = _59[1];
1160
+ var _62 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _62[0], setCfWindow = _62[1];
1122
1161
  var cfWindowRef = (0, react_1.useRef)(null);
1123
1162
  var handleViewPortChange = (0, react_1.useCallback)(function (viewport) {
1124
1163
  onViewPortChange === null || onViewPortChange === void 0 ? void 0 : onViewPortChange(viewport);
@@ -1196,7 +1235,7 @@ function CanvasGridComponent(props, forwardedRef) {
1196
1235
  * We are generating conditionalFormatting on the component level,
1197
1236
  */
1198
1237
  var getEffectiveCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1199
- var _a, _b, _c, _d, _e, _f, _g, _h;
1238
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1200
1239
  var cellFormat = getCellFormat(sheetId, rowIndex, columnIndex);
1201
1240
  var isHyperlink = Boolean(getHyperlink(sheetId, rowIndex, columnIndex));
1202
1241
  var conditionalCellFormat = getConditionalCellFormat(sheetId, rowIndex, columnIndex);
@@ -1234,14 +1273,14 @@ function CanvasGridComponent(props, forwardedRef) {
1234
1273
  // time — `uf.textFormat.underline` is merged on top below, so a user
1235
1274
  // who explicitly sets underline=false still wins.
1236
1275
  var defaultTextFormat = {
1237
- bold: isTableHeader(rowIndex, columnIndex) &&
1276
+ bold: (_f = (_e = bandedCellFormat === null || bandedCellFormat === void 0 ? void 0 : bandedCellFormat.textFormat) === null || _e === void 0 ? void 0 : _e.bold) !== null && _f !== void 0 ? _f : (isTableHeader(rowIndex, columnIndex) &&
1238
1277
  isTableHeaderThemed(rowIndex, columnIndex)
1239
1278
  ? true
1240
- : undefined,
1279
+ : undefined),
1241
1280
  fontFamily: theme.primaryFontFamily,
1242
1281
  color: isHyperlink
1243
1282
  ? theme.themeColors.hyperlink
1244
- : (_g = (_f = patternColor !== null && patternColor !== void 0 ? patternColor : (_e = bandedCellFormat === null || bandedCellFormat === void 0 ? void 0 : bandedCellFormat.textFormat) === null || _e === void 0 ? void 0 : _e.color) !== null && _f !== void 0 ? _f : conditionalFormatColor) !== null && _g !== void 0 ? _g : (0, themes_1.getStringifiedColor)(cellColor, theme),
1283
+ : (_j = (_h = patternColor !== null && patternColor !== void 0 ? patternColor : (_g = bandedCellFormat === null || bandedCellFormat === void 0 ? void 0 : bandedCellFormat.textFormat) === null || _g === void 0 ? void 0 : _g.color) !== null && _h !== void 0 ? _h : conditionalFormatColor) !== null && _j !== void 0 ? _j : (0, themes_1.getStringifiedColor)(cellColor, theme),
1245
1284
  underline: isHyperlink ? true : undefined,
1246
1285
  };
1247
1286
  var mergedFormat = (0, merge_1.default)({
@@ -1252,7 +1291,7 @@ function CanvasGridComponent(props, forwardedRef) {
1252
1291
  // hyperlink color.
1253
1292
  if (patternColor &&
1254
1293
  !isHyperlink &&
1255
- !((_h = conditionalCellFormat === null || conditionalCellFormat === void 0 ? void 0 : conditionalCellFormat.textFormat) === null || _h === void 0 ? void 0 : _h.color)) {
1294
+ !((_k = conditionalCellFormat === null || conditionalCellFormat === void 0 ? void 0 : conditionalCellFormat.textFormat) === null || _k === void 0 ? void 0 : _k.color)) {
1256
1295
  mergedFormat.textFormat = tslib_1.__assign(tslib_1.__assign({}, mergedFormat.textFormat), { color: patternColor });
1257
1296
  }
1258
1297
  return tslib_1.__assign(tslib_1.__assign({}, bandedCellFormat), mergedFormat);
@@ -1364,14 +1403,14 @@ function CanvasGridComponent(props, forwardedRef) {
1364
1403
  tokenizer: formulaLocale.isCanonical ? defaultTokenizer : localeTokenizerBase,
1365
1404
  });
1366
1405
  // Helper function to convert a selection to readable selection address
1367
- var _60 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
1406
+ var _63 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
1368
1407
  sheetId: sheetId,
1369
1408
  rowCount: rowCount,
1370
1409
  columnCount: columnCount,
1371
1410
  tables: tables !== null && tables !== void 0 ? tables : undefined,
1372
1411
  namedRanges: namedRanges !== null && namedRanges !== void 0 ? namedRanges : undefined,
1373
1412
  merges: merges,
1374
- }), 2), getAddressFromSelection = _60[0], getR1C1AddressFromSelection = _60[1];
1413
+ }), 2), getAddressFromSelection = _63[0], getR1C1AddressFromSelection = _63[1];
1375
1414
  /**
1376
1415
  * Exports a data region as image
1377
1416
  */
@@ -1417,7 +1456,7 @@ function CanvasGridComponent(props, forwardedRef) {
1417
1456
  * Get user entered value from a range
1418
1457
  * of cells
1419
1458
  */
1420
- var _61 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
1459
+ var _64 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
1421
1460
  sheetId: sheetId,
1422
1461
  getSelectionsFromFormula: getSelectionsFromFormula,
1423
1462
  getFormattedValue: getFormattedValue,
@@ -1425,7 +1464,7 @@ function CanvasGridComponent(props, forwardedRef) {
1425
1464
  getSheetId: getSheetId,
1426
1465
  onRequestCalculate: onRequestCalculate,
1427
1466
  getValidationSourceValue: getValidationSourceValue,
1428
- }), 3), getFormattedValuesFromAddress = _61[0], getEffectiveValuesFromRange = _61[1], getFormattedValuesFromAddressAsync = _61[2];
1467
+ }), 3), getFormattedValuesFromAddress = _64[0], getEffectiveValuesFromRange = _64[1], getFormattedValuesFromAddressAsync = _64[2];
1429
1468
  /**
1430
1469
  * Get all formatted values from range as a single 1d array
1431
1470
  */
@@ -1762,7 +1801,7 @@ function CanvasGridComponent(props, forwardedRef) {
1762
1801
  * O(n)
1763
1802
  * Reduces Space Complexity by using `all`
1764
1803
  */
1765
- var _62 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
1804
+ var _65 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
1766
1805
  activeCell: activeCell,
1767
1806
  selections: selections,
1768
1807
  selectionLeftBound: selectionLeftBound,
@@ -1770,7 +1809,7 @@ function CanvasGridComponent(props, forwardedRef) {
1770
1809
  rowCount: rowCount,
1771
1810
  columnCount: columnCount,
1772
1811
  getCellBounds: getCellBounds,
1773
- }), 6), selectedRows = _62[0], selectedColumns = _62[1], selectedRowHeaders = _62[2], selectedColumnHeaders = _62[3], selectedRowHeadersIds = _62[4], selectedColumnHeadersIds = _62[5];
1812
+ }), 6), selectedRows = _65[0], selectedColumns = _65[1], selectedRowHeaders = _65[2], selectedColumnHeaders = _65[3], selectedRowHeadersIds = _65[4], selectedColumnHeadersIds = _65[5];
1774
1813
  // Named ranges for editor dropdown
1775
1814
  var getNamedRanges = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
1776
1815
  return namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (range) { return ({
@@ -1840,7 +1879,7 @@ function CanvasGridComponent(props, forwardedRef) {
1840
1879
  * user can select entire column or row when selecting
1841
1880
  * header cells
1842
1881
  */
1843
- var _63 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1882
+ var _66 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1844
1883
  sheetId: sheetId,
1845
1884
  rowCount: rowCount,
1846
1885
  columnCount: columnCount,
@@ -1856,7 +1895,7 @@ function CanvasGridComponent(props, forwardedRef) {
1856
1895
  onChangeActiveCell: onChangeActiveCell,
1857
1896
  scrollToCell: scrollToCell,
1858
1897
  isMergedCell: isMergedCell,
1859
- }), onMouseDownInterceptor = _63.onMouseDownInterceptor, onMouseMoveInterceptor = _63.onMouseMoveInterceptor;
1898
+ }), onMouseDownInterceptor = _66.onMouseDownInterceptor, onMouseMoveInterceptor = _66.onMouseMoveInterceptor;
1860
1899
  /**
1861
1900
  * When user selections full rows
1862
1901
  * or columns, we have to ignore
@@ -1888,7 +1927,8 @@ function CanvasGridComponent(props, forwardedRef) {
1888
1927
  /* Data validation arrow */
1889
1928
  var dataValidation = getDataValidationRule(sheetId, rowIndex, columnIndex);
1890
1929
  var additionalCellSpacing = (_a = getAdditionalCellSpacing === null || getAdditionalCellSpacing === void 0 ? void 0 : getAdditionalCellSpacing(sheetId, rowIndex, columnIndex)) !== null && _a !== void 0 ? _a : 0;
1891
- var showArrow = (0, validation_1.showValidationDropdownArrow)(dataValidation);
1930
+ var showArrow = (0, validation_1.showValidationDropdownArrow)(dataValidation) ||
1931
+ isTableTotalsCell(rowIndex, columnIndex);
1892
1932
  var showChip = getCellMetaType(sheetId, rowIndex, columnIndex) === "people";
1893
1933
  var _d = tslib_1.__read(getCellGroupingInfo(sheetId, rowIndex, columnIndex), 1), expandable = _d[0];
1894
1934
  var iconSpacing = config_1.DEFAULT_CELL_SPACING;
@@ -1938,13 +1978,14 @@ function CanvasGridComponent(props, forwardedRef) {
1938
1978
  getCellGroupingInfo,
1939
1979
  getAdditionalCellSpacing,
1940
1980
  getEffectiveCellFormat,
1981
+ isTableTotalsCell,
1941
1982
  ]);
1942
1983
  /**
1943
1984
  * Column resizer
1944
1985
  * Enables auto resizing
1945
1986
  * rows and columns
1946
1987
  */
1947
- var _64 = (0, use_sizer_1.useSizer)({
1988
+ var _67 = (0, use_sizer_1.useSizer)({
1948
1989
  frozenRows: frozenRows,
1949
1990
  frozenColumns: frozenColumns,
1950
1991
  scale: scale,
@@ -1967,7 +2008,7 @@ function CanvasGridComponent(props, forwardedRef) {
1967
2008
  getDataRowCount: getDataRowCount,
1968
2009
  fontSize: defaultFontSizePoint,
1969
2010
  resizeStrategy: "full",
1970
- }), getColumnWidth = _64.getColumnWidth, getRowHeight = _64.getRowHeight, getCellDimensions = _64.getCellDimensions, getCellDimensionsStable = _64.getCellDimensionsStable, getTextDimension = _64.getTextDimension;
2011
+ }), getColumnWidth = _67.getColumnWidth, getRowHeight = _67.getRowHeight, getCellDimensions = _67.getCellDimensions, getCellDimensionsStable = _67.getCellDimensionsStable, getTextDimension = _67.getTextDimension;
1971
2012
  /**
1972
2013
  * Called when user tries to
1973
2014
  * autofit a column or row
@@ -1987,14 +2028,19 @@ function CanvasGridComponent(props, forwardedRef) {
1987
2028
  ]);
1988
2029
  /* Check if sheet is focused */
1989
2030
  var isSheetFocused = (0, react_1.useCallback)(function () {
1990
- return grid_2.canUseDOM ? document.activeElement === (cellEditorInstance === null || cellEditorInstance === void 0 ? void 0 : cellEditorInstance.el()) : false;
2031
+ var _a;
2032
+ var editorElement = cellEditorInstance === null || cellEditorInstance === void 0 ? void 0 : cellEditorInstance.el();
2033
+ if (!editorElement) {
2034
+ return false;
2035
+ }
2036
+ return ((_a = (0, grid_2.getOwnerDocument)(editorElement)) === null || _a === void 0 ? void 0 : _a.activeElement) === editorElement;
1991
2037
  }, [cellEditorInstance]);
1992
2038
  /**
1993
2039
  * Get Cell Editor
1994
2040
  */
1995
2041
  var getEditor = (0, react_1.useCallback)(function (props) {
1996
- var _a = props.cell, cell = _a === void 0 ? spreadsheet_state_1.defaultCellCoords : _a, sheetId = props.sheetId, _b = props.editingSheetId, editingSheetId = _b === void 0 ? sheetId : _b;
1997
- var _c = cell !== null && cell !== void 0 ? cell : spreadsheet_state_1.defaultCellCoords, rowIndex = _c.rowIndex, columnIndex = _c.columnIndex;
2042
+ var _a = props.cell, cell = _a === void 0 ? defaultCellCoords : _a, sheetId = props.sheetId, _b = props.editingSheetId, editingSheetId = _b === void 0 ? sheetId : _b;
2043
+ var _c = cell !== null && cell !== void 0 ? cell : defaultCellCoords, rowIndex = _c.rowIndex, columnIndex = _c.columnIndex;
1998
2044
  var cellFormat = !(0, utils_1.isNil)(props.editingSheetId)
1999
2045
  ? getEffectiveCellFormat(props.editingSheetId, rowIndex, columnIndex)
2000
2046
  : undefined;
@@ -2041,7 +2087,7 @@ function CanvasGridComponent(props, forwardedRef) {
2041
2087
  /**
2042
2088
  * Popover cell
2043
2089
  */
2044
- var _65 = (0, use_cell_popover_1.useCellPopover)({
2090
+ var _68 = (0, use_cell_popover_1.useCellPopover)({
2045
2091
  sheetId: sheetId,
2046
2092
  getCellPopoverContent: getCellPopoverContent !== null && getCellPopoverContent !== void 0 ? getCellPopoverContent : getFormattedValue,
2047
2093
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -2049,7 +2095,7 @@ function CanvasGridComponent(props, forwardedRef) {
2049
2095
  isFrozenColumn: isFrozenColumn,
2050
2096
  isFrozenRow: isFrozenRow,
2051
2097
  onChangeActiveSheet: onChangeActiveSheet,
2052
- }), popoverComponent = _65.popoverComponent, popoverRange = _65.popoverRange, showCellPopover = _65.showCellPopover, hideCellPopover = _65.hideCellPopover;
2098
+ }), popoverComponent = _68.popoverComponent, popoverRange = _68.popoverRange, showCellPopover = _68.showCellPopover, hideCellPopover = _68.hideCellPopover;
2053
2099
  /**
2054
2100
  * Get tooltip component of a cell
2055
2101
  * Only error, invalid values are
@@ -2279,6 +2325,103 @@ function CanvasGridComponent(props, forwardedRef) {
2279
2325
  (0, react_1.useEffect)(function () {
2280
2326
  setInsertOptions(null);
2281
2327
  }, [activeCell.rowIndex, activeCell.columnIndex, sheetId, setInsertOptions]);
2328
+ /**
2329
+ * Excel's AutoCorrect smart tag after a table auto-expanded. "Undo Table
2330
+ * AutoExpansion" resizes the table back to its pre-growth range and clears
2331
+ * what the growth wrote (calculated-column formulas, generated headers,
2332
+ * inherited formats) in one undo step — the user's own value stays, like
2333
+ * Excel; "Stop Automatically Expanding Tables" hands the option to the host.
2334
+ */
2335
+ var handleChooseTableAutoExpansionOption = (0, react_1.useCallback)(function (option) {
2336
+ if (!tableAutoExpansion)
2337
+ return;
2338
+ if (option === "undo") {
2339
+ if (onUndoTableAutoExpansion) {
2340
+ onUndoTableAutoExpansion(tableAutoExpansion);
2341
+ }
2342
+ else {
2343
+ var table = tables === null || tables === void 0 ? void 0 : tables.find(function (candidate) {
2344
+ return candidate.id === tableAutoExpansion.tableId &&
2345
+ candidate.sheetId === tableAutoExpansion.sheetId;
2346
+ });
2347
+ if (table) {
2348
+ onResizeTable === null || onResizeTable === void 0 ? void 0 : onResizeTable(tableAutoExpansion.sheetId, table, tableAutoExpansion.previousRange);
2349
+ }
2350
+ }
2351
+ }
2352
+ else {
2353
+ onChangeAutoExpandTables === null || onChangeAutoExpandTables === void 0 ? void 0 : onChangeAutoExpandTables(false);
2354
+ }
2355
+ setTableAutoExpansion(null);
2356
+ focusSheet();
2357
+ }, [
2358
+ tableAutoExpansion,
2359
+ tables,
2360
+ onResizeTable,
2361
+ onUndoTableAutoExpansion,
2362
+ onChangeAutoExpandTables,
2363
+ setTableAutoExpansion,
2364
+ focusSheet,
2365
+ ]);
2366
+ // The tag survives the commit's own cursor advance (Enter / Tab) and any cell
2367
+ // of the grown table; moving anywhere else, or switching sheet, drops it.
2368
+ (0, react_1.useEffect)(function () {
2369
+ if (tableAutoExpansion &&
2370
+ !(0, table_auto_expansion_1.keepsTableAutoExpansionTag)(tableAutoExpansion, sheetId, activeCell)) {
2371
+ setTableAutoExpansion(null);
2372
+ }
2373
+ }, [
2374
+ tableAutoExpansion,
2375
+ activeCell.rowIndex,
2376
+ activeCell.columnIndex,
2377
+ activeCell,
2378
+ sheetId,
2379
+ setTableAutoExpansion,
2380
+ ]);
2381
+ /**
2382
+ * Excel's AutoCorrect smart tag after a formula typed into a table column.
2383
+ * "Undo Calculated Column" reverts the fill alone (the typed cell keeps its
2384
+ * formula); "Overwrite all cells in this column with this formula" fills the
2385
+ * column over the cells that kept it from filling; "Stop automatically
2386
+ * creating calculated columns" hands the option to the host.
2387
+ */
2388
+ var handleChooseCalculatedColumnOption = (0, react_1.useCallback)(function (option) {
2389
+ if (!calculatedColumnFill)
2390
+ return;
2391
+ if (option === "undo") {
2392
+ onUndoCalculatedColumn === null || onUndoCalculatedColumn === void 0 ? void 0 : onUndoCalculatedColumn(calculatedColumnFill);
2393
+ }
2394
+ else if (option === "overwrite") {
2395
+ onOverwriteCalculatedColumn === null || onOverwriteCalculatedColumn === void 0 ? void 0 : onOverwriteCalculatedColumn(calculatedColumnFill);
2396
+ }
2397
+ else {
2398
+ onChangeAutoCalculatedColumns === null || onChangeAutoCalculatedColumns === void 0 ? void 0 : onChangeAutoCalculatedColumns(false);
2399
+ }
2400
+ setCalculatedColumnFill(null);
2401
+ focusSheet();
2402
+ }, [
2403
+ calculatedColumnFill,
2404
+ onUndoCalculatedColumn,
2405
+ onOverwriteCalculatedColumn,
2406
+ onChangeAutoCalculatedColumns,
2407
+ setCalculatedColumnFill,
2408
+ focusSheet,
2409
+ ]);
2410
+ // The tag survives the commit's own cursor advance and any cell of the
2411
+ // column; moving anywhere else, or switching sheet, drops it.
2412
+ (0, react_1.useEffect)(function () {
2413
+ if (calculatedColumnFill &&
2414
+ !(0, calculated_column_fill_1.keepsCalculatedColumnTag)(calculatedColumnFill, sheetId, activeCell)) {
2415
+ setCalculatedColumnFill(null);
2416
+ }
2417
+ }, [
2418
+ calculatedColumnFill,
2419
+ activeCell.rowIndex,
2420
+ activeCell.columnIndex,
2421
+ activeCell,
2422
+ sheetId,
2423
+ setCalculatedColumnFill,
2424
+ ]);
2282
2425
  /**
2283
2426
  * Run Excel's Series dialog result: the target range's first row (Series
2284
2427
  * in Columns) / first column (Rows) is the seed line; `stop` may shrink or
@@ -2371,7 +2514,7 @@ function CanvasGridComponent(props, forwardedRef) {
2371
2514
  /**
2372
2515
  * Handle grid selections
2373
2516
  */
2374
- var _66 = (0, use_selection_1.useSelection)({
2517
+ var _69 = (0, use_selection_1.useSelection)({
2375
2518
  sheetId: sheetId,
2376
2519
  getDataRowCount: getDataRowCount,
2377
2520
  enableDataBoundaryNavigation: enableDataBoundaryNavigation,
@@ -2410,11 +2553,13 @@ function CanvasGridComponent(props, forwardedRef) {
2410
2553
  isColumnHeader: isColumnHeader,
2411
2554
  isTouchDevice: helpers_1.isTouchDevice,
2412
2555
  dataRegionBoundaries: dataRegionBoundaries,
2413
- }), onMouseDownSelection = _66.onMouseDown, onPointerDownSelection = _66.onPointerDown, onKeyDownSelection = _66.onKeyDown, fillSelection = _66.fillSelection, fillShrink = _66.fillShrink, onFillHandleMouseDown = _66.onFillHandleMouseDown, onFillHandleDoubleClick = _66.onFillHandleDoubleClick, isDragging = _66.isDragging, isFilling = _66.isFilling, isSelectionInProgress = _66.isSelectionInProgress, draggedSelection = _66.draggedSelection, onSelectionMouseDown = _66.onSelectionMouseDown, setActiveCell = _66.setActiveCell, initialDraggedSelection = _66.initialDraggedSelection, updateSelectionStartEndReference = _66.updateSelectionStartEndReference, selectColumn = _66.selectColumn, getContentfulGridRangeAroundCell = _66.getContentfulGridRangeAroundCell, newSelection = _66.newSelection, modifySelection = _66.modifySelection, clearSelections = _66.clearSelections;
2556
+ tables: tables,
2557
+ onInsertTableRow: onInsertTableRow,
2558
+ }), onMouseDownSelection = _69.onMouseDown, onPointerDownSelection = _69.onPointerDown, onKeyDownSelection = _69.onKeyDown, fillSelection = _69.fillSelection, fillShrink = _69.fillShrink, onFillHandleMouseDown = _69.onFillHandleMouseDown, onFillHandleDoubleClick = _69.onFillHandleDoubleClick, isDragging = _69.isDragging, isFilling = _69.isFilling, isSelectionInProgress = _69.isSelectionInProgress, draggedSelection = _69.draggedSelection, onSelectionMouseDown = _69.onSelectionMouseDown, setActiveCell = _69.setActiveCell, initialDraggedSelection = _69.initialDraggedSelection, updateSelectionStartEndReference = _69.updateSelectionStartEndReference, selectColumn = _69.selectColumn, getContentfulGridRangeAroundCell = _69.getContentfulGridRangeAroundCell, newSelection = _69.newSelection, modifySelection = _69.modifySelection, clearSelections = _69.clearSelections;
2414
2559
  /**
2415
2560
  * Copy, Paste and Cut hook
2416
2561
  */
2417
- var _67 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2562
+ var _70 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2418
2563
  activeCell: activeCell,
2419
2564
  selections: selections,
2420
2565
  sheetId: sheetId,
@@ -2422,7 +2567,38 @@ function CanvasGridComponent(props, forwardedRef) {
2422
2567
  onPaste: onPaste,
2423
2568
  onCopy: onCopy,
2424
2569
  onCut: onCut,
2425
- }), copiedSelections = _67.copiedSelections, isCutPending = _67.isCutPending, copiedSheetId = _67.copiedSheetId, cancelCut = _67.cancelCut, clearCopiedSelections = _67.clearCopiedSelections, copy = _67.copy, cut = _67.cut, paste = _67.paste, onInternalCopy = _67.onInternalCopy, onInternalCut = _67.onInternalCut, onInternalPaste = _67.onInternalPaste;
2570
+ }), copiedSelections = _70.copiedSelections, isCutPending = _70.isCutPending, copiedSheetId = _70.copiedSheetId, cancelCut = _70.cancelCut, clearCopiedSelections = _70.clearCopiedSelections, copy = _70.copy, cut = _70.cut, paste = _70.paste, onInternalCopy = _70.onInternalCopy, onInternalCut = _70.onInternalCut, onInternalPaste = _70.onInternalPaste;
2571
+ /**
2572
+ * Ctrl+C / Ctrl+X / Ctrl+V / Ctrl+D on a selected chart. The focused chart is
2573
+ * the target of those events (see `EmbedDraggable`); a paste that lands in the
2574
+ * cell editor while a chart is on the clipboard is claimed here first.
2575
+ */
2576
+ var chartClipboard = (0, use_chart_clipboard_1.useChartClipboard)({
2577
+ sheetId: sheetId,
2578
+ activeCell: activeCell,
2579
+ charts: charts,
2580
+ readonly: readonly,
2581
+ onCreateChart: onCreateChart,
2582
+ onDeleteChart: onDeleteChart,
2583
+ onCopyChart: onCopyChart,
2584
+ onCutChart: onCutChart,
2585
+ focusSheet: focusSheet,
2586
+ });
2587
+ var copyChart = chartClipboard.copyChart, cutChart = chartClipboard.cutChart, pasteChart = chartClipboard.pasteChart, duplicateChart = chartClipboard.duplicateChart, clearChartClipboard = chartClipboard.clearChartClipboard;
2588
+ var handleEditorCopy = (0, react_1.useCallback)(function (e) {
2589
+ clearChartClipboard();
2590
+ onInternalCopy(e);
2591
+ }, [clearChartClipboard, onInternalCopy]);
2592
+ var handleEditorCut = (0, react_1.useCallback)(function (e) {
2593
+ clearChartClipboard();
2594
+ onInternalCut(e);
2595
+ }, [clearChartClipboard, onInternalCut]);
2596
+ var handleEditorPaste = (0, react_1.useCallback)(function (e) {
2597
+ if (pasteChart(e)) {
2598
+ return;
2599
+ }
2600
+ onInternalPaste(e);
2601
+ }, [pasteChart, onInternalPaste]);
2426
2602
  /**
2427
2603
  * Context menu "Insert Cut Cells" (Excel: Ctrl+X, right-click the destination). A cut of
2428
2604
  * whole rows / columns dropped on a row / column header inserts them BEFORE the clicked
@@ -2663,14 +2839,18 @@ function CanvasGridComponent(props, forwardedRef) {
2663
2839
  });
2664
2840
  /**
2665
2841
  * Get bounds of chart overlay
2666
- * Within the grid body
2842
+ * Within the grid body: from the first cell's top-left corner to the last
2843
+ * row's bottom edge and last column's right edge, so an object can never be
2844
+ * dragged or resized past the sheet (Excel snaps it back inside).
2667
2845
  */
2668
2846
  var getChartBounds = (0, react_1.useCallback)(function () {
2669
2847
  return {
2670
2848
  left: getColumnOffset(1),
2671
2849
  top: getRowOffset(1),
2850
+ right: getColumnOffset(columnCount + 1),
2851
+ bottom: getRowOffset(rowCount + 1),
2672
2852
  };
2673
- }, [getRowOffset, getColumnOffset]);
2853
+ }, [getRowOffset, getColumnOffset, rowCount, columnCount]);
2674
2854
  // Show notes editor
2675
2855
  var onInsertNote = (0, react_1.useCallback)(function (sheetId, cell) {
2676
2856
  setNoteEditorCell(tslib_1.__assign(tslib_1.__assign({}, cell), { sheetId: sheetId }));
@@ -2709,11 +2889,40 @@ function CanvasGridComponent(props, forwardedRef) {
2709
2889
  });
2710
2890
  focusSheet();
2711
2891
  }, [setQuickEditState, enableQuickEdit, focusSheet]);
2892
+ /**
2893
+ * Opens the cell editor pre-filled (the totals row's "More Functions…").
2894
+ * `editCell` comes from `useEditable` below; this stable wrapper lets the
2895
+ * context menu reach it.
2896
+ */
2897
+ var requestEditCell = (0, use_callback_ref_1.useCallbackRef)(function (targetSheetId, cell, initialValue) {
2898
+ return editCell(targetSheetId, cell, initialValue);
2899
+ });
2900
+ /**
2901
+ * The context menu's table Select items: replace the selection with a
2902
+ * range and park the active cell at its top-left, without scrolling.
2903
+ */
2904
+ var selectRangeFromMenu = (0, react_1.useCallback)(function (targetSheetId, range) {
2905
+ setActiveCell(targetSheetId, { rowIndex: range.startRowIndex, columnIndex: range.startColumnIndex }, false);
2906
+ onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(targetSheetId, [{ range: range }]);
2907
+ }, [setActiveCell, onChangeSelections]);
2908
+ // Excel's table hit zones (header top edge / corner / row left edge).
2909
+ var _71 = (0, use_table_hit_zones_1.useTableHitZones)({
2910
+ sheetId: sheetId,
2911
+ tables: activeTables,
2912
+ selections: selections,
2913
+ frozenRows: frozenRows,
2914
+ frozenColumns: frozenColumns,
2915
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2916
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
2917
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2918
+ getScrollPosition: getScrollPosition,
2919
+ onSelectRange: selectRangeFromMenu,
2920
+ }), tableHitCursor = _71.cursor, onMouseMoveTableHitZones = _71.onMouseMove, onMouseDownTableHitZones = _71.onMouseDown, clearTableHitZone = _71.clearHitZone;
2712
2921
  /**
2713
2922
  * Get context Menu component
2714
2923
  */
2715
2924
  var getContextMenu = (0, react_1.useCallback)(function (cell) {
2716
- return (react_1.default.createElement(ContextMenu, { activeCell: activeCell, selections: selections, sheetId: sheetId, frozenRows: frozenRows, frozenColumns: frozenColumns, onHideColumn: isRestricted ? undefined : onHideColumn, onShowColumn: isRestricted ? undefined : onShowColumn, onShowRow: isRestricted ? undefined : onShowRow, onHideRow: isRestricted ? undefined : onHideRow, onGroupRows: isRestricted ? undefined : onGroupRows, onUngroupRows: isRestricted ? undefined : onUngroupRows, onGroupColumns: isRestricted ? undefined : onGroupColumns, onUngroupColumns: isRestricted ? undefined : onUngroupColumns, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, onDeleteColumn: onDeleteColumn, onDeleteRow: onDeleteRow, onInsertRow: insertRowWithOptions, onInsertColumn: insertColumnWithOptions, rowCount: rowCount, columnCount: columnCount, onInsertCellsShiftDown: onInsertCellsShiftDown, onInsertCellsShiftRight: onInsertCellsShiftRight, onDeleteCellsShiftLeft: onDeleteCellsShiftLeft, onDeleteCellsShiftUp: onDeleteCellsShiftUp, onClearContents: onClearContents, onFreezeColumn: onFreezeColumn, onFreezeRow: onFreezeRow, focusSheet: focusSheet, onSortColumn: onSortColumn, onInsertNote: onInsertNote, onProtectRange: onProtectRange, onUnProtectRange: onUnProtectRange, onSortRange: onSortRange, onRequestDefineNamedRange: onRequestDefineNamedRange, protectedRanges: protectedRanges, isRowHeader: isRowHeader(cell.columnIndex), isColumnHeader: isColumnHeader(cell.rowIndex), selectedRowHeadersIds: selectedRowHeadersIds, selectedColumnHeadersIds: selectedColumnHeadersIds, onCopy: copy, onCut: cut, hasCutSelection: isCutPending && copiedSheetId === sheetId, onInsertCutCells: insertCutCellsFromMenu, onPaste: paste, onRequestPasteSpecial: requestPasteSpecial, onRequestEvaluateFormula: requestEvaluateFormula, onRequestAddWatch: requestAddWatch, isActiveCellFormula: Boolean(getFormulaValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)), onRequestResize: onRequestResize, isSheetFocused: isSheetFocused, tables: activeTables, pivotTables: pivotTables, basicFilter: basicFilter, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, onRemoveTable: onRemoveTable, onRequestDeletePivotTable: onRequestDeletePivotTable, onPivotDrillDown: onPivotDrillDown, onRequestFormatCells: onRequestFormatCells, onRequestConditionalFormat: onRequestConditionalFormat, onRequestDataValidation: onRequestDataValidation, onClearFormatting: onClearFormatting, onCreateTable: onCreateTable, onCreateBasicFilter: onCreateBasicFilter, onInsertTableColumn: onInsertTableColumn, onDeleteTableColumn: onDeleteTableColumn, onInsertTableRow: onInsertTableRow, onDeleteTableRow: onDeleteTableRow, onFilterTable: onFilterTable, onSortTable: onSortTable, getFormattedValue: getFormattedValue, getFormattedValuesFromRange: getFormattedValuesFromRange, isTableHeader: isTableHeader, readonly: readonly, onSplitTextToColumns: onSplitTextToColumns, onRemoveDuplicates: onRemoveDuplicates, onGoalSeek: onGoalSeek, onSubtotal: onSubtotal, onAdvancedFilter: onAdvancedFilter, onChange: onChange, getCellData: getCellData, onAddQuickEdit: onAddQuickEdit, enableMagicFill: enableMagicFill }));
2925
+ return (react_1.default.createElement(ContextMenu, { activeCell: activeCell, selections: selections, sheetId: sheetId, frozenRows: frozenRows, frozenColumns: frozenColumns, onHideColumn: isRestricted ? undefined : onHideColumn, onShowColumn: isRestricted ? undefined : onShowColumn, onShowRow: isRestricted ? undefined : onShowRow, onHideRow: isRestricted ? undefined : onHideRow, onGroupRows: isRestricted ? undefined : onGroupRows, onUngroupRows: isRestricted ? undefined : onUngroupRows, onGroupColumns: isRestricted ? undefined : onGroupColumns, onUngroupColumns: isRestricted ? undefined : onUngroupColumns, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, onDeleteColumn: onDeleteColumn, onDeleteRow: onDeleteRow, onInsertRow: insertRowWithOptions, onInsertColumn: insertColumnWithOptions, rowCount: rowCount, columnCount: columnCount, onInsertCellsShiftDown: onInsertCellsShiftDown, onInsertCellsShiftRight: onInsertCellsShiftRight, onDeleteCellsShiftLeft: onDeleteCellsShiftLeft, onDeleteCellsShiftUp: onDeleteCellsShiftUp, onClearContents: onClearContents, onFreezeColumn: onFreezeColumn, onFreezeRow: onFreezeRow, focusSheet: focusSheet, onSortColumn: onSortColumn, onInsertNote: onInsertNote, onProtectRange: onProtectRange, onUnProtectRange: onUnProtectRange, onSortRange: onSortRange, onRequestDefineNamedRange: onRequestDefineNamedRange, protectedRanges: protectedRanges, isRowHeader: isRowHeader(cell.columnIndex), isColumnHeader: isColumnHeader(cell.rowIndex), selectedRowHeadersIds: selectedRowHeadersIds, selectedColumnHeadersIds: selectedColumnHeadersIds, onCopy: copy, onCut: cut, hasCutSelection: isCutPending && copiedSheetId === sheetId, onInsertCutCells: insertCutCellsFromMenu, onPaste: paste, onRequestPasteSpecial: requestPasteSpecial, onRequestEvaluateFormula: requestEvaluateFormula, onRequestAddWatch: requestAddWatch, isActiveCellFormula: Boolean(getFormulaValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)), onRequestResize: onRequestResize, isSheetFocused: isSheetFocused, tables: activeTables, pivotTables: pivotTables, basicFilter: basicFilter, onRequestEditTable: onRequestEditTable, onRequestResizeTable: onRequestResizeTable, onRequestInsertSlicer: onRequestInsertSlicer, onRequestEditPivotTable: onRequestEditPivotTable, onRemoveTable: onRemoveTable, onRequestDeletePivotTable: onRequestDeletePivotTable, onRequestCreatePivotChart: onRequestCreatePivotChart, onPivotDrillDown: onPivotDrillDown, onRequestFormatCells: onRequestFormatCells, onRequestConditionalFormat: onRequestConditionalFormat, onRequestDataValidation: onRequestDataValidation, onClearFormatting: onClearFormatting, onCreateTable: onCreateTable, onRequestCreateTable: onRequestCreateTable, onCreateBasicFilter: onCreateBasicFilter, onInsertTableColumn: onInsertTableColumn, onDeleteTableColumn: onDeleteTableColumn, onInsertTableRow: onInsertTableRow, onDeleteTableRow: onDeleteTableRow, onUpdateTable: onUpdateTable, onRequestEditCell: requestEditCell, onSelectRange: selectRangeFromMenu, onFilterTable: onFilterTable, onSortTable: onSortTable, getFormattedValue: getFormattedValue, getFormattedValuesFromRange: getFormattedValuesFromRange, isTableHeader: isTableHeader, readonly: readonly, onSplitTextToColumns: onSplitTextToColumns, onRemoveDuplicates: onRemoveDuplicates, onGoalSeek: onGoalSeek, onSubtotal: onSubtotal, onAdvancedFilter: onAdvancedFilter, onChange: onChange, getCellData: getCellData, onAddQuickEdit: onAddQuickEdit, enableMagicFill: enableMagicFill }));
2717
2926
  }, [
2718
2927
  isRestricted,
2719
2928
  activeCell,
@@ -2764,6 +2973,8 @@ function CanvasGridComponent(props, forwardedRef) {
2764
2973
  onFilterTable,
2765
2974
  onSortTable,
2766
2975
  onRequestEditTable,
2976
+ onRequestResizeTable,
2977
+ onRequestInsertSlicer,
2767
2978
  onRequestEditPivotTable,
2768
2979
  onRemoveTable,
2769
2980
  onRequestFormatCells,
@@ -2772,8 +2983,12 @@ function CanvasGridComponent(props, forwardedRef) {
2772
2983
  onRequestDataValidation,
2773
2984
  onCreateBasicFilter,
2774
2985
  onCreateTable,
2986
+ onRequestCreateTable,
2775
2987
  onDeleteTableColumn,
2776
2988
  onInsertTableRow,
2989
+ onUpdateTable,
2990
+ requestEditCell,
2991
+ selectRangeFromMenu,
2777
2992
  getFormattedValue,
2778
2993
  getFormattedValuesFromRange,
2779
2994
  onInsertTableColumn,
@@ -2789,6 +3004,7 @@ function CanvasGridComponent(props, forwardedRef) {
2789
3004
  onChange,
2790
3005
  getCellData,
2791
3006
  onRequestDeletePivotTable,
3007
+ onRequestCreatePivotChart,
2792
3008
  isHiddenColumn,
2793
3009
  isHiddenRow,
2794
3010
  onShowColumn,
@@ -2803,7 +3019,7 @@ function CanvasGridComponent(props, forwardedRef) {
2803
3019
  * Displays Context menu when user right clicks
2804
3020
  * the grid
2805
3021
  */
2806
- var _68 = (0, use_context_menu_1.useContextMenu)({
3022
+ var _72 = (0, use_context_menu_1.useContextMenu)({
2807
3023
  getCellCoordsFromOffset: getCellCoordsFromOffset,
2808
3024
  getRelativePositionFromOffset: getRelativePositionFromOffset,
2809
3025
  isRowHeader: isRowHeader,
@@ -2812,7 +3028,7 @@ function CanvasGridComponent(props, forwardedRef) {
2812
3028
  getCellOffsetFromCoords: getCellOffsetFromCoords,
2813
3029
  getScrollPosition: getScrollPosition,
2814
3030
  ContextMenuWrapper: ContextMenuWrapper,
2815
- }), onContextMenu = _68.onContextMenu, contextMenuComponent = _68.contextMenuComponent, onRequestCloseContextMenu = _68.onRequestClose, showContextMenu = _68.showContextMenu;
3031
+ }), onContextMenu = _72.onContextMenu, contextMenuComponent = _72.contextMenuComponent, onRequestCloseContextMenu = _72.onRequestClose, showContextMenu = _72.showContextMenu;
2816
3032
  /**
2817
3033
  * Shortcut handlers for formatting
2818
3034
  * TODO: Decide on the output
@@ -2852,6 +3068,7 @@ function CanvasGridComponent(props, forwardedRef) {
2852
3068
  onUndo: onUndo,
2853
3069
  onRedo: onRedo,
2854
3070
  onCreateTable: onCreateTable,
3071
+ onRequestCreateTable: onRequestCreateTable,
2855
3072
  onCreateBasicFilter: onCreateBasicFilter,
2856
3073
  clearCopiedSelections: clearCopiedSelections,
2857
3074
  onRequestSearch: onRequestSearch,
@@ -2892,7 +3109,7 @@ function CanvasGridComponent(props, forwardedRef) {
2892
3109
  /**
2893
3110
  * Allow grid to be ediable
2894
3111
  */
2895
- var _69 = (0, use_editable_1.useEditable)({
3112
+ var _73 = (0, use_editable_1.useEditable)({
2896
3113
  sheetId: sheetId,
2897
3114
  enableEditOnEnterKey: enableEditOnEnterKey,
2898
3115
  canEdit: canEditCell,
@@ -2938,14 +3155,16 @@ function CanvasGridComponent(props, forwardedRef) {
2938
3155
  scrollToCell: scrollToCell,
2939
3156
  containerWidth: width,
2940
3157
  containerHeight: height,
2941
- onCopy: onInternalCopy,
2942
- onPaste: onInternalPaste,
2943
- onCut: onInternalCut,
2944
- }), onMouseDownEditable = _69.onMouseDown, onDoubleClickEditable = _69.onDoubleClick, editorComponent = _69.editorComponent, isEditInProgress = _69.isEditInProgress, makeEditable = _69.makeEditable, editCell = _69.editCell, setEditorValue = _69.setEditorValue, hideEditor = _69.hideEditor, getNextFocusableCell = _69.getNextFocusableCell, submitEditor = _69.submitEditor, cancelEditor = _69.cancelEditor, commit = _69.commit;
3158
+ onCopy: handleEditorCopy,
3159
+ onPaste: handleEditorPaste,
3160
+ onCut: handleEditorCut,
3161
+ tables: tables,
3162
+ onInsertTableRow: onInsertTableRow,
3163
+ }), onMouseDownEditable = _73.onMouseDown, onDoubleClickEditable = _73.onDoubleClick, editorComponent = _73.editorComponent, isEditInProgress = _73.isEditInProgress, makeEditable = _73.makeEditable, editCell = _73.editCell, setEditorValue = _73.setEditorValue, hideEditor = _73.hideEditor, getNextFocusableCell = _73.getNextFocusableCell, submitEditor = _73.submitEditor, cancelEditor = _73.cancelEditor, commit = _73.commit;
2945
3164
  /**
2946
3165
  * Move rows and columns
2947
3166
  */
2948
- var _70 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
3167
+ var _74 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
2949
3168
  getCellOffsetFromCoords: getCellOffsetFromCoords,
2950
3169
  getCellCoordsFromOffset: getCellCoordsFromOffset,
2951
3170
  getRelativePositionFromOffset: getRelativePositionFromOffset,
@@ -2968,11 +3187,11 @@ function CanvasGridComponent(props, forwardedRef) {
2968
3187
  sheetId: sheetId,
2969
3188
  disabled: isRestricted,
2970
3189
  HeaderMoveDragComponent: HeaderMoveDragComponent,
2971
- }), draggableColumns = _70.draggableColumns, draggableRows = _70.draggableRows, isDraggingRowsAndColumns = _70.isDragging;
3190
+ }), draggableColumns = _74.draggableColumns, draggableRows = _74.draggableRows, isDraggingRowsAndColumns = _74.isDragging;
2972
3191
  /**
2973
3192
  * Header actions
2974
3193
  */
2975
- var _71 = (0, use_header_actions_1.useHeaderActions)({
3194
+ var _75 = (0, use_header_actions_1.useHeaderActions)({
2976
3195
  activeCell: isSelectionInProgress || isFilling || isDragging ? null : hoveredCell,
2977
3196
  getScrollPosition: getScrollPosition,
2978
3197
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -2999,7 +3218,7 @@ function CanvasGridComponent(props, forwardedRef) {
2999
3218
  selectedRowHeadersIds: selectedRowHeadersIds,
3000
3219
  selectedColumnHeadersIds: selectedColumnHeadersIds,
3001
3220
  enableResizerOverflow: enableResizerOverflow,
3002
- }), headerMenuComponent = _71.headerMenuComponent, isHeaderMenuInFrozenColumn = _71.isHeaderMenuInFrozenColumn, headerResizer = _71.headerResizer, isDraggingHeader = _71.isDragging;
3221
+ }), headerMenuComponent = _75.headerMenuComponent, isHeaderMenuInFrozenColumn = _75.isHeaderMenuInFrozenColumn, headerResizer = _75.headerResizer, isDraggingHeader = _75.isDragging;
3003
3222
  /**
3004
3223
  * Close tooltip
3005
3224
  */
@@ -3041,7 +3260,7 @@ function CanvasGridComponent(props, forwardedRef) {
3041
3260
  /**
3042
3261
  * Show basicFilter panels
3043
3262
  */
3044
- var _72 = (0, use_filter_1.useFilter)({
3263
+ var _76 = (0, use_filter_1.useFilter)({
3045
3264
  sheetId: sheetId,
3046
3265
  scale: scale,
3047
3266
  theme: theme,
@@ -3066,9 +3285,9 @@ function CanvasGridComponent(props, forwardedRef) {
3066
3285
  // Live filter state so the open popup tracks Auto-apply spec changes.
3067
3286
  basicFilter: basicFilter,
3068
3287
  tables: activeTables,
3069
- }), showFilter = _72.showFilter, hideFilter = _72.hideFilter, filterComponent = _72.filterComponent;
3288
+ }), showFilter = _76.showFilter, hideFilter = _76.hideFilter, filterComponent = _76.filterComponent;
3070
3289
  // Table resize
3071
- var _73 = (0, use_table_resizer_1.useTableResizer)({
3290
+ var _77 = (0, use_table_resizer_1.useTableResizer)({
3072
3291
  sheetId: sheetId,
3073
3292
  tables: tables !== null && tables !== void 0 ? tables : undefined,
3074
3293
  theme: theme,
@@ -3079,11 +3298,11 @@ function CanvasGridComponent(props, forwardedRef) {
3079
3298
  scrollToCell: scrollToCell,
3080
3299
  onResizeTable: onResizeTable,
3081
3300
  focusSheet: focusSheet,
3082
- }), tableResizers = _73.tableResizers, isResizingTable = _73.isResizingTable;
3301
+ }), tableResizers = _77.tableResizers, isResizingTable = _77.isResizingTable;
3083
3302
  /**
3084
3303
  * Displays resizable/draggable charts
3085
3304
  */
3086
- var _74 = (0, use_embeds_charts_1.useEmbedsCharts)({
3305
+ var _78 = (0, use_embeds_charts_1.useEmbedsCharts)({
3087
3306
  charts: charts,
3088
3307
  embeds: embeds,
3089
3308
  slicers: slicers,
@@ -3094,14 +3313,20 @@ function CanvasGridComponent(props, forwardedRef) {
3094
3313
  getCellOffsetFromCoords: getCellOffsetFromCoords,
3095
3314
  getAbsolutePositionFromOffset: getAbsolutePositionFromOffset,
3096
3315
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3316
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
3097
3317
  getScrollPosition: getScrollPosition,
3318
+ ContextMenuWrapper: ContextMenuWrapper,
3319
+ focusSheet: focusSheet,
3098
3320
  selectedColor: chartSelectedColor,
3099
3321
  onMoveChart: onMoveChart,
3100
3322
  onResizeChart: onResizeChart,
3323
+ chartClipboard: chartClipboard,
3101
3324
  onMoveEmbed: onMoveEmbed,
3102
3325
  onResizeEmbed: onResizeEmbed,
3103
3326
  onDeleteEmbed: onDeleteEmbed,
3104
3327
  onDeleteChart: onDeleteChart,
3328
+ onUpdateChart: onUpdateChart,
3329
+ onChangeZOrder: onChangeZOrder,
3105
3330
  onRequestEditEmbed: onRequestEditEmbed,
3106
3331
  onMoveSlicer: onMoveSlicer,
3107
3332
  onResizeSlicer: onResizeSlicer,
@@ -3120,7 +3345,7 @@ function CanvasGridComponent(props, forwardedRef) {
3120
3345
  backgroundColor: cellBackgroundColor,
3121
3346
  disabled: isRestricted,
3122
3347
  readonly: readonly,
3123
- }), chartComponents = _74.chartComponents, embedComponents = _74.embedComponents, slicerComponents = _74.slicerComponents, onMouseDownCharts = _74.onMouseDown;
3348
+ }), chartComponents = _78.chartComponents, embedComponents = _78.embedComponents, slicerComponents = _78.slicerComponents, embedContextMenuComponent = _78.contextMenuComponent, onMouseDownCharts = _78.onMouseDown, requestChartContextMenu = _78.requestChartContextMenu;
3124
3349
  /**
3125
3350
  * Callback when user clicks Filter icon
3126
3351
  * Show Filter dropdown here
@@ -3175,6 +3400,57 @@ function CanvasGridComponent(props, forwardedRef) {
3175
3400
  onExpandCollapse === null || onExpandCollapse === void 0 ? void 0 : onExpandCollapse(sheetId, cell, groupKeys, newExpandedState, childrenCount);
3176
3401
  }
3177
3402
  }, [onExpandCollapse, getCellGroupKeys, getChildrenCount]);
3403
+ /**
3404
+ * The totals-function picker a totals cell's in-cell arrow opens (Excel):
3405
+ * anchored at the cell's bottom-right corner like the filter dropdown.
3406
+ */
3407
+ var _79 = tslib_1.__read((0, react_1.useState)(null), 2), totalsPicker = _79[0], setTotalsPicker = _79[1];
3408
+ var closeTotalsPicker = (0, react_1.useCallback)(function () { return setTotalsPicker(null); }, []);
3409
+ var handleTotalsArrowClick = (0, react_1.useCallback)(function (cell) {
3410
+ var table = activeTables === null || activeTables === void 0 ? void 0 : activeTables.find(function (candidate) {
3411
+ return candidate.totalRow &&
3412
+ cell.rowIndex === candidate.range.endRowIndex &&
3413
+ (0, grid_4.isCellWithinBounds)(cell, candidate.range);
3414
+ });
3415
+ var cellPosition = getCellOffsetFromCoords(cell);
3416
+ var scrollPosition = getScrollPosition();
3417
+ if (!table || !cellPosition) {
3418
+ return;
3419
+ }
3420
+ var _a = cellPosition.x, x = _a === void 0 ? 0 : _a, _b = cellPosition.y, y = _b === void 0 ? 0 : _b, _c = cellPosition.width, width = _c === void 0 ? 0 : _c, _d = cellPosition.height, height = _d === void 0 ? 0 : _d;
3421
+ var scrollX = isFrozenColumn(cell.columnIndex)
3422
+ ? 0
3423
+ : scrollPosition.scrollLeft;
3424
+ var scrollY = isFrozenRow(cell.rowIndex) ? 0 : scrollPosition.scrollTop;
3425
+ setActiveCell(sheetId, cell, false);
3426
+ setTotalsPicker({
3427
+ table: table,
3428
+ cell: cell,
3429
+ left: x + width - scrollX,
3430
+ top: y + height - scrollY,
3431
+ });
3432
+ }, [
3433
+ activeTables,
3434
+ getCellOffsetFromCoords,
3435
+ getScrollPosition,
3436
+ isFrozenColumn,
3437
+ isFrozenRow,
3438
+ setActiveCell,
3439
+ sheetId,
3440
+ ]);
3441
+ var totalsPickerComponent = totalsPicker ? (react_1.default.createElement(style_1.StyledContextMenuWrapper, { style: {
3442
+ transform: "translate3d(".concat(totalsPicker.left, "px, ").concat(totalsPicker.top, "px, 0)"),
3443
+ } },
3444
+ react_1.default.createElement(menu_1.ContextMenuDropdown, { isOpen: true, onOpenChange: function (open) {
3445
+ if (!open)
3446
+ closeTotalsPicker();
3447
+ } },
3448
+ react_1.default.createElement(ui_1.DropdownMenuPortal, null,
3449
+ react_1.default.createElement(ui_1.DropdownMenuContent, { align: "end", sideOffset: 0, onCloseAutoFocus: function (event) {
3450
+ event.preventDefault();
3451
+ focusSheet();
3452
+ }, onMouseMove: function (e) { return e.stopPropagation(); } },
3453
+ react_1.default.createElement(total_row_function_menu_1.TotalRowFunctionMenuItems, { sheetId: sheetId, table: totalsPicker.table, cell: totalsPicker.cell, readonly: readonly, getCellData: getCellData, onChange: onChange, onClearContents: onClearContents, onUpdateTable: onUpdateTable, onRequestEditCell: requestEditCell })))))) : null;
3178
3454
  /**
3179
3455
  * Capture mouse move events
3180
3456
  */
@@ -3185,8 +3461,10 @@ function CanvasGridComponent(props, forwardedRef) {
3185
3461
  isDraggingHeader ||
3186
3462
  isSelectionInProgress ||
3187
3463
  isFilling) {
3464
+ clearTableHitZone();
3188
3465
  return;
3189
3466
  }
3467
+ onMouseMoveTableHitZones(e);
3190
3468
  var coords = getCellCoordsFromOffset(e.clientX, e.clientY);
3191
3469
  if (!coords || (0, grid_5.isEqualCells)(hoveredCellRef.current, coords)) {
3192
3470
  return;
@@ -3200,6 +3478,8 @@ function CanvasGridComponent(props, forwardedRef) {
3200
3478
  isSelectionInProgress,
3201
3479
  isFilling,
3202
3480
  hoveredCellRef,
3481
+ onMouseMoveTableHitZones,
3482
+ clearTableHitZone,
3203
3483
  ]);
3204
3484
  // Mouse move throttler
3205
3485
  var mouseMoveThrottler = (0, use_callback_ref_1.useCallbackRef)((0, throttle_1.default)(handleMouseMove, mouseMoveThrottleTimeout, {
@@ -3233,8 +3513,12 @@ function CanvasGridComponent(props, forwardedRef) {
3233
3513
  if (formulaMode && isMetaKey) {
3234
3514
  setFormulaState(function (prev) { return (tslib_1.__assign(tslib_1.__assign({}, prev), { selectionMode: "append" })); });
3235
3515
  }
3236
- // Pass it on to use selection hook
3237
- onMouseDownSelection(e);
3516
+ // A table hit zone (header edge / corner / row edge) selects the table
3517
+ // part instead of starting a cell selection.
3518
+ if (!onMouseDownTableHitZones(e)) {
3519
+ // Pass it on to use selection hook
3520
+ onMouseDownSelection(e);
3521
+ }
3238
3522
  // Charts
3239
3523
  onMouseDownCharts === null || onMouseDownCharts === void 0 ? void 0 : onMouseDownCharts();
3240
3524
  /**
@@ -3246,6 +3530,7 @@ function CanvasGridComponent(props, forwardedRef) {
3246
3530
  }
3247
3531
  // Hide filter
3248
3532
  hideFilter();
3533
+ closeTotalsPicker();
3249
3534
  // Hide popover
3250
3535
  hideCellPopover();
3251
3536
  // Hide paste mnenu
@@ -3256,8 +3541,10 @@ function CanvasGridComponent(props, forwardedRef) {
3256
3541
  onUnpinTooltip();
3257
3542
  }, [
3258
3543
  onMouseDownSelection,
3544
+ onMouseDownTableHitZones,
3259
3545
  onRequestCloseContextMenu,
3260
3546
  hideFilter,
3547
+ closeTotalsPicker,
3261
3548
  onMouseDownCharts,
3262
3549
  formulaMode,
3263
3550
  setFormulaState,
@@ -3378,8 +3665,10 @@ function CanvasGridComponent(props, forwardedRef) {
3378
3665
  /**
3379
3666
  * Render Cells in the grid
3380
3667
  */
3381
- var _75 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
3668
+ var _80 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
3382
3669
  sheetId: sheetId,
3670
+ isTableTotalsCell: isTableTotalsCell,
3671
+ onTotalsArrowClick: handleTotalsArrowClick,
3383
3672
  formulaLocale: formulaLocale,
3384
3673
  showGridLines: showGridLines,
3385
3674
  scale: scale,
@@ -3418,6 +3707,7 @@ function CanvasGridComponent(props, forwardedRef) {
3418
3707
  getNote: getNote,
3419
3708
  getComment: getComment,
3420
3709
  getEffectiveValue: getEffectiveValue,
3710
+ getSparklineGroup: getSparklineGroup,
3421
3711
  getFormattedValue: getFormattedValue,
3422
3712
  getCellImageUrl: getCellImageUrl,
3423
3713
  getEffectiveCellFormat: getEffectiveCellFormat,
@@ -3445,7 +3735,7 @@ function CanvasGridComponent(props, forwardedRef) {
3445
3735
  onOverflow: handleOverflow,
3446
3736
  isComparing: isComparing,
3447
3737
  getCellDiff: getCellDiff,
3448
- }), 4), cellBackgroundRenderer = _75[0], cellRenderer = _75[1], cellOverlayRenderer = _75[2], headerCellRenderer = _75[3];
3738
+ }), 4), cellBackgroundRenderer = _80[0], cellRenderer = _80[1], cellOverlayRenderer = _80[2], headerCellRenderer = _80[3];
3449
3739
  /**
3450
3740
  * When user selects a selection for moving
3451
3741
  * If its a table, we select the entire column
@@ -3481,11 +3771,25 @@ function CanvasGridComponent(props, forwardedRef) {
3481
3771
  tokenizer: localeTokenizer,
3482
3772
  });
3483
3773
  // Selection move: drag a formula reference via its border covers
3484
- var _76 = (0, use_selection_move_1.useSelectionMove)({
3774
+ var _81 = (0, use_selection_move_1.useSelectionMove)({
3485
3775
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3486
3776
  scrollToCell: scrollToCell,
3487
3777
  tokenizer: localeTokenizer,
3488
- }), onMouseDownMoveSelection = _76.onMouseDownMoveSelection, isDraggingMoveSelection = _76.isDragging;
3778
+ }), onMouseDownMoveSelection = _81.onMouseDownMoveSelection, isDraggingMoveSelection = _81.isDragging;
3779
+ /**
3780
+ * Selected chart: outline its source ranges on this sheet and re-bind
3781
+ * them when a corner handle is dragged (Excel's chart data highlight).
3782
+ */
3783
+ var _82 = (0, use_chart_source_ranges_1.useChartSourceRanges)({
3784
+ charts: charts,
3785
+ sheetId: sheetId,
3786
+ getSheetName: getSheetName,
3787
+ readonly: readonly,
3788
+ onUpdateChart: onUpdateChart,
3789
+ getCellBounds: getCellBounds,
3790
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
3791
+ scrollToCell: scrollToCell,
3792
+ }), chartSourceBorderStyles = _82.chartSourceBorderStyles, onMouseDownChartSourceResizeHandle = _82.onMouseDownChartSourceResizeHandle;
3489
3793
  /**
3490
3794
  * Hide fill handle
3491
3795
  * 1. When user is in edit mode
@@ -3498,9 +3802,9 @@ function CanvasGridComponent(props, forwardedRef) {
3498
3802
  /**
3499
3803
  * Flashing
3500
3804
  */
3501
- var _77 = (0, use_flash_1.useFlash)({
3805
+ var _83 = (0, use_flash_1.useFlash)({
3502
3806
  theme: theme,
3503
- }), flash = _77.flash, mark = _77.mark, unmark = _77.unmark, onFlashEnd = _77.onFlashEnd, flashingBorders = _77.flashingBorders;
3807
+ }), flash = _83.flash, mark = _83.mark, unmark = _83.unmark, onFlashEnd = _83.onFlashEnd, flashingBorders = _83.flashingBorders;
3504
3808
  // Cache hover ids
3505
3809
  var cachedHoveredSelectionIds = (0, use_hovered_selection_ids_1.useHoveredSelectionIds)({
3506
3810
  selections: selections,
@@ -3518,6 +3822,7 @@ function CanvasGridComponent(props, forwardedRef) {
3518
3822
  isFillShrink: fillShrink !== undefined,
3519
3823
  onSelectionMouseDown: onSelectionElementMouseDown,
3520
3824
  onMouseDownResizeHandle: onMouseDownResizeHandle,
3825
+ onMouseDownChartSourceResizeHandle: onMouseDownChartSourceResizeHandle,
3521
3826
  onMouseDownMoveSelection: onMouseDownMoveSelection,
3522
3827
  isDraggingMoveSelection: isDraggingMoveSelection,
3523
3828
  onChangeActiveCell: onChangeActiveCell,
@@ -3550,6 +3855,12 @@ function CanvasGridComponent(props, forwardedRef) {
3550
3855
  onCloseFillOptions: handleCloseFillOptions,
3551
3856
  insertOptions: insertOptions,
3552
3857
  onChooseInsertOption: handleChooseInsertOption,
3858
+ tableAutoExpansion: tableAutoExpansion,
3859
+ canStopAutoExpandingTables: !!onChangeAutoExpandTables,
3860
+ onChooseTableAutoExpansionOption: handleChooseTableAutoExpansionOption,
3861
+ calculatedColumnFill: calculatedColumnFill,
3862
+ canStopAutoCalculatedColumns: !!onChangeAutoCalculatedColumns,
3863
+ onChooseCalculatedColumnOption: handleChooseCalculatedColumnOption,
3553
3864
  hoveredCell: delayedHoveredCell,
3554
3865
  onRemoveQuickEdit: onRemoveQuickEdit,
3555
3866
  onAddQuickEdit: onAddQuickEdit,
@@ -3584,8 +3895,13 @@ function CanvasGridComponent(props, forwardedRef) {
3584
3895
  agentSuggestions: agentSuggestions,
3585
3896
  quickEditValues: quickEditValues,
3586
3897
  });
3898
+ // A selected chart's source outlines draw on top of the other range borders.
3899
+ var gridBorderStyles = (0, react_1.useMemo)(function () {
3900
+ return chartSourceBorderStyles.length
3901
+ ? tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(finalBorderStyles), false), tslib_1.__read(chartSourceBorderStyles), false) : finalBorderStyles;
3902
+ }, [finalBorderStyles, chartSourceBorderStyles]);
3587
3903
  // Hidden column markers
3588
- var _78 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
3904
+ var _84 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
3589
3905
  sheetId: sheetId,
3590
3906
  columnMetadata: columnMetadata,
3591
3907
  rowMetadata: rowMetadata,
@@ -3598,7 +3914,7 @@ function CanvasGridComponent(props, forwardedRef) {
3598
3914
  columnCount: columnCount,
3599
3915
  HiddenRowMarkers: HiddenRowMarkers,
3600
3916
  HiddenColumnMarkers: HiddenColumnMarkers,
3601
- }), 4), hiddenColumnMarkers = _78[0], frozenHiddenColumnMarkers = _78[1], hiddenRowMarkers = _78[2], frozenHiddenRowMarkers = _78[3];
3917
+ }), 4), hiddenColumnMarkers = _84[0], frozenHiddenColumnMarkers = _84[1], hiddenRowMarkers = _84[2], frozenHiddenRowMarkers = _84[3];
3602
3918
  // Zoom lister
3603
3919
  var onMouseWheel = (0, use_scale_listener_1.useScaleListener)({
3604
3920
  zoomSpeed: zoomSpeed,
@@ -3714,6 +4030,7 @@ function CanvasGridComponent(props, forwardedRef) {
3714
4030
  getNextFocusableCell: getNextFocusableCell,
3715
4031
  onEditorKeyDown: onEditorKeyDown,
3716
4032
  scrollToCell: scrollToCell,
4033
+ scrollToChart: scrollToChart,
3717
4034
  scrollToBottom: scrollToBottom,
3718
4035
  focusSheet: focusSheet,
3719
4036
  canEditCell: canEditCell,
@@ -3833,7 +4150,7 @@ function CanvasGridComponent(props, forwardedRef) {
3833
4150
  }
3834
4151
  // Wait for sheet change to finish
3835
4152
  requestAnimationFrame(function () {
3836
- var _a;
4153
+ var _a, _b;
3837
4154
  // If user is not in formula mode and changing sheet.
3838
4155
  // The edit belongs to the sheet it was started on, so flush it —
3839
4156
  // `hideEditor()` alone threw the typed value away, leaving the cell
@@ -3870,7 +4187,7 @@ function CanvasGridComponent(props, forwardedRef) {
3870
4187
  // Keep focus back on sheet
3871
4188
  // Check if user is focused on the context menu
3872
4189
  if (grid_2.canUseDOM &&
3873
- ((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.getAttribute("role")) !== "menu") {
4190
+ ((_b = (_a = (0, grid_2.getOwnerDocument)(gridContainerRef.current)) === null || _a === void 0 ? void 0 : _a.activeElement) === null || _b === void 0 ? void 0 : _b.getAttribute("role")) !== "menu") {
3874
4191
  focusSheet();
3875
4192
  }
3876
4193
  }
@@ -3886,6 +4203,10 @@ function CanvasGridComponent(props, forwardedRef) {
3886
4203
  scrollToCell: scrollToCell,
3887
4204
  commit: commit,
3888
4205
  openFillSeriesDialog: function () { var _a; return (_a = openFillSeriesDialogForRef.current) === null || _a === void 0 ? void 0 : _a.call(openFillSeriesDialogForRef); },
4206
+ copyChart: copyChart,
4207
+ cutChart: cutChart,
4208
+ pasteChart: pasteChart,
4209
+ duplicateChart: duplicateChart,
3889
4210
  };
3890
4211
  setSpreadsheetApi(new spreadsheet_api_1.SpreadsheetApi(propsReferenceRef, stableMethods, store, instanceStore, instanceId));
3891
4212
  }, []);
@@ -3950,6 +4271,13 @@ function CanvasGridComponent(props, forwardedRef) {
3950
4271
  * in formula mode
3951
4272
  */
3952
4273
  var enableSelectionDrag = !isSelectionInProgress && !isEditInProgress && !formulaMode;
4274
+ // A chartsheet IS its chart: no grid, headers, editor or cell menus — only the chart and its
4275
+ // context menu (Excel).
4276
+ if (sheetType === "chartsheet") {
4277
+ return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, ui_1.cn)("rnc-canvas-wrapper after:box-border before:box-border [&_*]:box-border flex min-h-0 min-w-0 relative z-[1] flex-1 bg-rnc-background", className), ref: gridContainerRef, role: "application", "aria-label": "Chart sheet" }, rest),
4278
+ react_1.default.createElement(ChartSheetViewComponent, { sheetId: sheetId, chart: charts === null || charts === void 0 ? void 0 : charts.find(function (chart) { var _a; return ((_a = chart.position) === null || _a === void 0 ? void 0 : _a.sheetId) === sheetId; }), width: width, height: height, theme: theme, backgroundColor: cellBackgroundColor, readonly: readonly, getChartComponent: getChartComponent, onDeleteChart: onDeleteChart, onUpdateChart: onUpdateChart, onRequestContextMenu: requestChartContextMenu }),
4279
+ embedContextMenuComponent));
4280
+ }
3953
4281
  return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, ui_1.cn)("rnc-canvas-wrapper after:box-border before:box-border [&_*]:box-border flex min-h-0 min-w-0 relative z-[1] flex-1 bg-rnc-background", className), ref: gridContainerRef,
3954
4282
  // The grid paints to <canvas>, so there is no per-cell DOM for a screen
3955
4283
  // reader to traverse. role="application" passes keystrokes through to our
@@ -3964,11 +4292,11 @@ function CanvasGridComponent(props, forwardedRef) {
3964
4292
  // Bind to outer container, so it always takes
3965
4293
  // priority over other components
3966
4294
  // generated by hooks
3967
- onMouseMove: mouseMoveThrottler, onWheel: onMouseWheel }, rest),
4295
+ onMouseMove: mouseMoveThrottler, onWheel: onMouseWheel }, rest, { style: tableHitCursor ? tslib_1.__assign(tslib_1.__assign({}, rest.style), { cursor: tableHitCursor }) : rest.style }),
3968
4296
  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" },
3969
4297
  react_1.default.createElement("div", { className: "space-y-2" },
3970
4298
  react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" }),
3971
- react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" })))) : (react_1.default.createElement(grid_5.Grid, { ref: gridRef, overscanCount: overscanCount, rowCount: sheetRowCount, columnCount: sheetColumnCount, rowHeight: rowHeight, columnWidth: columnWidth, itemRenderer: cellRenderer, headerRenderer: headerCellRenderer, selectionRenderer: selectionRenderer, gridLineColor: gridLineColor, gridLineWidth: gridLineWidth, borderStyles: finalBorderStyles, mergedCells: merges, scale: scale, width: width, height: height, frozenColumns: frozenColumns, frozenRows: frozenRows, activeCell: activeCell, selections: formulaMode ? formulaSelections : selections, FillHandle: fill_handle_1.FillHandle, showFillHandle: showFillHandle, fillHandleSize: fillHandleSize, showGridLines: showGridLines, enableCellOverlay: true, enableCellBackground: true, enableSelectionDrag: enableSelectionDrag, showFrozenColumnShadow: showFrozenSeparator, showFrozenRowShadow: showFrozenSeparator, selectionBorderColor: selectionBorderColor, selectionBackgroundColor: selectionBackgroundColor, fillhandleBorderColor: cellBackgroundColor, isDraggingSelection: isDragging, fillSelection: fillShrinkOverlay !== null && fillShrinkOverlay !== void 0 ? fillShrinkOverlay : fillSelection, onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onMouseDown: handleMouseDown, onDoubleClick: handleDoubleClick, onFillHandleMouseDown: onFillHandleMouseDown, onFillHandleDoubleClick: onFillHandleDoubleClick,
4299
+ react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" })))) : (react_1.default.createElement(grid_5.Grid, { ref: gridRef, overscanCount: overscanCount, rowCount: sheetRowCount, columnCount: sheetColumnCount, rowHeight: rowHeight, columnWidth: columnWidth, itemRenderer: cellRenderer, headerRenderer: headerCellRenderer, selectionRenderer: selectionRenderer, gridLineColor: gridLineColor, gridLineWidth: gridLineWidth, borderStyles: gridBorderStyles, mergedCells: merges, scale: scale, width: width, height: height, frozenColumns: frozenColumns, frozenRows: frozenRows, activeCell: activeCell, selections: formulaMode ? formulaSelections : selections, FillHandle: fill_handle_1.FillHandle, showFillHandle: showFillHandle, fillHandleSize: fillHandleSize, showGridLines: showGridLines, enableCellOverlay: true, enableCellBackground: true, enableSelectionDrag: enableSelectionDrag, showFrozenColumnShadow: showFrozenSeparator, showFrozenRowShadow: showFrozenSeparator, selectionBorderColor: selectionBorderColor, selectionBackgroundColor: selectionBackgroundColor, fillhandleBorderColor: cellBackgroundColor, isDraggingSelection: isDragging, fillSelection: fillShrinkOverlay !== null && fillShrinkOverlay !== void 0 ? fillShrinkOverlay : fillSelection, onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onMouseDown: handleMouseDown, onDoubleClick: handleDoubleClick, onFillHandleMouseDown: onFillHandleMouseDown, onFillHandleDoubleClick: onFillHandleDoubleClick,
3972
4300
  // Dimension of fill handle
3973
4301
  scrollToCellOffset: 4, scrollbarSize: scrollbarSize, isHiddenCell: isHiddenCell, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, visibleRowRanges: visibleRowRanges, isHiddenOverlay: isHiddenOverlay, isHiddenBackground: isHiddenBackground, overlayRenderer: cellOverlayRenderer, backgroundRenderer: cellBackgroundRenderer, shadowSettings: shadowSettings, onScroll: handleScroll, onViewPortChange: handleViewPortChange, autoFocus: autoFocus, snap: scrollSnap, scrollThrottleTimeout: scrollThrottleTimeout, preventBrowserDefaultScroll: preventBrowserDefaultScroll, showHeaders: showHeaders, gridChildren: gridChildren, onTouchStart: onTouchStart, onDimensionsChange: onDimensionsChange, extendScrollSize: helpers_1.isTouchDevice || helpers_1.isFirefox, isTouchDevice: helpers_1.isTouchDevice, frozenShadowThickness: frozenShadowThickness, onAfterScrollToCell: onAfterScrollToCell, estimatedRowHeight: defaultRowHeight, estimatedColumnWidth: defaultColumnWidth, footerHeight: footerHeight, footerComponent: footerComponent, getOverflowBuffer: getOverflowBuffer, getFrozenColumnOverflowCells: getFrozenColumnOverflowCells })),
3974
4302
  tooltipComponent,
@@ -3976,7 +4304,9 @@ function CanvasGridComponent(props, forwardedRef) {
3976
4304
  draggableColumns,
3977
4305
  draggableRows,
3978
4306
  contextMenuComponent,
4307
+ embedContextMenuComponent,
3979
4308
  filterComponent,
4309
+ totalsPickerComponent,
3980
4310
  headerResizer,
3981
4311
  validatorResult,
3982
4312
  react_1.default.createElement("div", { "aria-live": "polite", "aria-atomic": "true", style: {