@rowsncolumns/spreadsheet 10.3.1 → 10.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) 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 +393 -72
  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 +214 -39
  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/selection/index.d.ts +1 -1
  123. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  124. package/dist/cjs/components/selection/index.js +6 -2
  125. package/dist/cjs/components/selection/types.d.ts +15 -0
  126. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  127. package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
  128. package/dist/cjs/components/sheet-tabs/index.js +2 -2
  129. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
  130. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  131. package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
  132. package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
  133. package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
  134. package/dist/cjs/components/sparkline-dialog/index.js +127 -0
  135. package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
  136. package/dist/cjs/components/subtotal-dialog/index.js +10 -1
  137. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  138. package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  139. package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
  140. package/dist/cjs/components/toolbar/index.d.ts +1 -0
  141. package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
  142. package/dist/cjs/components/toolbar/index.js +1 -0
  143. package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
  144. package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
  145. package/dist/cjs/components/toolbar/insert-menu.js +24 -1
  146. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
  147. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  148. package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
  149. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
  150. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
  151. package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
  152. package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
  153. package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
  154. package/dist/cjs/components/toolbar/table-actions.js +17 -7
  155. package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
  156. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  157. package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
  158. package/dist/cjs/config.d.ts +2 -0
  159. package/dist/cjs/config.d.ts.map +1 -1
  160. package/dist/cjs/config.js +31 -1
  161. package/dist/cjs/helpers.d.ts +1 -1
  162. package/dist/cjs/helpers.d.ts.map +1 -1
  163. package/dist/cjs/helpers.js +13 -2
  164. package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
  165. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  166. package/dist/cjs/hooks/use-cell-renderer.js +20 -8
  167. package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
  168. package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
  169. package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
  170. package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
  171. package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
  172. package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
  173. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-context-setter.js +3 -1
  175. package/dist/cjs/hooks/use-editable.d.ts +9 -1
  176. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-editable.js +25 -1
  178. package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
  179. package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-embeds-charts.js +412 -41
  181. package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
  182. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  183. package/dist/cjs/hooks/use-grid-children.js +12 -6
  184. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  185. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  186. package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
  187. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  188. package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
  189. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
  190. package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  191. package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
  192. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
  193. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  194. package/dist/cjs/hooks/use-selection-renderer.js +37 -7
  195. package/dist/cjs/hooks/use-selection.d.ts +9 -1
  196. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  197. package/dist/cjs/hooks/use-selection.js +118 -30
  198. package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
  199. package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
  200. package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
  201. package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
  202. package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
  203. package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
  204. package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
  205. package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-table-resizer.js +22 -10
  207. package/dist/cjs/index.d.ts +13 -0
  208. package/dist/cjs/index.d.ts.map +1 -1
  209. package/dist/cjs/index.js +17 -1
  210. package/dist/cjs/release-date.js +1 -1
  211. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  212. package/dist/cjs/types.d.ts +289 -4
  213. package/dist/cjs/types.d.ts.map +1 -1
  214. package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
  215. package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
  216. package/dist/cjs/utils/copy-as-picture.js +70 -0
  217. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
  218. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  219. package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
  220. package/dist/cjs/utils/z-order.d.ts +47 -0
  221. package/dist/cjs/utils/z-order.d.ts.map +1 -0
  222. package/dist/cjs/utils/z-order.js +124 -0
  223. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  224. package/dist/esm/api/banded-ranges.js +39 -12
  225. package/dist/esm/api/calculated-column-fill.d.ts +43 -0
  226. package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
  227. package/dist/esm/api/calculated-column-fill.js +10 -0
  228. package/dist/esm/api/chart-sheet.d.ts +8 -0
  229. package/dist/esm/api/chart-sheet.d.ts.map +1 -0
  230. package/dist/esm/api/chart-sheet.js +15 -0
  231. package/dist/esm/api/chart-source-ranges.d.ts +64 -0
  232. package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
  233. package/dist/esm/api/chart-source-ranges.js +168 -0
  234. package/dist/esm/api/selections.d.ts +3 -3
  235. package/dist/esm/api/selections.d.ts.map +1 -1
  236. package/dist/esm/api/selections.js +26 -2
  237. package/dist/esm/api/spreadsheet-api.d.ts +16 -3
  238. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  239. package/dist/esm/api/spreadsheet-api.js +18 -2
  240. package/dist/esm/api/table-auto-expansion.d.ts +37 -0
  241. package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
  242. package/dist/esm/api/table-auto-expansion.js +10 -0
  243. package/dist/esm/api/table.d.ts +49 -1
  244. package/dist/esm/api/table.d.ts.map +1 -1
  245. package/dist/esm/api/table.js +138 -1
  246. package/dist/esm/api/validation.d.ts +26 -1
  247. package/dist/esm/api/validation.d.ts.map +1 -1
  248. package/dist/esm/api/validation.js +119 -9
  249. package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
  250. package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  251. package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
  252. package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
  253. package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
  254. package/dist/esm/atoms/chart-actions.atom.js +58 -0
  255. package/dist/esm/atoms/index.d.ts +5 -0
  256. package/dist/esm/atoms/index.d.ts.map +1 -1
  257. package/dist/esm/atoms/index.js +5 -0
  258. package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
  259. package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  260. package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
  261. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
  262. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  263. package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
  264. package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
  265. package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
  266. package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
  267. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  268. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  269. package/dist/esm/atoms/sheet-context.atom.js +2 -0
  270. package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
  271. package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  272. package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
  273. package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
  274. package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  275. package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
  276. package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
  277. package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  278. package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
  279. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  280. package/dist/esm/components/canvas-grid/index.js +332 -21
  281. package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
  282. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  283. package/dist/esm/components/cell/index.d.ts.map +1 -1
  284. package/dist/esm/components/cell/index.js +3 -3
  285. package/dist/esm/components/cell/typings.d.ts +13 -0
  286. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  287. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  288. package/dist/esm/components/cell-filter/index.js +14 -3
  289. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  290. package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
  291. package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
  292. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  293. package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
  294. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  295. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  296. package/dist/esm/components/cell-structured/sparkline.js +3 -3
  297. package/dist/esm/components/cell-structured/types.d.ts +1 -1
  298. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  299. package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
  300. package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
  301. package/dist/esm/components/chart-sheet-view/index.js +30 -0
  302. package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
  303. package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
  304. package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
  305. package/dist/esm/components/context-menu/index.d.ts +23 -2
  306. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  307. package/dist/esm/components/context-menu/index.js +174 -38
  308. package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
  309. package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  310. package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
  311. package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
  312. package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
  313. package/dist/esm/components/context-menu/total-row-functions.js +29 -31
  314. package/dist/esm/components/embeds/chart-component.d.ts +17 -0
  315. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
  316. package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
  317. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
  318. package/dist/esm/components/embeds/embed-draggable.js +204 -45
  319. package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
  320. package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
  321. package/dist/esm/components/filter-box/date-tree.js +107 -0
  322. package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
  323. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
  324. package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
  325. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
  326. package/dist/esm/components/filter-box/filter-by-value.js +110 -39
  327. package/dist/esm/components/filter-box/index.d.ts +7 -1
  328. package/dist/esm/components/filter-box/index.d.ts.map +1 -1
  329. package/dist/esm/components/filter-box/index.js +88 -2
  330. package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
  331. package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
  332. package/dist/esm/components/move-chart-dialog/index.js +88 -0
  333. package/dist/esm/components/print-preview/page-block.d.ts +9 -1
  334. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
  335. package/dist/esm/components/print-preview/page-block.js +27 -2
  336. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
  337. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  338. package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
  339. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
  340. package/dist/esm/components/print-preview/run-print.js +17 -7
  341. package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
  342. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
  343. package/dist/esm/components/print-preview/use-page-layout.js +55 -0
  344. package/dist/esm/components/selection/index.d.ts +1 -1
  345. package/dist/esm/components/selection/index.d.ts.map +1 -1
  346. package/dist/esm/components/selection/index.js +6 -2
  347. package/dist/esm/components/selection/types.d.ts +15 -0
  348. package/dist/esm/components/selection/types.d.ts.map +1 -1
  349. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
  350. package/dist/esm/components/sheet-tabs/index.js +2 -2
  351. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
  352. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  353. package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
  354. package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
  355. package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
  356. package/dist/esm/components/sparkline-dialog/index.js +123 -0
  357. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
  358. package/dist/esm/components/subtotal-dialog/index.js +10 -1
  359. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  360. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  361. package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
  362. package/dist/esm/components/toolbar/index.d.ts +1 -0
  363. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  364. package/dist/esm/components/toolbar/index.js +1 -0
  365. package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
  366. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
  367. package/dist/esm/components/toolbar/insert-menu.js +24 -1
  368. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
  369. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  370. package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
  371. package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
  372. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
  373. package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
  374. package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
  375. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
  376. package/dist/esm/components/toolbar/table-actions.js +15 -7
  377. package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
  378. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  379. package/dist/esm/components/toolbar/table-style-selector.js +210 -399
  380. package/dist/esm/config.d.ts +2 -0
  381. package/dist/esm/config.d.ts.map +1 -1
  382. package/dist/esm/config.js +30 -0
  383. package/dist/esm/helpers.d.ts +1 -1
  384. package/dist/esm/helpers.d.ts.map +1 -1
  385. package/dist/esm/helpers.js +12 -1
  386. package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
  387. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  388. package/dist/esm/hooks/use-cell-renderer.js +14 -4
  389. package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
  390. package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
  391. package/dist/esm/hooks/use-chart-clipboard.js +213 -0
  392. package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
  393. package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
  394. package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
  395. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  396. package/dist/esm/hooks/use-context-setter.js +3 -1
  397. package/dist/esm/hooks/use-editable.d.ts +9 -1
  398. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  399. package/dist/esm/hooks/use-editable.js +25 -1
  400. package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
  401. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
  402. package/dist/esm/hooks/use-embeds-charts.js +394 -39
  403. package/dist/esm/hooks/use-grid-children.d.ts +2 -2
  404. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  405. package/dist/esm/hooks/use-grid-children.js +8 -2
  406. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  407. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  408. package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
  409. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-keyboard-handler.js +8 -2
  411. package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
  412. package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  413. package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
  414. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
  415. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-selection-renderer.js +35 -6
  417. package/dist/esm/hooks/use-selection.d.ts +9 -1
  418. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  419. package/dist/esm/hooks/use-selection.js +122 -30
  420. package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
  421. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
  422. package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
  423. package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
  424. package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
  425. package/dist/esm/hooks/use-table-hit-zones.js +146 -0
  426. package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
  427. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
  428. package/dist/esm/hooks/use-table-resizer.js +21 -10
  429. package/dist/esm/index.d.ts +13 -0
  430. package/dist/esm/index.d.ts.map +1 -1
  431. package/dist/esm/index.js +13 -0
  432. package/dist/esm/release-date.js +1 -1
  433. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  434. package/dist/esm/types.d.ts +289 -4
  435. package/dist/esm/types.d.ts.map +1 -1
  436. package/dist/esm/utils/copy-as-picture.d.ts +13 -0
  437. package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
  438. package/dist/esm/utils/copy-as-picture.js +45 -0
  439. package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
  440. package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  441. package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
  442. package/dist/esm/utils/z-order.d.ts +47 -0
  443. package/dist/esm/utils/z-order.d.ts.map +1 -0
  444. package/dist/esm/utils/z-order.js +111 -0
  445. package/dist/spreadsheet.min.css +1 -1
  446. package/package.json +12 -10
  447. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
  448. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
  449. package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
  450. package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
  451. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
  452. 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
  */
