@rowsncolumns/spreadsheet 10.3.1 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) 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/tsconfig.cjs.tsbuildinfo +1 -1
  211. package/dist/cjs/types.d.ts +289 -4
  212. package/dist/cjs/types.d.ts.map +1 -1
  213. package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
  214. package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
  215. package/dist/cjs/utils/copy-as-picture.js +70 -0
  216. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
  217. package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  218. package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
  219. package/dist/cjs/utils/z-order.d.ts +47 -0
  220. package/dist/cjs/utils/z-order.d.ts.map +1 -0
  221. package/dist/cjs/utils/z-order.js +124 -0
  222. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  223. package/dist/esm/api/banded-ranges.js +39 -12
  224. package/dist/esm/api/calculated-column-fill.d.ts +43 -0
  225. package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
  226. package/dist/esm/api/calculated-column-fill.js +10 -0
  227. package/dist/esm/api/chart-sheet.d.ts +8 -0
  228. package/dist/esm/api/chart-sheet.d.ts.map +1 -0
  229. package/dist/esm/api/chart-sheet.js +15 -0
  230. package/dist/esm/api/chart-source-ranges.d.ts +64 -0
  231. package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
  232. package/dist/esm/api/chart-source-ranges.js +168 -0
  233. package/dist/esm/api/selections.d.ts +3 -3
  234. package/dist/esm/api/selections.d.ts.map +1 -1
  235. package/dist/esm/api/selections.js +26 -2
  236. package/dist/esm/api/spreadsheet-api.d.ts +16 -3
  237. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  238. package/dist/esm/api/spreadsheet-api.js +18 -2
  239. package/dist/esm/api/table-auto-expansion.d.ts +37 -0
  240. package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
  241. package/dist/esm/api/table-auto-expansion.js +10 -0
  242. package/dist/esm/api/table.d.ts +49 -1
  243. package/dist/esm/api/table.d.ts.map +1 -1
  244. package/dist/esm/api/table.js +138 -1
  245. package/dist/esm/api/validation.d.ts +26 -1
  246. package/dist/esm/api/validation.d.ts.map +1 -1
  247. package/dist/esm/api/validation.js +119 -9
  248. package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
  249. package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
  250. package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
  251. package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
  252. package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
  253. package/dist/esm/atoms/chart-actions.atom.js +58 -0
  254. package/dist/esm/atoms/index.d.ts +5 -0
  255. package/dist/esm/atoms/index.d.ts.map +1 -1
  256. package/dist/esm/atoms/index.js +5 -0
  257. package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
  258. package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
  259. package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
  260. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
  261. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
  262. package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
  263. package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
  264. package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
  265. package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
  266. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  267. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  268. package/dist/esm/atoms/sheet-context.atom.js +2 -0
  269. package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
  270. package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
  271. package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
  272. package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
  273. package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
  274. package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
  275. package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
  276. package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
  277. package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
  278. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  279. package/dist/esm/components/canvas-grid/index.js +332 -21
  280. package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
  281. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  282. package/dist/esm/components/cell/index.d.ts.map +1 -1
  283. package/dist/esm/components/cell/index.js +3 -3
  284. package/dist/esm/components/cell/typings.d.ts +13 -0
  285. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  286. package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
  287. package/dist/esm/components/cell-filter/index.js +14 -3
  288. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  289. package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
  290. package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
  291. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  292. package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
  293. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  294. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  295. package/dist/esm/components/cell-structured/sparkline.js +3 -3
  296. package/dist/esm/components/cell-structured/types.d.ts +1 -1
  297. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  298. package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
  299. package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
  300. package/dist/esm/components/chart-sheet-view/index.js +30 -0
  301. package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
  302. package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
  303. package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
  304. package/dist/esm/components/context-menu/index.d.ts +23 -2
  305. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  306. package/dist/esm/components/context-menu/index.js +174 -38
  307. package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
  308. package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
  309. package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
  310. package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
  311. package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
  312. package/dist/esm/components/context-menu/total-row-functions.js +29 -31
  313. package/dist/esm/components/embeds/chart-component.d.ts +17 -0
  314. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
  315. package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
  316. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
  317. package/dist/esm/components/embeds/embed-draggable.js +204 -45
  318. package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
  319. package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
  320. package/dist/esm/components/filter-box/date-tree.js +107 -0
  321. package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
  322. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
  323. package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
  324. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
  325. package/dist/esm/components/filter-box/filter-by-value.js +110 -39
  326. package/dist/esm/components/filter-box/index.d.ts +7 -1
  327. package/dist/esm/components/filter-box/index.d.ts.map +1 -1
  328. package/dist/esm/components/filter-box/index.js +88 -2
  329. package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
  330. package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
  331. package/dist/esm/components/move-chart-dialog/index.js +88 -0
  332. package/dist/esm/components/print-preview/page-block.d.ts +9 -1
  333. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
  334. package/dist/esm/components/print-preview/page-block.js +27 -2
  335. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
  336. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
  337. package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
  338. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
  339. package/dist/esm/components/print-preview/run-print.js +17 -7
  340. package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
  341. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
  342. package/dist/esm/components/print-preview/use-page-layout.js +55 -0
  343. package/dist/esm/components/selection/index.d.ts +1 -1
  344. package/dist/esm/components/selection/index.d.ts.map +1 -1
  345. package/dist/esm/components/selection/index.js +6 -2
  346. package/dist/esm/components/selection/types.d.ts +15 -0
  347. package/dist/esm/components/selection/types.d.ts.map +1 -1
  348. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
  349. package/dist/esm/components/sheet-tabs/index.js +2 -2
  350. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
  351. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
  352. package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
  353. package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
  354. package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
  355. package/dist/esm/components/sparkline-dialog/index.js +123 -0
  356. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
  357. package/dist/esm/components/subtotal-dialog/index.js +10 -1
  358. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
  359. package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
  360. package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
  361. package/dist/esm/components/toolbar/index.d.ts +1 -0
  362. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  363. package/dist/esm/components/toolbar/index.js +1 -0
  364. package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
  365. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
  366. package/dist/esm/components/toolbar/insert-menu.js +24 -1
  367. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
  368. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
  369. package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
  370. package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
  371. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
  372. package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
  373. package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
  374. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
  375. package/dist/esm/components/toolbar/table-actions.js +15 -7
  376. package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
  377. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  378. package/dist/esm/components/toolbar/table-style-selector.js +210 -399
  379. package/dist/esm/config.d.ts +2 -0
  380. package/dist/esm/config.d.ts.map +1 -1
  381. package/dist/esm/config.js +30 -0
  382. package/dist/esm/helpers.d.ts +1 -1
  383. package/dist/esm/helpers.d.ts.map +1 -1
  384. package/dist/esm/helpers.js +12 -1
  385. package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
  386. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  387. package/dist/esm/hooks/use-cell-renderer.js +14 -4
  388. package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
  389. package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
  390. package/dist/esm/hooks/use-chart-clipboard.js +213 -0
  391. package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
  392. package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
  393. package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
  394. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-context-setter.js +3 -1
  396. package/dist/esm/hooks/use-editable.d.ts +9 -1
  397. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-editable.js +25 -1
  399. package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
  400. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-embeds-charts.js +394 -39
  402. package/dist/esm/hooks/use-grid-children.d.ts +2 -2
  403. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-grid-children.js +8 -2
  405. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
  406. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
  408. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  409. package/dist/esm/hooks/use-keyboard-handler.js +8 -2
  410. package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
  411. package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
  412. package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
  413. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
  414. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  415. package/dist/esm/hooks/use-selection-renderer.js +35 -6
  416. package/dist/esm/hooks/use-selection.d.ts +9 -1
  417. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-selection.js +122 -30
  419. package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
  420. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
  422. package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
  423. package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
  424. package/dist/esm/hooks/use-table-hit-zones.js +146 -0
  425. package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
  426. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-table-resizer.js +21 -10
  428. package/dist/esm/index.d.ts +13 -0
  429. package/dist/esm/index.d.ts.map +1 -1
  430. package/dist/esm/index.js +13 -0
  431. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  432. package/dist/esm/types.d.ts +289 -4
  433. package/dist/esm/types.d.ts.map +1 -1
  434. package/dist/esm/utils/copy-as-picture.d.ts +13 -0
  435. package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
  436. package/dist/esm/utils/copy-as-picture.js +45 -0
  437. package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
  438. package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
  439. package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
  440. package/dist/esm/utils/z-order.d.ts +47 -0
  441. package/dist/esm/utils/z-order.d.ts.map +1 -0
  442. package/dist/esm/utils/z-order.js +111 -0
  443. package/dist/spreadsheet.min.css +1 -1
  444. package/package.json +8 -6
  445. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
  446. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
  447. package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
  448. package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
  449. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
  450. package/dist/esm/components/cell-editor/helpers.spec.js +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"banded-ranges.d.ts","sourceRoot":"","sources":["../../../api/banded-ranges.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,cAAc,WAAW,EAAE,EAC3B,OAAO,gBAAgB,EACvB,SAAS,MAAM,EACf,aAAa,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAC1C,gBAAgB,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,4BA0HjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,iBAE5D,CAAC"}