@@ -807,7 +836,13 @@ function CanvasGridComponent(props, forwardedRef) {
807
836
  */
808
837
  var getRelativePositionFromOffset = (0, react_1.useCallback)(function (x, y) {
809
838
  var _a;
810
- 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;
811
846
  }, []);
812
847
  /**
813
848
  * Get scroll position
@@ -1110,11 +1145,11 @@ function CanvasGridComponent(props, forwardedRef) {
1110
1145
  * Touch support
1111
1146
  * Mainly for scrolling
1112
1147
  */
1113
- var _58 = (0, use_touch_1.useTouch)({
1148
+ var _61 = (0, use_touch_1.useTouch)({
1114
1149
  scrollTo: scrollTo,
1115
1150
  scale: scale,
1116
1151
  onChangeScale: onChangeScale,
1117
- }), 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;
1118
1153
  /**
1119
1154
  * Conditional-formatting evaluation window: the padded, tile-quantized
1120
1155
  * viewport. The raw viewport lives in a ref (no render per scroll frame);
@@ -1122,7 +1157,7 @@ function CanvasGridComponent(props, forwardedRef) {
1122
1157
  * `startTransition` so the CF recompute is low-priority and interruptible —
1123
1158
  * scrolling never blocks on it.
1124
1159
  */
1125
- 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];
1126
1161
  var cfWindowRef = (0, react_1.useRef)(null);
1127
1162
  var handleViewPortChange = (0, react_1.useCallback)(function (viewport) {
1128
1163
  onViewPortChange === null || onViewPortChange === void 0 ? void 0 : onViewPortChange(viewport);
@@ -1200,7 +1235,7 @@ function CanvasGridComponent(props, forwardedRef) {
1200
1235
  * We are generating conditionalFormatting on the component level,
1201
1236
  */
1202
1237
  var getEffectiveCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1203
- var _a, _b, _c, _d, _e, _f, _g, _h;
1238
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
1204
1239
  var cellFormat = getCellFormat(sheetId, rowIndex, columnIndex);
1205
1240
  var isHyperlink = Boolean(getHyperlink(sheetId, rowIndex, columnIndex));
1206
1241
  var conditionalCellFormat = getConditionalCellFormat(sheetId, rowIndex, columnIndex);
@@ -1238,14 +1273,14 @@ function CanvasGridComponent(props, forwardedRef) {
1238
1273
  // time — `uf.textFormat.underline` is merged on top below, so a user
1239
1274
  // who explicitly sets underline=false still wins.
1240
1275
  var defaultTextFormat = {
1241
- 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) &&
1242
1277
  isTableHeaderThemed(rowIndex, columnIndex)
1243
1278
  ? true
1244
- : undefined,
1279
+ : undefined),
1245
1280
  fontFamily: theme.primaryFontFamily,
1246
1281
  color: isHyperlink
1247
1282
  ? theme.themeColors.hyperlink
1248
- : (_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),
1249
1284
  underline: isHyperlink ? true : undefined,
1250
1285
  };
1251
1286
  var mergedFormat = (0, merge_1.default)({
@@ -1256,7 +1291,7 @@ function CanvasGridComponent(props, forwardedRef) {
1256
1291
  // hyperlink color.
1257
1292
  if (patternColor &&
1258
1293
  !isHyperlink &&
1259
- !((_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)) {
1260
1295
  mergedFormat.textFormat = tslib_1.__assign(tslib_1.__assign({}, mergedFormat.textFormat), { color: patternColor });
1261
1296
  }
1262
1297
  return tslib_1.__assign(tslib_1.__assign({}, bandedCellFormat), mergedFormat);
@@ -1368,14 +1403,14 @@ function CanvasGridComponent(props, forwardedRef) {
1368
1403
  tokenizer: formulaLocale.isCanonical ? defaultTokenizer : localeTokenizerBase,
1369
1404
  });
1370
1405
  // Helper function to convert a selection to readable selection address
1371
- 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)({
1372
1407
  sheetId: sheetId,
1373
1408
  rowCount: rowCount,
1374
1409
  columnCount: columnCount,
1375
1410
  tables: tables !== null && tables !== void 0 ? tables : undefined,
1376
1411
  namedRanges: namedRanges !== null && namedRanges !== void 0 ? namedRanges : undefined,
1377
1412
  merges: merges,
1378
- }), 2), getAddressFromSelection = _60[0], getR1C1AddressFromSelection = _60[1];
1413
+ }), 2), getAddressFromSelection = _63[0], getR1C1AddressFromSelection = _63[1];
1379
1414
  /**
1380
1415
  * Exports a data region as image
1381
1416
  */
@@ -1421,7 +1456,7 @@ function CanvasGridComponent(props, forwardedRef) {
1421
1456
  * Get user entered value from a range
1422
1457
  * of cells
1423
1458
  */
1424
- 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)({
1425
1460
  sheetId: sheetId,
1426
1461
  getSelectionsFromFormula: getSelectionsFromFormula,
1427
1462
  getFormattedValue: getFormattedValue,
@@ -1429,7 +1464,7 @@ function CanvasGridComponent(props, forwardedRef) {
1429
1464
  getSheetId: getSheetId,
1430
1465
  onRequestCalculate: onRequestCalculate,
1431
1466
  getValidationSourceValue: getValidationSourceValue,
1432
- }), 3), getFormattedValuesFromAddress = _61[0], getEffectiveValuesFromRange = _61[1], getFormattedValuesFromAddressAsync = _61[2];
1467
+ }), 3), getFormattedValuesFromAddress = _64[0], getEffectiveValuesFromRange = _64[1], getFormattedValuesFromAddressAsync = _64[2];
1433
1468
  /**
1434
1469
  * Get all formatted values from range as a single 1d array
1435
1470
  */