1
+ {"version":3,"file":"banded-ranges.d.ts","sourceRoot":"","sources":["../../../api/banded-ranges.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,cAAc,WAAW,EAAE,EAC3B,OAAO,gBAAgB,EACvB,SAAS,MAAM,EACf,aAAa,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAC1C,gBAAgB,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,4BAuKjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,iBAE5D,CAAC"}
@@ -13,18 +13,18 @@ var themes_1 = require("../themes");
13
13
  */
14
14
  var getBandedCells = function (bandedRanges, theme, sheetId, isHiddenRow, isHiddenColumn) {
15
15
  var e_1, _a;
16
- var _b, _c;
16
+ var _b, _c, _d;
17
17
  var bandedCells = new Map();
18
18
  try {
19
19
  for (var bandedRanges_1 = tslib_1.__values(bandedRanges), bandedRanges_1_1 = bandedRanges_1.next(); !bandedRanges_1_1.done; bandedRanges_1_1 = bandedRanges_1.next()) {
20
- var _d = bandedRanges_1_1.value, range = _d.range, rowProperties = _d.rowProperties, columnProperties = _d.columnProperties;
20
+ var _e = bandedRanges_1_1.value, range = _e.range, rowProperties = _e.rowProperties, columnProperties = _e.columnProperties, showFirstColumn = _e.showFirstColumn, showLastColumn = _e.showLastColumn, totalRow = _e.totalRow;
21
21
  // Only pick current sheet
22
22
  if (range.sheetId !== sheetId) {
23
23
  continue;
24
24
  }
25
25
  if (rowProperties || columnProperties) {
26
- var _e = rowProperties !== null && rowProperties !== void 0 ? rowProperties : {}, headerColor = _e.headerColor, firstBandColor = _e.firstBandColor, secondBandColor = _e.secondBandColor, footerColor = _e.footerColor, headerBorder = _e.headerBorder, firstBandBorder = _e.firstBandBorder, footerBorder = _e.footerBorder;
27
- var _f = columnProperties !== null && columnProperties !== void 0 ? columnProperties : {}, firstBandColorColumn = _f.firstBandColor, secondBandColorColumn = _f.secondBandColor;
26
+ var _f = rowProperties !== null && rowProperties !== void 0 ? rowProperties : {}, headerColor = _f.headerColor, firstBandColor = _f.firstBandColor, secondBandColor = _f.secondBandColor, footerColor = _f.footerColor, headerBorder = _f.headerBorder, firstBandBorder = _f.firstBandBorder, footerBorder = _f.footerBorder, firstColumnColor = _f.firstColumnColor, lastColumnColor = _f.lastColumnColor, totalRowColor = _f.totalRowColor, totalRowBorder = _f.totalRowBorder, totalRowBold = _f.totalRowBold;
27
+ var _g = columnProperties !== null && columnProperties !== void 0 ? columnProperties : {}, firstBandColorColumn = _g.firstBandColor, secondBandColorColumn = _g.secondBandColor;
28
28
  var parsedFirstBandColor = (0, exports.parseTintedColor)(firstBandColor);
29
29
  var parsedSecondBandColor = (0, exports.parseTintedColor)(secondBandColor);
30
30
  var parsedFirstBandColorColumn = (0, exports.parseTintedColor)(firstBandColorColumn);
@@ -63,27 +63,53 @@ var getBandedCells = function (bandedRanges, theme, sheetId, isHiddenRow, isHidd
63
63
  // Body cells
64
64
  else {
65
65
  var isFooter = rowIndex === lastVisibleRowIndex;
66
+ // A table's totals row takes the style's `totalRow` element (Excel):
67
+ // its fill, its top rule and a bold font — over the plain footer band.
68
+ var isTotalsRow = isFooter && !!totalRow;
66
69
  var stripeRowBackground = isOddRow
67
70
  ? parsedFirstBandColor
68
71
  : parsedSecondBandColor;
69
- var backgroundColor = isFooter
72
+ // The footer fill belongs to a totals row (a table without one ends in a plain
73
+ // stripe); the footer border is the style's table outline and stays on the last row
74
+ // either way. A standalone banded range (no `totalRow` flag) keeps Sheets' footer fill.
75
+ var footerBackground = isFooter && totalRow !== false
70
76
  ? footerColor !== null && footerColor !== void 0 ? footerColor : stripeRowBackground
71
77
  : stripeRowBackground;
78
+ var backgroundColor = isTotalsRow
79
+ ? totalRowColor !== null && totalRowColor !== void 0 ? totalRowColor : footerBackground
80
+ : isFooter
81
+ ? footerBackground
82
+ : stripeRowBackground;
72
83
  // Border
73
- var borders = isFooter
74
- ? footerBorder !== null && footerBorder !== void 0 ? footerBorder : firstBandBorder
75
- : firstBandBorder;
84
+ var borders = isTotalsRow
85
+ ? (_b = totalRowBorder !== null && totalRowBorder !== void 0 ? totalRowBorder : footerBorder) !== null && _b !== void 0 ? _b : firstBandBorder
86
+ : isFooter
87
+ ? footerBorder !== null && footerBorder !== void 0 ? footerBorder : firstBandBorder
88
+ : firstBandBorder;
76
89
  var isEvenColumn = columnRunningIndex % 2 === 0;
77
- var finalBackgroundColor = (_b = (isEvenColumn
90
+ var finalBackgroundColor = (_c = (isEvenColumn
78
91
  ? parsedFirstBandColorColumn
79
- : parsedSecondBandColorColumn)) !== null && _b !== void 0 ? _b : backgroundColor;
80
- var textColor = isFooter
81
- ? footerColor !== null && footerColor !== void 0 ? footerColor : stripeRowBackground
82
- : (_c = parsedFirstBandColor !== null && parsedFirstBandColor !== void 0 ? parsedFirstBandColor : parsedSecondBandColor) !== null && _c !== void 0 ? _c : finalBackgroundColor;
92
+ : parsedSecondBandColorColumn)) !== null && _c !== void 0 ? _c : backgroundColor;
93
+ // First / Last Column emphasis (Excel: bold, plus the style's fill when it has one).
94
+ // First Column outranks Last Column on a one-column table, like Excel's element order.
95
+ var edgeColumnColor = showFirstColumn && columnIndex === range.startColumnIndex
96
+ ? (0, exports.parseTintedColor)(firstColumnColor)
97
+ : showLastColumn && columnIndex === range.endColumnIndex
98
+ ? (0, exports.parseTintedColor)(lastColumnColor)
99
+ : undefined;
100
+ var isEdgeColumn = (showFirstColumn && columnIndex === range.startColumnIndex) ||
101
+ (showLastColumn && columnIndex === range.endColumnIndex);
102
+ var cellBackgroundColor = edgeColumnColor !== null && edgeColumnColor !== void 0 ? edgeColumnColor : finalBackgroundColor;
103
+ var textColor = edgeColumnColor !== null && edgeColumnColor !== void 0 ? edgeColumnColor : (isTotalsRow
104
+ ? totalRowColor !== null && totalRowColor !== void 0 ? totalRowColor : footerBackground
105
+ : isFooter
106
+ ? footerBackground
107
+ : (_d = parsedFirstBandColor !== null && parsedFirstBandColor !== void 0 ? parsedFirstBandColor : parsedSecondBandColor) !== null && _d !== void 0 ? _d : finalBackgroundColor);
83
108
  bandedCells.set(id, {
84
109
  borders: borders,
85
- backgroundColor: finalBackgroundColor,
110
+ backgroundColor: cellBackgroundColor,
86
111
  textFormat: {
112
+ bold: isEdgeColumn || (isTotalsRow && totalRowBold) ? true : undefined,
87
113
  color: textColor
88
114
  ? (0, utils_1.getContrastColor)((0, themes_1.getStringifiedColor)(textColor, theme), (0, themes_1.getStringifiedColor)({ theme: 1 }, theme), (0, themes_1.getStringifiedColor)({ theme: 0 }, theme))
89
115
  : undefined,
@@ -0,0 +1,43 @@
1
+ import type { CellInterface, GridRange } from "@rowsncolumns/grid";
2
+ import type { CellData, TableView } from "../types";
3
+ /** A body cell as it was before a calculated-column fill overwrote it (`null` = it was empty). */
4
+ export type CalculatedColumnPreviousCell = {
5
+ rowIndex: number;
6
+ columnIndex: number;
7
+ cell: CellData | null;
8
+ };
9
+ /**
10
+ * `filled`: the formula typed into a table column filled the whole column (Excel's calculated
11
+ * column) — the smart tag offers "Undo Calculated Column". `overwrite`: the column held cells that
12
+ * differ from the typed formula, so nothing filled — the tag offers "Overwrite all cells in this
13
+ * column with this formula".
14
+ */
15
+ export type CalculatedColumnFillKind = "filled" | "overwrite";
16
+ /**
17
+ * A formula typed into a table body cell that created (or could create) a calculated column — the
18
+ * record behind Excel's AutoCorrect smart tag ("Undo Calculated Column" / "Overwrite all cells in
19
+ * this column with this formula" / "Stop automatically creating calculated columns").
20
+ */
21
+ export type CalculatedColumnFill = {
22
+ sheetId: number;
23
+ tableId: TableView["id"];
24
+ /** Absolute sheet column of the calculated column. */
25
+ columnIndex: number;
26
+ /** The cell the formula was typed into — the smart tag anchors here. */
27
+ anchor: CellInterface;
28
+ /** The column's body range (header and totals rows excluded). */
29
+ range: GridRange;
30
+ /** The typed formula, as typed (relative to `anchor`). */
31
+ formula: string;
32
+ kind: CalculatedColumnFillKind;
33
+ /** The body cells the fill overwrote, with what they held before — "Undo Calculated Column" restores them. */
34
+ previous: CalculatedColumnPreviousCell[];
35
+ };
36
+ export type CalculatedColumnOption = "undo" | "overwrite" | "stop";
37
+ /**
38
+ * Whether the smart tag stays for the current active cell: it survives the commit's own cursor
39
+ * advance (Enter moves down the column, Tab moves right) and any cell of the calculated column,
40
+ * and goes away when the user moves anywhere else or switches sheet.
41
+ */
42
+ export declare const keepsCalculatedColumnTag: (fill: CalculatedColumnFill, sheetId: number, activeCell: CellInterface) => boolean;
43
+ //# sourceMappingURL=calculated-column-fill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculated-column-fill.d.ts","sourceRoot":"","sources":["../../../api/calculated-column-fill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,kGAAkG;AAClG,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,aAAa,CAAC;IACtB,iEAAiE;IACjE,KAAK,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,8GAA8G;IAC9G,QAAQ,EAAE,4BAA4B,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,MAAM,oBAAoB,EAC1B,SAAS,MAAM,EACf,YAAY,aAAa,KACxB,OAK6C,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keepsCalculatedColumnTag = void 0;
4
+ /**
5
+ * Whether the smart tag stays for the current active cell: it survives the commit's own cursor
6
+ * advance (Enter moves down the column, Tab moves right) and any cell of the calculated column,
7
+ * and goes away when the user moves anywhere else or switches sheet.
8
+ */
9
+ var keepsCalculatedColumnTag = function (fill, sheetId, activeCell) {
10
+ return sheetId === fill.sheetId &&
11
+ activeCell.rowIndex >= fill.range.startRowIndex &&
12
+ activeCell.rowIndex <= fill.range.endRowIndex + 1 &&
13
+ activeCell.columnIndex >= fill.columnIndex &&
14
+ activeCell.columnIndex <= fill.columnIndex + 1;
15
+ };
16
+ exports.keepsCalculatedColumnTag = keepsCalculatedColumnTag;
@@ -0,0 +1,8 @@
1
+ import type { Sheet } from "../types";
2
+ /**
3
+ * The first unused `Chart${n}` sheet title, like Excel's default name for a
4
+ * chartsheet created by "Move Chart → New sheet". `formatTitle` lets hosts
5
+ * localize the pattern.
6
+ */
7
+ export declare const getNextChartSheetTitle: (sheets: Pick<Sheet, "title">[], formatTitle?: (index: number) => string) => string;
8
+ //# sourceMappingURL=chart-sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-sheet.d.ts","sourceRoot":"","sources":["../../../api/chart-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAC9B,cAAa,CAAC,KAAK,EAAE,MAAM,KAAK,MAAmC,WAUpE,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNextChartSheetTitle = void 0;
4
+ /**
5
+ * The first unused `Chart${n}` sheet title, like Excel's default name for a
6
+ * chartsheet created by "Move Chart → New sheet". `formatTitle` lets hosts
7
+ * localize the pattern.
8
+ */
9
+ var getNextChartSheetTitle = function (sheets, formatTitle) {
10
+ if (formatTitle === void 0) { formatTitle = function (index) { return "Chart".concat(index); }; }
11
+ var existingTitles = new Set(sheets.map(function (sheet) { return sheet.title; }));
12
+ var index = 1;
13
+ var title = formatTitle(index);
14
+ while (existingTitles.has(title)) {
15
+ index++;
16
+ title = formatTitle(index);
17
+ }
18
+ return title;
19
+ };
20
+ exports.getNextChartSheetTitle = getNextChartSheetTitle;
@@ -0,0 +1,64 @@
1
+ import type { GridRange } from "@rowsncolumns/grid";
2
+ import type { EmbeddedChart, SheetRange } from "../types";
3
+ /**
4
+ * Border-style `type` of a selected chart's source-range outline. Not a
5
+ * user selection: it never moves the active cell, never shows a fill
6
+ * handle, and only exposes the corner resize handles when the entry is
7
+ * re-bindable.
8
+ */
9
+ export declare const CHART_SOURCE_SELECTION_TYPE = "chartSource";
10
+ /**
11
+ * Every `ChartData[]` field a spec can carry, in the order Excel colors
12
+ * them: categories, then values, then the extra bubble / hierarchy
13
+ * planes.
14
+ */
15
+ export declare const CHART_SOURCE_FIELDS: readonly ["domains", "series", "bubbleLabels", "bubbleSizes", "labels", "parentLabels", "sizeData"];
16
+ export type ChartSourceField = (typeof CHART_SOURCE_FIELDS)[number];
17
+ export type ChartSourceRole = ChartSourceField | "seriesName";
18
+ export type ChartSourceRangeEntry = {
19
+ /**
20
+ * Stable identity for the outline. Doubles as the border-style index and
21
+ * as the `data-index` of the outline's resize handles.
22
+ */
23
+ key: string;
24
+ role: ChartSourceRole;
25
+ field: ChartSourceField;
26
+ dataIndex: number;
27
+ /** Position in `ChartData.sources`; `-1` for a series-name reference. */
28
+ sourceIndex: number;
29
+ range: SheetRange;
30
+ /** Palette slot — the formula editor's per-reference color scheme. */
31
+ colorIndex: number;
32
+ /**
33
+ * Cell-range sources re-bind when a corner handle is dragged. A
34
+ * series-name reference is a single cell and only gets the outline.
35
+ */
36
+ resizable: boolean;
37
+ };
38
+ /**
39
+ * Lists every worksheet range a chart reads, in spec order, each with the
40
+ * palette slot the grid outlines it in. Spec-driven — both chart
41
+ * renderers read the same `EmbeddedChart.spec`, so the outline is the
42
+ * same for either.
43
+ *
44
+ * `sheetId` / `sheetName` identify the sheet being drawn; they are only
45
+ * needed to resolve series-name references, which the spec stores as
46
+ * addresses rather than `SheetRange`s.
47
+ */
48
+ export declare const getChartSourceRanges: (chart: EmbeddedChart, sheetId: number, sheetName?: string) => ChartSourceRangeEntry[];
49
+ export declare const getChartSourceRangeStroke: (entry: ChartSourceRangeEntry) => string;
50
+ /**
51
+ * The single cell a data point reads from: the `dataIndex`-th cell along
52
+ * the range's long axis (a column range walks rows, a row range walks
53
+ * columns), clamped to the range so a point past the end still outlines
54
+ * the last cell. Excel narrows a series outline to this cell when one
55
+ * data point is selected.
56
+ */
57
+ export declare const getChartSourcePointRange: (range: SheetRange, dataIndex: number) => SheetRange;
58
+ /**
59
+ * The chart with one source re-bound to `range` (same sheet as before).
60
+ * Returns a new `EmbeddedChart`; `onUpdateChart` applies it as a single
61
+ * history entry on both engines.
62
+ */
63
+ export declare const replaceChartSourceRange: (chart: EmbeddedChart, entry: ChartSourceRangeEntry, range: GridRange) => EmbeddedChart;
64
+ //# sourceMappingURL=chart-source-ranges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-source-ranges.d.ts","sourceRoot":"","sources":["../../../api/chart-source-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAa,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGrE;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AAIzD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,qGAQtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAc9D,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AA+BF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,aAAa,EACpB,SAAS,MAAM,EACf,YAAY,MAAM,KACjB,qBAAqB,EA+CvB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAO,qBAAqB,WAC1B,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,UAAU,EACjB,WAAW,MAAM,KAChB,UAsBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,aAAa,EACpB,OAAO,qBAAqB,EAC5B,OAAO,SAAS,KACf,aA8BF,CAAC"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceChartSourceRange = exports.getChartSourcePointRange = exports.getChartSourceRangeStroke = exports.getChartSourceRanges = exports.CHART_SOURCE_FIELDS = exports.CHART_SOURCE_SELECTION_TYPE = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var utils_1 = require("@rowsncolumns/utils");
6
+ var selections_1 = require("./selections");
7
+ /**
8
+ * Border-style `type` of a selected chart's source-range outline. Not a
9
+ * user selection: it never moves the active cell, never shows a fill
10
+ * handle, and only exposes the corner resize handles when the entry is
11
+ * re-bindable.
12
+ */
13
+ exports.CHART_SOURCE_SELECTION_TYPE = "chartSource";
14
+ var CHART_SOURCE_INDEX_PREFIX = "chart-source:";
15
+ /**
16
+ * Every `ChartData[]` field a spec can carry, in the order Excel colors
17
+ * them: categories, then values, then the extra bubble / hierarchy
18
+ * planes.
19
+ */
20
+ exports.CHART_SOURCE_FIELDS = [
21
+ "domains",
22
+ "series",
23
+ "bubbleLabels",
24
+ "bubbleSizes",
25
+ "labels",
26
+ "parentLabels",
27
+ "sizeData",
28
+ ];
29
+ /**
30
+ * Resolves a series-name reference (`Sheet1!$B$1`) to a range on the
31
+ * sheet being drawn. A reference without a sheet prefix belongs to the
32
+ * chart's own sheet; one that names another sheet is not drawn here.
33
+ */
34
+ var resolveLabelRef = function (ref, chartSheetId, sheetId, sheetName) {
35
+ var _a = tslib_1.__read((0, selections_1.generateSelectionsFromFormula)(ref.startsWith("=") ? ref : "=".concat(ref)), 1), selection = _a[0];
36
+ if (!selection) {
37
+ return undefined;
38
+ }
39
+ var refSheetName = selection.sheetName;
40
+ if (refSheetName === undefined) {
41
+ return chartSheetId === sheetId
42
+ ? tslib_1.__assign(tslib_1.__assign({}, selection.range), { sheetId: sheetId }) : undefined;
43
+ }
44
+ if (sheetName !== undefined && refSheetName === sheetName) {
45
+ return tslib_1.__assign(tslib_1.__assign({}, selection.range), { sheetId: sheetId });
46
+ }
47
+ return undefined;
48
+ };
49
+ /**
50
+ * Lists every worksheet range a chart reads, in spec order, each with the
51
+ * palette slot the grid outlines it in. Spec-driven — both chart
52
+ * renderers read the same `EmbeddedChart.spec`, so the outline is the
53
+ * same for either.
54
+ *
55
+ * `sheetId` / `sheetName` identify the sheet being drawn; they are only
56
+ * needed to resolve series-name references, which the spec stores as
57
+ * addresses rather than `SheetRange`s.
58
+ */
59
+ var getChartSourceRanges = function (chart, sheetId, sheetName) {
60
+ var e_1, _a;
61
+ var entries = [];
62
+ var spec = chart.spec;
63
+ var chartSheetId = chart.position.sheetId;
64
+ var push = function (entry) {
65
+ entries.push(tslib_1.__assign(tslib_1.__assign({}, entry), { key: "".concat(CHART_SOURCE_INDEX_PREFIX).concat(entry.field, ":").concat(entry.dataIndex, ":").concat(entry.sourceIndex), colorIndex: entries.length }));
66
+ };
67
+ var _loop_1 = function (field) {
68
+ var chartDataArray = spec[field];
69
+ if (!chartDataArray)
70
+ return "continue";
71
+ chartDataArray.forEach(function (chartData, dataIndex) {
72
+ var _a;
73
+ if (!chartData)
74
+ return;
75
+ (_a = chartData.sources) === null || _a === void 0 ? void 0 : _a.forEach(function (source, sourceIndex) {
76
+ if (!source)
77
+ return;
78
+ push({
79
+ role: field,
80
+ field: field,
81
+ dataIndex: dataIndex,
82
+ sourceIndex: sourceIndex,
83
+ range: source,
84
+ resizable: true,
85
+ });
86
+ });
87
+ if (field !== "series")
88
+ return;
89
+ var labelRef = chartData.dataLabelRef;
90
+ if (!labelRef)
91
+ return;
92
+ var range = resolveLabelRef(labelRef, chartSheetId, sheetId, sheetName);
93
+ if (!range)
94
+ return;
95
+ push({
96
+ role: "seriesName",
97
+ field: field,
98
+ dataIndex: dataIndex,
99
+ sourceIndex: -1,
100
+ range: range,
101
+ resizable: false,
102
+ });
103
+ });
104
+ };
105
+ try {
106
+ for (var CHART_SOURCE_FIELDS_1 = tslib_1.__values(exports.CHART_SOURCE_FIELDS), CHART_SOURCE_FIELDS_1_1 = CHART_SOURCE_FIELDS_1.next(); !CHART_SOURCE_FIELDS_1_1.done; CHART_SOURCE_FIELDS_1_1 = CHART_SOURCE_FIELDS_1.next()) {
107
+ var field = CHART_SOURCE_FIELDS_1_1.value;
108
+ _loop_1(field);
109
+ }
110
+ }
111
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
112
+ finally {
113
+ try {
114
+ if (CHART_SOURCE_FIELDS_1_1 && !CHART_SOURCE_FIELDS_1_1.done && (_a = CHART_SOURCE_FIELDS_1.return)) _a.call(CHART_SOURCE_FIELDS_1);
115
+ }
116
+ finally { if (e_1) throw e_1.error; }
117
+ }
118
+ return entries;
119
+ };
120
+ exports.getChartSourceRanges = getChartSourceRanges;
121
+ var getChartSourceRangeStroke = function (entry) {
122
+ return (0, utils_1.getSelectionColorAtIndex)(entry.colorIndex);
123
+ };
124
+ exports.getChartSourceRangeStroke = getChartSourceRangeStroke;
125
+ /**
126
+ * The single cell a data point reads from: the `dataIndex`-th cell along
127
+ * the range's long axis (a column range walks rows, a row range walks
128
+ * columns), clamped to the range so a point past the end still outlines
129
+ * the last cell. Excel narrows a series outline to this cell when one
130
+ * data point is selected.
131
+ */
132
+ var getChartSourcePointRange = function (range, dataIndex) {
133
+ var rows = range.endRowIndex - range.startRowIndex;
134
+ var columns = range.endColumnIndex - range.startColumnIndex;
135
+ var offset = Math.max(0, Math.floor(dataIndex));
136
+ if (rows >= columns) {
137
+ var rowIndex = range.startRowIndex + Math.min(offset, rows);
138
+ return tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: rowIndex, endRowIndex: rowIndex, startColumnIndex: range.startColumnIndex, endColumnIndex: range.startColumnIndex });
139
+ }
140
+ var columnIndex = range.startColumnIndex + Math.min(offset, columns);
141
+ return tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: range.startRowIndex, endRowIndex: range.startRowIndex, startColumnIndex: columnIndex, endColumnIndex: columnIndex });
142
+ };
143
+ exports.getChartSourcePointRange = getChartSourcePointRange;
144
+ /**
145
+ * The chart with one source re-bound to `range` (same sheet as before).
146
+ * Returns a new `EmbeddedChart`; `onUpdateChart` applies it as a single
147
+ * history entry on both engines.
148
+ */
149
+ var replaceChartSourceRange = function (chart, entry, range) {
150
+ var _a;
151
+ var spec = chart.spec;
152
+ var chartDataArray = spec[entry.field];
153
+ if (!chartDataArray || entry.sourceIndex < 0) {
154
+ return chart;
155
+ }
156
+ var chartData = chartDataArray[entry.dataIndex];
157
+ if (!chartData) {
158
+ return chart;
159
+ }
160
+ var nextSource = {
161
+ startRowIndex: range.startRowIndex,
162
+ endRowIndex: range.endRowIndex,
163
+ startColumnIndex: range.startColumnIndex,
164
+ endColumnIndex: range.endColumnIndex,
165
+ sheetId: entry.range.sheetId,
166
+ };
167
+ var sources = chartData.sources.map(function (source, index) {
168
+ return index === entry.sourceIndex ? nextSource : source;
169
+ });
170
+ var nextChartDataArray = chartDataArray.map(function (data, index) {
171
+ return index === entry.dataIndex ? tslib_1.__assign(tslib_1.__assign({}, data), { sources: sources }) : data;
172
+ });
173
+ return tslib_1.__assign(tslib_1.__assign({}, chart), { spec: tslib_1.__assign(tslib_1.__assign({}, chart.spec), (_a = {}, _a[entry.field] = nextChartDataArray, _a)) });
174
+ };
175
+ exports.replaceChartSourceRange = replaceChartSourceRange;
@@ -8,7 +8,7 @@ import type { SheetRange, TableView } from "../types";
8
8
  * @param isActiveCell
9
9
  * @param isSelection
10
10
  */
11
- export declare const getSelectionStrokeStyle: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, emptySelections: boolean) => "dashed" | "solid";
11
+ export declare const getSelectionStrokeStyle: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, emptySelections: boolean) => "solid" | "dashed";
12
12
  /**
13
13
  * Get selection stroke width
14
14
  * @param formulaMode
@@ -16,14 +16,14 @@ export declare const getSelectionStrokeStyle: (formulaMode: boolean, isFill: boo
16
16
  * @param isActiveCell
17
17
  * @returns
18
18
  */
19
- export declare const getSelectionStrokeWidth: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, isResizingTable: boolean) => 2 | 1;
19
+ export declare const getSelectionStrokeWidth: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, isResizingTable: boolean) => 1 | 2;
20
20
  /**
21
21
  * Get background opacity of selection
22
22
  * @param formulaMode
23
23
  * @param isFill
24
24
  * @returns
25
25
  */
26
- export declare const getSelectionFillOpacity: (formulaMode: boolean, isFill: boolean) => 1 | 0 | 0.2;
26
+ export declare const getSelectionFillOpacity: (formulaMode: boolean, isFill: boolean) => 0 | 1 | 0.2;
27
27
  /**
28
28
  * Get background color of selection
29
29
  * @param formulaMode
@@ -1 +1 @@
1
- {"version":3,"file":"selections.d.ts","sourceRoot":"","sources":["../../../api/selections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selections.d.ts","sourceRoot":"","sources":["../../../api/selections.ts"],"names":[],"mappings":"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"}
@@ -262,6 +262,10 @@ var selectionToTableAddress = function (selection, table, editingCell) {
262
262
  var isHeader = headerRow &&
263
263
  startRowIndex === tableStartRowIndex &&
264
264
  endRowIndex === tableStartRowIndex;
265
+ // Only the totals row
266
+ var isTotals = totalRow &&
267
+ startRowIndex === tableEndRowIndex &&
268
+ endRowIndex === tableEndRowIndex;
265
269
  // Full table
266
270
  var isAll = tableStartRowIndex === startRowIndex &&
267
271
  tableEndRowIndex === endRowIndex &&
@@ -282,6 +286,18 @@ var selectionToTableAddress = function (selection, table, editingCell) {
282
286
  : firstColumn === lastColumn
283
287
  ? firstColumn // Full column rnge
284
288
  : "[".concat(firstColumn, "]:[").concat(lastColumn, "]");
289
+ // The column part of a two-part specifier: every column is bracketed there
290
+ // (`Table[[#Headers],[Col]]`, `Table[[#All],[A]:[B]]`), unlike the lone `Table[Col]`.
291
+ var columnItem = isFullRowRange
292
+ ? ""
293
+ : firstColumn === lastColumn
294
+ ? "[".concat(firstColumn, "]")
295
+ : range;
296
+ var withItem = function (item) {
297
+ return columnItem
298
+ ? "".concat(title, "[[").concat(item, "],").concat(columnItem, "]")
299
+ : "".concat(title, "[").concat(item, "]");
300
+ };
285
301
  var isEditingCellInsideTable = editingCell
286
302
  ? (0, grid_1.isCellWithinBounds)(editingCell, table.range)
287
303
  : false;
@@ -296,10 +312,13 @@ var selectionToTableAddress = function (selection, table, editingCell) {
296
312
  return "".concat(tableName, "[").concat(range, "]");
297
313
  }
298
314
  if (isFullColumnRange) {
299
- return "".concat(tableName, "[[#All],[").concat(range, "]]");
315
+ return withItem("#All");
300
316
  }
301
317
  if (isHeader) {
302
- return "".concat(tableName, "[[#Headers]").concat(range ? "," + range : "", "]");
318
+ return withItem("#Headers");
319
+ }
320
+ if (isTotals) {
321
+ return withItem("#Totals");
303
322
  }
304
323
  return "".concat(isEditingCellInsideTable ? "" : tableName, "[@").concat(range, "]");
305
324
  };
@@ -326,6 +345,13 @@ var getTableFromSelection = function (tables, editingCell, selection, sheetName,
326
345
  }
327
346
  var headerRow = (_a = table === null || table === void 0 ? void 0 : table.headerRow) !== null && _a !== void 0 ? _a : true;
328
347
  var totalRow = (_b = table === null || table === void 0 ? void 0 : table.totalRow) !== null && _b !== void 0 ? _b : false;
348
+ // A click on the totals row is `Table[[#Totals],[Col]]` from anywhere, like the header row.
349
+ var isTableTotals = totalRow &&
350
+ (table === null || table === void 0 ? void 0 : table.range.endRowIndex) === selection.range.startRowIndex &&
351
+ (table === null || table === void 0 ? void 0 : table.range.endRowIndex) === selection.range.endRowIndex;
352
+ if (isTableTotals) {
353
+ return table;
354
+ }
329
355
  var tableDataStartRowIndex = ((_c = table === null || table === void 0 ? void 0 : table.range.startRowIndex) !== null && _c !== void 0 ? _c : 0) + (headerRow ? 1 : 0);
330
356
  var tableDataEndRowIndex = ((_d = table === null || table === void 0 ? void 0 : table.range.endRowIndex) !== null && _d !== void 0 ? _d : 0) - (totalRow ? 1 : 0);
331
357
  // Full column rnge
@@ -8,7 +8,7 @@ import type { CanvasGridMethods, CanvasGridProps, ChangeBatchOptions, ChangeBatc
8
8
  import type { SelectionAttributes as SheetSelectionAttributes } from "../components/canvas-grid/typings";
9
9
  import type { BorderLocation } from "../components/toolbar";
10
10
  import type { ExportRangeOptions } from "../hooks/use-export-range";
11
- import type { AXIS, AutoFillType, BandedRange, CellData, CellFormat, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, FillOptions, NamedRange, Sheet as SheetBase, SheetRange, SortOrder, TableTheme, TableView } from "../types";
11
+ import type { AutoFillType, AXIS, BandedRange, CellData, CellFormat, ConditionalFormatRule, CreateTableOptions, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, FillOptions, NamedRange, Sheet as SheetBase, SheetRange, SortOrder, TableTheme, TableView } from "../types";
12
12
  type CallbacksProps<T extends CellData> = RefObject<CanvasGridProps<T> | null>;
13
13
  declare class SpreadsheetCallbacks<T extends CellData> {
14
14
  callbacks: CallbacksProps<T>;
@@ -20,6 +20,11 @@ type SpreadsheetMethods = {
20
20
  commit(): boolean;
21
21
  /** Open Excel's Series dialog (Home > Fill > Series…) for the current selection. */
22
22
  openFillSeriesDialog(): void;
23
+ /** Chart clipboard — Ctrl+C / Ctrl+X / Ctrl+V / Ctrl+D on a chart (see `useChartClipboard`). */
24
+ copyChart(chartId: string | number): boolean;
25
+ cutChart(chartId: string | number): boolean;
26
+ pasteChart(): boolean;
27
+ duplicateChart(chartId: string | number): EmbeddedChart | undefined;
23
28
  };
24
29
  export declare class SpreadsheetApi<T extends CellData = CellData> extends SpreadsheetCallbacks<T> {
25
30
  store: ReturnType<typeof getDefaultStore>;
@@ -174,6 +179,14 @@ export declare class SpreadsheetApi<T extends CellData = CellData> extends Sprea
174
179
  isChartsAvailable(): boolean;
175
180
  createChart(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[], chartSpec?: EmbeddedChart): void;
176
181
  deleteChart(chartId: string | number): void;
182
+ /** Put the chart on the clipboard (Excel Ctrl+C on a selected chart). */
183
+ copyChart(chartId: string | number): boolean;
184
+ /** Copy the chart and remove it (Excel Ctrl+X on a selected chart). */
185
+ cutChart(chartId: string | number): boolean;
186
+ /** Paste the copied chart at the active cell of the active sheet; false when none is copied. */
187
+ pasteChart(): boolean;
188
+ /** Create a copy of the chart offset from the original (Excel Ctrl+D). */
189
+ duplicateChart(chartId: string | number): EmbeddedChart | undefined;
177
190
  moveChart(chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number): void;
178
191
  resizeChart(chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number): void;
179
192
  updateChart(chart: EmbeddedChart): void;
@@ -196,7 +209,7 @@ export declare class SpreadsheetApi<T extends CellData = CellData> extends Sprea
196
209
  copy(e: ClipboardEvent | undefined, sheetId: number, copiedSelections: SelectionArea<SheetSelectionAttributes>[]): void;
197
210
  cut(e: ClipboardEvent | undefined, sheetId: number): void;
198
211
  paste(e: ClipboardEvent | undefined, sourceSheetId: number | undefined, destinationSheetId: number, copiedSelections: SelectionArea<SheetSelectionAttributes>[] | undefined, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[] | undefined, finalSelections: SelectionArea<SheetSelectionAttributes>[] | undefined, shouldDeleteSource: boolean): void;
199
- createTable(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[], tableSpec?: Partial<TableView>, theme?: TableTheme, bandedRange?: BandedRange): void;
212
+ createTable(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[], tableSpec?: Partial<TableView>, theme?: TableTheme, bandedRange?: BandedRange, options?: CreateTableOptions): void;
200
213
  createBasicFilter(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[], basicFilterSpec?: any): void;
201
214
  protectRange(sheetId: number, cell: CellInterface, selections: SelectionArea<SheetSelectionAttributes>[] | undefined): void;
202
215
  unprotectRange(sheetId: number, protectedRangeId: number | string): void;
@@ -262,7 +275,7 @@ declare class CellRange<T extends CellData> extends SpreadsheetCallbacks<T> {
262
275
  * Get effective value of a cell
263
276
  * @returns
264
277
  */
265
- getEffectiveValue(): (string | number | boolean | Date | null | undefined)[][] | import("../types").Maybe<string | number | boolean | Date>;
278
+ getEffectiveValue(): import("../types").Maybe<string | number | boolean | Date> | (string | number | boolean | Date | null | undefined)[][];
266
279
  setValues(values: string[][]): this;
267
280
  clearFormatting(): this;
268
281
  setFormat<T extends FormattingType>(type: T, value: FormattingValue<T>): this;