@@ -1766,7 +1801,7 @@ function CanvasGridComponent(props, forwardedRef) {
1766
1801
  * O(n)
1767
1802
  * Reduces Space Complexity by using `all`
1768
1803
  */
1769
- 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)({
1770
1805
  activeCell: activeCell,
1771
1806
  selections: selections,
1772
1807
  selectionLeftBound: selectionLeftBound,
@@ -1774,7 +1809,7 @@ function CanvasGridComponent(props, forwardedRef) {
1774
1809
  rowCount: rowCount,
1775
1810
  columnCount: columnCount,
1776
1811
  getCellBounds: getCellBounds,
1777
- }), 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];
1778
1813
  // Named ranges for editor dropdown
1779
1814
  var getNamedRanges = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
1780
1815
  return namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (range) { return ({
@@ -1844,7 +1879,7 @@ function CanvasGridComponent(props, forwardedRef) {
1844
1879
  * user can select entire column or row when selecting
1845
1880
  * header cells
1846
1881
  */
1847
- var _63 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1882
+ var _66 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1848
1883
  sheetId: sheetId,
1849
1884
  rowCount: rowCount,
1850
1885
  columnCount: columnCount,
@@ -1860,7 +1895,7 @@ function CanvasGridComponent(props, forwardedRef) {
1860
1895
  onChangeActiveCell: onChangeActiveCell,
1861
1896
  scrollToCell: scrollToCell,
1862
1897
  isMergedCell: isMergedCell,
1863
- }), onMouseDownInterceptor = _63.onMouseDownInterceptor, onMouseMoveInterceptor = _63.onMouseMoveInterceptor;
1898
+ }), onMouseDownInterceptor = _66.onMouseDownInterceptor, onMouseMoveInterceptor = _66.onMouseMoveInterceptor;
1864
1899
  /**
1865
1900
  * When user selections full rows
1866
1901
  * or columns, we have to ignore
@@ -1892,7 +1927,8 @@ function CanvasGridComponent(props, forwardedRef) {
1892
1927
  /* Data validation arrow */
1893
1928
  var dataValidation = getDataValidationRule(sheetId, rowIndex, columnIndex);
1894
1929
  var additionalCellSpacing = (_a = getAdditionalCellSpacing === null || getAdditionalCellSpacing === void 0 ? void 0 : getAdditionalCellSpacing(sheetId, rowIndex, columnIndex)) !== null && _a !== void 0 ? _a : 0;
1895
- var showArrow = (0, validation_1.showValidationDropdownArrow)(dataValidation);
1930
+ var showArrow = (0, validation_1.showValidationDropdownArrow)(dataValidation) ||
1931
+ isTableTotalsCell(rowIndex, columnIndex);
1896
1932
  var showChip = getCellMetaType(sheetId, rowIndex, columnIndex) === "people";
1897
1933
  var _d = tslib_1.__read(getCellGroupingInfo(sheetId, rowIndex, columnIndex), 1), expandable = _d[0];
1898
1934
  var iconSpacing = config_1.DEFAULT_CELL_SPACING;
@@ -1942,13 +1978,14 @@ function CanvasGridComponent(props, forwardedRef) {
1942
1978
  getCellGroupingInfo,
1943
1979
  getAdditionalCellSpacing,
1944
1980
  getEffectiveCellFormat,
1981
+ isTableTotalsCell,
1945
1982
  ]);
1946
1983
  /**
1947
1984
  * Column resizer
1948
1985
  * Enables auto resizing
1949
1986
  * rows and columns
1950
1987
  */
1951
- var _64 = (0, use_sizer_1.useSizer)({
1988
+ var _67 = (0, use_sizer_1.useSizer)({
1952
1989
  frozenRows: frozenRows,
1953
1990
  frozenColumns: frozenColumns,
1954
1991
  scale: scale,
@@ -1971,7 +2008,7 @@ function CanvasGridComponent(props, forwardedRef) {
1971
2008
  getDataRowCount: getDataRowCount,
1972
2009
  fontSize: defaultFontSizePoint,
1973
2010
  resizeStrategy: "full",
1974
- }), 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;
1975
2012
  /**
1976
2013
  * Called when user tries to
1977
2014
  * autofit a column or row
@@ -2002,8 +2039,8 @@ function CanvasGridComponent(props, forwardedRef) {
2002
2039
  * Get Cell Editor
2003
2040
  */
2004
2041
  var getEditor = (0, react_1.useCallback)(function (props) {
2005
- 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;
2006
- 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;
2007
2044
  var cellFormat = !(0, utils_1.isNil)(props.editingSheetId)
2008
2045
  ? getEffectiveCellFormat(props.editingSheetId, rowIndex, columnIndex)
2009
2046
  : undefined;
@@ -2050,7 +2087,7 @@ function CanvasGridComponent(props, forwardedRef) {
2050
2087
  /**
2051
2088
  * Popover cell
2052
2089
  */
2053
- var _65 = (0, use_cell_popover_1.useCellPopover)({
2090
+ var _68 = (0, use_cell_popover_1.useCellPopover)({
2054
2091
  sheetId: sheetId,
2055
2092
  getCellPopoverContent: getCellPopoverContent !== null && getCellPopoverContent !== void 0 ? getCellPopoverContent : getFormattedValue,
2056
2093
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -2058,7 +2095,7 @@ function CanvasGridComponent(props, forwardedRef) {
2058
2095
  isFrozenColumn: isFrozenColumn,
2059
2096
  isFrozenRow: isFrozenRow,
2060
2097
  onChangeActiveSheet: onChangeActiveSheet,
2061
- }), 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;
2062
2099
  /**
2063
2100
  * Get tooltip component of a cell
2064
2101
  * Only error, invalid values are
@@ -2288,6 +2325,103 @@ function CanvasGridComponent(props, forwardedRef) {
2288
2325
  (0, react_1.useEffect)(function () {
2289
2326
  setInsertOptions(null);
2290
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
+ ]);
2291
2425
  /**
2292
2426
  * Run Excel's Series dialog result: the target range's first row (Series
2293
2427
  * in Columns) / first column (Rows) is the seed line; `stop` may shrink or
@@ -2380,7 +2514,7 @@ function CanvasGridComponent(props, forwardedRef) {
2380
2514
  /**
2381
2515
  * Handle grid selections
2382
2516
  */
2383
- var _66 = (0, use_selection_1.useSelection)({
2517
+ var _69 = (0, use_selection_1.useSelection)({
2384
2518
  sheetId: sheetId,
2385
2519
  getDataRowCount: getDataRowCount,
2386
2520
  enableDataBoundaryNavigation: enableDataBoundaryNavigation,
@@ -2419,11 +2553,13 @@ function CanvasGridComponent(props, forwardedRef) {
2419
2553
  isColumnHeader: isColumnHeader,
2420
2554
  isTouchDevice: helpers_1.isTouchDevice,
2421
2555
  dataRegionBoundaries: dataRegionBoundaries,
2422
- }), 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;
2423
2559
  /**
2424
2560
  * Copy, Paste and Cut hook
2425
2561
  */
2426
- var _67 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2562
+ var _70 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2427
2563
  activeCell: activeCell,
2428
2564
  selections: selections,
2429
2565
  sheetId: sheetId,
@@ -2431,7 +2567,38 @@ function CanvasGridComponent(props, forwardedRef) {
2431
2567
  onPaste: onPaste,
2432
2568
  onCopy: onCopy,
2433
2569
  onCut: onCut,
2434
- }), 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]);
2435
2602
  /**
2436
2603
  * Context menu "Insert Cut Cells" (Excel: Ctrl+X, right-click the destination). A cut of
2437
2604
  * whole rows / columns dropped on a row / column header inserts them BEFORE the clicked
@@ -2672,14 +2839,18 @@ function CanvasGridComponent(props, forwardedRef) {
2672
2839
  });
2673
2840
  /**
2674
2841
  * Get bounds of chart overlay
2675
- * 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).
2676
2845
  */
2677
2846
  var getChartBounds = (0, react_1.useCallback)(function () {
2678
2847
  return {
2679
2848
  left: getColumnOffset(1),
2680
2849
  top: getRowOffset(1),
2850
+ right: getColumnOffset(columnCount + 1),
2851
+ bottom: getRowOffset(rowCount + 1),
2681
2852
  };
2682
- }, [getRowOffset, getColumnOffset]);
2853
+ }, [getRowOffset, getColumnOffset, rowCount, columnCount]);
2683
2854
  // Show notes editor
2684
2855
  var onInsertNote = (0, react_1.useCallback)(function (sheetId, cell) {
2685
2856
  setNoteEditorCell(tslib_1.__assign(tslib_1.__assign({}, cell), { sheetId: sheetId }));
@@ -2718,11 +2889,40 @@ function CanvasGridComponent(props, forwardedRef) {
2718
2889
  });
2719
2890
  focusSheet();
2720
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;
2721
2921
  /**
2722
2922
  * Get context Menu component
2723
2923
  */
2724
2924
  var getContextMenu = (0, react_1.useCallback)(function (cell) {
2725
- 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 }));
2726
2926
  }, [
2727
2927
  isRestricted,
2728
2928
  activeCell,
@@ -2773,6 +2973,8 @@ function CanvasGridComponent(props, forwardedRef) {
2773
2973
  onFilterTable,
2774
2974
  onSortTable,
2775
2975
  onRequestEditTable,
2976
+ onRequestResizeTable,
2977
+ onRequestInsertSlicer,
2776
2978
  onRequestEditPivotTable,
2777
2979
  onRemoveTable,
2778
2980
  onRequestFormatCells,
@@ -2781,8 +2983,12 @@ function CanvasGridComponent(props, forwardedRef) {
2781
2983
  onRequestDataValidation,
2782
2984
  onCreateBasicFilter,
2783
2985
  onCreateTable,
2986
+ onRequestCreateTable,
2784
2987
  onDeleteTableColumn,
2785
2988
  onInsertTableRow,
2989
+ onUpdateTable,
2990
+ requestEditCell,
2991
+ selectRangeFromMenu,
2786
2992
  getFormattedValue,
2787
2993
  getFormattedValuesFromRange,
2788
2994
  onInsertTableColumn,
@@ -2798,6 +3004,7 @@ function CanvasGridComponent(props, forwardedRef) {
2798
3004
  onChange,
2799
3005
  getCellData,
2800
3006
  onRequestDeletePivotTable,
3007
+ onRequestCreatePivotChart,
2801
3008
  isHiddenColumn,
2802
3009
  isHiddenRow,
2803
3010
  onShowColumn,
@@ -2812,7 +3019,7 @@ function CanvasGridComponent(props, forwardedRef) {
2812
3019
  * Displays Context menu when user right clicks
2813
3020
  * the grid
2814
3021
  */
2815
- var _68 = (0, use_context_menu_1.useContextMenu)({
3022
+ var _72 = (0, use_context_menu_1.useContextMenu)({
2816
3023
  getCellCoordsFromOffset: getCellCoordsFromOffset,
2817
3024
  getRelativePositionFromOffset: getRelativePositionFromOffset,
2818
3025
  isRowHeader: isRowHeader,
@@ -2821,7 +3028,7 @@ function CanvasGridComponent(props, forwardedRef) {
2821
3028
  getCellOffsetFromCoords: getCellOffsetFromCoords,
2822
3029
  getScrollPosition: getScrollPosition,
2823
3030
  ContextMenuWrapper: ContextMenuWrapper,
2824
- }), 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;
2825
3032
  /**
2826
3033
  * Shortcut handlers for formatting
2827
3034
  * TODO: Decide on the output
@@ -2861,6 +3068,7 @@ function CanvasGridComponent(props, forwardedRef) {
2861
3068
  onUndo: onUndo,
2862
3069
  onRedo: onRedo,
2863
3070
  onCreateTable: onCreateTable,
3071
+ onRequestCreateTable: onRequestCreateTable,
2864
3072
  onCreateBasicFilter: onCreateBasicFilter,
2865
3073
  clearCopiedSelections: clearCopiedSelections,
2866
3074
  onRequestSearch: onRequestSearch,
@@ -2901,7 +3109,7 @@ function CanvasGridComponent(props, forwardedRef) {
2901
3109
  /**
2902
3110
  * Allow grid to be ediable
2903
3111
  */
2904
- var _69 = (0, use_editable_1.useEditable)({
3112
+ var _73 = (0, use_editable_1.useEditable)({
2905
3113
  sheetId: sheetId,
2906
3114
  enableEditOnEnterKey: enableEditOnEnterKey,
2907
3115
  canEdit: canEditCell,
@@ -2947,14 +3155,16 @@ function CanvasGridComponent(props, forwardedRef) {
2947
3155
  scrollToCell: scrollToCell,
2948
3156
  containerWidth: width,
2949
3157
  containerHeight: height,
2950
- onCopy: onInternalCopy,
2951
- onPaste: onInternalPaste,
2952
- onCut: onInternalCut,
2953
- }), 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;
2954
3164
  /**
2955
3165
  * Move rows and columns
2956
3166
  */
2957
- var _70 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
3167
+ var _74 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
2958
3168
  getCellOffsetFromCoords: getCellOffsetFromCoords,
2959
3169
  getCellCoordsFromOffset: getCellCoordsFromOffset,
2960
3170
  getRelativePositionFromOffset: getRelativePositionFromOffset,
@@ -2977,11 +3187,11 @@ function CanvasGridComponent(props, forwardedRef) {
2977
3187
  sheetId: sheetId,
2978
3188
  disabled: isRestricted,
2979
3189
  HeaderMoveDragComponent: HeaderMoveDragComponent,
2980
- }), draggableColumns = _70.draggableColumns, draggableRows = _70.draggableRows, isDraggingRowsAndColumns = _70.isDragging;
3190
+ }), draggableColumns = _74.draggableColumns, draggableRows = _74.draggableRows, isDraggingRowsAndColumns = _74.isDragging;
2981
3191
  /**
2982
3192
  * Header actions
2983
3193
  */
2984
- var _71 = (0, use_header_actions_1.useHeaderActions)({
3194
+ var _75 = (0, use_header_actions_1.useHeaderActions)({
2985
3195
  activeCell: isSelectionInProgress || isFilling || isDragging ? null : hoveredCell,
2986
3196
  getScrollPosition: getScrollPosition,
2987
3197
  getCellOffsetFromCoords: getCellOffsetFromCoords,
@@ -3008,7 +3218,7 @@ function CanvasGridComponent(props, forwardedRef) {
3008
3218
  selectedRowHeadersIds: selectedRowHeadersIds,
3009
3219
  selectedColumnHeadersIds: selectedColumnHeadersIds,
3010
3220
  enableResizerOverflow: enableResizerOverflow,
3011
- }), 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;
3012
3222
  /**
3013
3223
  * Close tooltip
3014
3224
  */
@@ -3050,7 +3260,7 @@ function CanvasGridComponent(props, forwardedRef) {
3050
3260
  /**
3051
3261
  * Show basicFilter panels
3052
3262
  */
3053
- var _72 = (0, use_filter_1.useFilter)({
3263
+ var _76 = (0, use_filter_1.useFilter)({
3054
3264
  sheetId: sheetId,
3055
3265
  scale: scale,
3056
3266
  theme: theme,
@@ -3075,9 +3285,9 @@ function CanvasGridComponent(props, forwardedRef) {
3075
3285
  // Live filter state so the open popup tracks Auto-apply spec changes.
3076
3286
  basicFilter: basicFilter,
3077
3287
  tables: activeTables,
3078
- }), showFilter = _72.showFilter, hideFilter = _72.hideFilter, filterComponent = _72.filterComponent;
3288
+ }), showFilter = _76.showFilter, hideFilter = _76.hideFilter, filterComponent = _76.filterComponent;
3079
3289
  // Table resize
3080
- var _73 = (0, use_table_resizer_1.useTableResizer)({
3290
+ var _77 = (0, use_table_resizer_1.useTableResizer)({
3081
3291
  sheetId: sheetId,
3082
3292
  tables: tables !== null && tables !== void 0 ? tables : undefined,
3083
3293
  theme: theme,
@@ -3088,11 +3298,11 @@ function CanvasGridComponent(props, forwardedRef) {
3088
3298
  scrollToCell: scrollToCell,
3089
3299
  onResizeTable: onResizeTable,
3090
3300
  focusSheet: focusSheet,
3091
- }), tableResizers = _73.tableResizers, isResizingTable = _73.isResizingTable;
3301
+ }), tableResizers = _77.tableResizers, isResizingTable = _77.isResizingTable;
3092
3302
  /**
3093
3303
  * Displays resizable/draggable charts
3094
3304
  */
3095
- var _74 = (0, use_embeds_charts_1.useEmbedsCharts)({
3305
+ var _78 = (0, use_embeds_charts_1.useEmbedsCharts)({
3096
3306
  charts: charts,
3097
3307
  embeds: embeds,
3098
3308
  slicers: slicers,
@@ -3103,14 +3313,20 @@ function CanvasGridComponent(props, forwardedRef) {
3103
3313
  getCellOffsetFromCoords: getCellOffsetFromCoords,
3104
3314
  getAbsolutePositionFromOffset: getAbsolutePositionFromOffset,
3105
3315
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3316
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
3106
3317
  getScrollPosition: getScrollPosition,
3318
+ ContextMenuWrapper: ContextMenuWrapper,
3319
+ focusSheet: focusSheet,
3107
3320
  selectedColor: chartSelectedColor,
3108
3321
  onMoveChart: onMoveChart,
3109
3322
  onResizeChart: onResizeChart,
3323
+ chartClipboard: chartClipboard,
3110
3324
  onMoveEmbed: onMoveEmbed,
3111
3325
  onResizeEmbed: onResizeEmbed,
3112
3326
  onDeleteEmbed: onDeleteEmbed,
3113
3327
  onDeleteChart: onDeleteChart,
3328
+ onUpdateChart: onUpdateChart,
3329
+ onChangeZOrder: onChangeZOrder,
3114
3330
  onRequestEditEmbed: onRequestEditEmbed,
3115
3331
  onMoveSlicer: onMoveSlicer,
3116
3332
  onResizeSlicer: onResizeSlicer,
@@ -3129,7 +3345,7 @@ function CanvasGridComponent(props, forwardedRef) {
3129
3345
  backgroundColor: cellBackgroundColor,
3130
3346
  disabled: isRestricted,
3131
3347
  readonly: readonly,
3132
- }), 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;
3133
3349
  /**
3134
3350
  * Callback when user clicks Filter icon
3135
3351
  * Show Filter dropdown here
@@ -3184,6 +3400,57 @@ function CanvasGridComponent(props, forwardedRef) {
3184
3400
  onExpandCollapse === null || onExpandCollapse === void 0 ? void 0 : onExpandCollapse(sheetId, cell, groupKeys, newExpandedState, childrenCount);
3185
3401
  }
3186
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;
3187
3454
  /**
3188
3455
  * Capture mouse move events
3189
3456
  */
@@ -3194,8 +3461,10 @@ function CanvasGridComponent(props, forwardedRef) {
3194
3461
  isDraggingHeader ||
3195
3462
  isSelectionInProgress ||
3196
3463
  isFilling) {
3464
+ clearTableHitZone();
3197
3465
  return;
3198
3466
  }
3467
+ onMouseMoveTableHitZones(e);
3199
3468
  var coords = getCellCoordsFromOffset(e.clientX, e.clientY);
3200
3469
  if (!coords || (0, grid_5.isEqualCells)(hoveredCellRef.current, coords)) {
3201
3470
  return;
@@ -3209,6 +3478,8 @@ function CanvasGridComponent(props, forwardedRef) {
3209
3478
  isSelectionInProgress,
3210
3479
  isFilling,
3211
3480
  hoveredCellRef,
3481
+ onMouseMoveTableHitZones,
3482
+ clearTableHitZone,
3212
3483
  ]);
3213
3484
  // Mouse move throttler
3214
3485
  var mouseMoveThrottler = (0, use_callback_ref_1.useCallbackRef)((0, throttle_1.default)(handleMouseMove, mouseMoveThrottleTimeout, {
@@ -3242,8 +3513,12 @@ function CanvasGridComponent(props, forwardedRef) {
3242
3513
  if (formulaMode && isMetaKey) {
3243
3514
  setFormulaState(function (prev) { return (tslib_1.__assign(tslib_1.__assign({}, prev), { selectionMode: "append" })); });
3244
3515
  }
3245
- // Pass it on to use selection hook
3246
- 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
+ }
3247
3522
  // Charts
3248
3523
  onMouseDownCharts === null || onMouseDownCharts === void 0 ? void 0 : onMouseDownCharts();
3249
3524
  /**
@@ -3255,6 +3530,7 @@ function CanvasGridComponent(props, forwardedRef) {
3255
3530
  }
3256
3531
  // Hide filter
3257
3532
  hideFilter();
3533
+ closeTotalsPicker();
3258
3534
  // Hide popover
3259
3535
  hideCellPopover();
3260
3536
  // Hide paste mnenu
@@ -3265,8 +3541,10 @@ function CanvasGridComponent(props, forwardedRef) {
3265
3541
  onUnpinTooltip();
3266
3542
  }, [
3267
3543
  onMouseDownSelection,
3544
+ onMouseDownTableHitZones,
3268
3545
  onRequestCloseContextMenu,
3269
3546
  hideFilter,
3547
+ closeTotalsPicker,
3270
3548
  onMouseDownCharts,
3271
3549
  formulaMode,
3272
3550
  setFormulaState,
@@ -3387,8 +3665,10 @@ function CanvasGridComponent(props, forwardedRef) {
3387
3665
  /**
3388
3666
  * Render Cells in the grid
3389
3667
  */
3390
- var _75 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
3668
+ var _80 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
3391
3669
  sheetId: sheetId,
3670
+ isTableTotalsCell: isTableTotalsCell,
3671
+ onTotalsArrowClick: handleTotalsArrowClick,
3392
3672
  formulaLocale: formulaLocale,
3393
3673
  showGridLines: showGridLines,
3394
3674
  scale: scale,
@@ -3427,6 +3707,7 @@ function CanvasGridComponent(props, forwardedRef) {
3427
3707
  getNote: getNote,
3428
3708
  getComment: getComment,
3429
3709
  getEffectiveValue: getEffectiveValue,
3710
+ getSparklineGroup: getSparklineGroup,
3430
3711
  getFormattedValue: getFormattedValue,
3431
3712
  getCellImageUrl: getCellImageUrl,
3432
3713
  getEffectiveCellFormat: getEffectiveCellFormat,
@@ -3454,7 +3735,7 @@ function CanvasGridComponent(props, forwardedRef) {
3454
3735
  onOverflow: handleOverflow,
3455
3736
  isComparing: isComparing,
3456
3737
  getCellDiff: getCellDiff,
3457
- }), 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];
3458
3739
  /**
3459
3740
  * When user selects a selection for moving
3460
3741
  * If its a table, we select the entire column
@@ -3490,11 +3771,25 @@ function CanvasGridComponent(props, forwardedRef) {
3490
3771
  tokenizer: localeTokenizer,
3491
3772
  });
3492
3773
  // Selection move: drag a formula reference via its border covers
3493
- var _76 = (0, use_selection_move_1.useSelectionMove)({
3774
+ var _81 = (0, use_selection_move_1.useSelectionMove)({
3494
3775
  getCellCoordsFromOffset: getCellCoordsFromOffset,
3495
3776
  scrollToCell: scrollToCell,
3496
3777
  tokenizer: localeTokenizer,
3497
- }), 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;
3498
3793
  /**
3499
3794
  * Hide fill handle
3500
3795
  * 1. When user is in edit mode
@@ -3507,9 +3802,9 @@ function CanvasGridComponent(props, forwardedRef) {
3507
3802
  /**
3508
3803
  * Flashing
3509
3804
  */
3510
- var _77 = (0, use_flash_1.useFlash)({
3805
+ var _83 = (0, use_flash_1.useFlash)({
3511
3806
  theme: theme,
3512
- }), 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;
3513
3808
  // Cache hover ids
3514
3809
  var cachedHoveredSelectionIds = (0, use_hovered_selection_ids_1.useHoveredSelectionIds)({
3515
3810
  selections: selections,
@@ -3527,6 +3822,7 @@ function CanvasGridComponent(props, forwardedRef) {
3527
3822
  isFillShrink: fillShrink !== undefined,
3528
3823
  onSelectionMouseDown: onSelectionElementMouseDown,
3529
3824
  onMouseDownResizeHandle: onMouseDownResizeHandle,
3825
+ onMouseDownChartSourceResizeHandle: onMouseDownChartSourceResizeHandle,
3530
3826
  onMouseDownMoveSelection: onMouseDownMoveSelection,
3531
3827
  isDraggingMoveSelection: isDraggingMoveSelection,
3532
3828
  onChangeActiveCell: onChangeActiveCell,
@@ -3559,6 +3855,12 @@ function CanvasGridComponent(props, forwardedRef) {
3559
3855
  onCloseFillOptions: handleCloseFillOptions,
3560
3856
  insertOptions: insertOptions,
3561
3857
  onChooseInsertOption: handleChooseInsertOption,
3858
+ tableAutoExpansion: tableAutoExpansion,
3859
+ canStopAutoExpandingTables: !!onChangeAutoExpandTables,
3860
+ onChooseTableAutoExpansionOption: handleChooseTableAutoExpansionOption,
3861
+ calculatedColumnFill: calculatedColumnFill,
3862
+ canStopAutoCalculatedColumns: !!onChangeAutoCalculatedColumns,
3863
+ onChooseCalculatedColumnOption: handleChooseCalculatedColumnOption,
3562
3864
  hoveredCell: delayedHoveredCell,
3563
3865
  onRemoveQuickEdit: onRemoveQuickEdit,
3564
3866
  onAddQuickEdit: onAddQuickEdit,
@@ -3593,8 +3895,13 @@ function CanvasGridComponent(props, forwardedRef) {
3593
3895
  agentSuggestions: agentSuggestions,
3594
3896
  quickEditValues: quickEditValues,
3595
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]);
3596
3903
  // Hidden column markers
3597
- 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)({
3598
3905
  sheetId: sheetId,
3599
3906
  columnMetadata: columnMetadata,
3600
3907
  rowMetadata: rowMetadata,
@@ -3607,7 +3914,7 @@ function CanvasGridComponent(props, forwardedRef) {
3607
3914
  columnCount: columnCount,
3608
3915
  HiddenRowMarkers: HiddenRowMarkers,
3609
3916
  HiddenColumnMarkers: HiddenColumnMarkers,
3610
- }), 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];
3611
3918
  // Zoom lister
3612
3919
  var onMouseWheel = (0, use_scale_listener_1.useScaleListener)({
3613
3920
  zoomSpeed: zoomSpeed,
@@ -3723,6 +4030,7 @@ function CanvasGridComponent(props, forwardedRef) {
3723
4030
  getNextFocusableCell: getNextFocusableCell,
3724
4031
  onEditorKeyDown: onEditorKeyDown,
3725
4032
  scrollToCell: scrollToCell,
4033
+ scrollToChart: scrollToChart,
3726
4034
  scrollToBottom: scrollToBottom,
3727
4035
  focusSheet: focusSheet,
3728
4036
  canEditCell: canEditCell,
@@ -3895,6 +4203,10 @@ function CanvasGridComponent(props, forwardedRef) {
3895
4203
  scrollToCell: scrollToCell,
3896
4204
  commit: commit,
3897
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,
3898
4210
  };
3899
4211
  setSpreadsheetApi(new spreadsheet_api_1.SpreadsheetApi(propsReferenceRef, stableMethods, store, instanceStore, instanceId));
3900
4212
  }, []);
@@ -3959,6 +4271,13 @@ function CanvasGridComponent(props, forwardedRef) {
3959
4271
  * in formula mode
3960
4272
  */
3961
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
+ }
3962
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,
3963
4282
  // The grid paints to <canvas>, so there is no per-cell DOM for a screen
3964
4283
  // reader to traverse. role="application" passes keystrokes through to our
@@ -3973,11 +4292,11 @@ function CanvasGridComponent(props, forwardedRef) {
3973
4292
  // Bind to outer container, so it always takes
3974
4293
  // priority over other components
3975
4294
  // generated by hooks
3976
- 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 }),
3977
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" },
3978
4297
  react_1.default.createElement("div", { className: "space-y-2" },
3979
4298
  react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" }),
3980
- 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,
3981
4300
  // Dimension of fill handle
3982
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 })),
3983
4302
  tooltipComponent,
@@ -3985,7 +4304,9 @@ function CanvasGridComponent(props, forwardedRef) {
3985
4304
  draggableColumns,
3986
4305
  draggableRows,
3987
4306
  contextMenuComponent,
4307
+ embedContextMenuComponent,
3988
4308
  filterComponent,
4309
+ totalsPickerComponent,
3989
4310
  headerResizer,
3990
4311
  validatorResult,
3991
4312
  react_1.default.createElement("div", { "aria-live": "polite", "aria-atomic": "true", style: {