@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
@@ -0,0 +1,43 @@
1
+ import { type SparklineGroup, type SparklineGroupPlan, type SparklineGroupType } from "@rowsncolumns/utils";
2
+ import React from "react";
3
+ export type SparklineDialogProps = {
4
+ /** Controls visibility. */
5
+ open: boolean;
6
+ onOpenChange(open: boolean): void;
7
+ /** "Create Sparklines" (Insert → Sparklines) or "Edit Sparklines" (Design → Edit Data). */
8
+ mode: "create" | "edit";
9
+ initialDataRange: string;
10
+ initialLocationRange: string;
11
+ /** Returns Excel's validation message to show, or nothing when the ranges were accepted. */
12
+ onApply(ranges: {
13
+ dataRange: string;
14
+ locationRange: string;
15
+ }): string | undefined;
16
+ };
17
+ /**
18
+ * Excel's Create Sparklines / Edit Sparklines dialog: a Data Range and a Location Range. UI-only —
19
+ * the opener turns the ranges into `onCreateSparklineGroup` / `onUpdateSparklineGroup` and reports
20
+ * back Excel's shape rule ("same number of rows or columns") as the inline error.
21
+ */
22
+ export declare const SparklineDialog: React.MemoExoticComponent<({ open, onOpenChange, mode, initialDataRange, initialLocationRange, onApply, }: SparklineDialogProps) => React.JSX.Element>;
23
+ export type SparklineDialogHostProps = {
24
+ /** The state hook's `onCreateSparklineGroup`. */
25
+ onCreateSparklineGroup(spec: {
26
+ sheetId: number;
27
+ type: SparklineGroupType;
28
+ dataRange: string;
29
+ locationRange: string;
30
+ }): SparklineGroupPlan;
31
+ /** The state hook's `onUpdateSparklineGroup`. */
32
+ onUpdateSparklineGroup(group: SparklineGroup, patch: {
33
+ dataRange: string;
34
+ locationRange: string;
35
+ }): SparklineGroupPlan;
36
+ };
37
+ /**
38
+ * Host-mounted, atom-driven wrapper around {@link SparklineDialog}. Mount it once alongside the
39
+ * other editor dialogs; the Insert menu, the Sparkline Design menu and the cell context menu open
40
+ * it. Remounted per request so each opening starts from the request's seeds.
41
+ */
42
+ export declare const SparklineDialogHost: ({ onCreateSparklineGroup, onUpdateSparklineGroup, }: SparklineDialogHostProps) => React.JSX.Element | null;
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/sparkline-dialog/index.tsx"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAGxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAiD,MAAM,OAAO,CAAC;AAUtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,2FAA2F;IAC3F,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,OAAO,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACnF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,6GAQvB,oBAAoB,uBA+FxB,CAAC;AAIF,MAAM,MAAM,wBAAwB,GAAG;IACrC,iDAAiD;IACjD,sBAAsB,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,kBAAkB,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,GAAG,kBAAkB,CAAC;IACvB,iDAAiD;IACjD,sBAAsB,CACpB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAClD,kBAAkB,CAAC;CACvB,CAAC;AAkCF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,qDAGjC,wBAAwB,6BAmC1B,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { Button, Dialog, DialogBody, DialogCloseButton, DialogContent, DialogTitle, Input, Separator, } from "@rowsncolumns/ui";
2
+ import { defaultSparklineLocation, rangeToA1, sparklineGroupDataRange, sparklineGroupLocation, } from "@rowsncolumns/utils";
3
+ import React, { memo, useCallback, useEffect, useState } from "react";
4
+ import { getUserSelections } from "../../api/selections";
5
+ import { useFocusSheet } from "../../atoms";
6
+ import { useRegisterSparklineDialogHost, useSparklineDialogState, } from "../../atoms/sparkline-dialog.atom";
7
+ /**
8
+ * Excel's Create Sparklines / Edit Sparklines dialog: a Data Range and a Location Range. UI-only —
9
+ * the opener turns the ranges into `onCreateSparklineGroup` / `onUpdateSparklineGroup` and reports
10
+ * back Excel's shape rule ("same number of rows or columns") as the inline error.
11
+ */
12
+ export const SparklineDialog = memo(({ open, onOpenChange, mode, initialDataRange, initialLocationRange, onApply, }) => {
13
+ const [dataRange, setDataRange] = useState(initialDataRange);
14
+ const [locationRange, setLocationRange] = useState(initialLocationRange);
15
+ const [error, setError] = useState(undefined);
16
+ // Re-seed on every open (the request decides the defaults).
17
+ useEffect(() => {
18
+ if (open) {
19
+ setDataRange(initialDataRange);
20
+ setLocationRange(initialLocationRange);
21
+ setError(undefined);
22
+ }
23
+ }, [open, initialDataRange, initialLocationRange]);
24
+ const commit = useCallback(() => {
25
+ const message = onApply({
26
+ dataRange: dataRange.trim(),
27
+ locationRange: locationRange.trim(),
28
+ });
29
+ if (message) {
30
+ setError(message);
31
+ return;
32
+ }
33
+ onOpenChange(false);
34
+ }, [onApply, dataRange, locationRange, onOpenChange]);
35
+ const title = mode === "create" ? "Create Sparklines" : "Edit Sparklines";
36
+ return (React.createElement(Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
37
+ React.createElement(DialogContent, { className: "w-[380px] max-w-[92vw] pointer-events-auto" },
38
+ React.createElement(DialogTitle, null, title),
39
+ React.createElement(DialogCloseButton, null),
40
+ React.createElement(DialogBody, { className: "flex flex-col gap-4" },
41
+ React.createElement("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
42
+ e.preventDefault();
43
+ commit();
44
+ } },
45
+ React.createElement("label", { className: "flex flex-col gap-1 text-xs" },
46
+ React.createElement("span", { className: "font-medium" }, "Choose the data that you want"),
47
+ React.createElement("span", { className: "flex items-center gap-2" },
48
+ React.createElement("span", { className: "w-[110px] shrink-0" }, "Data Range:"),
49
+ React.createElement(Input, { autoFocus: true, value: dataRange, onChange: (e) => setDataRange(e.target.value), placeholder: "A2:E9", "aria-label": "Data Range" }))),
50
+ React.createElement("label", { className: "flex flex-col gap-1 text-xs" },
51
+ React.createElement("span", { className: "font-medium" }, "Choose where you want the sparklines to be placed"),
52
+ React.createElement("span", { className: "flex items-center gap-2" },
53
+ React.createElement("span", { className: "w-[110px] shrink-0" }, "Location Range:"),
54
+ React.createElement(Input, { value: locationRange, onChange: (e) => setLocationRange(e.target.value), placeholder: "F2:F9", "aria-label": "Location Range" }))),
55
+ error ? (React.createElement("div", { role: "alert", className: "text-xs text-red-600" }, error)) : null,
56
+ React.createElement(Separator, null),
57
+ React.createElement("div", { className: "flex justify-end gap-2" },
58
+ React.createElement(Button, { type: "button", variant: "outline", size: "sm", onClick: () => onOpenChange(false) }, "Cancel"),
59
+ React.createElement(Button, { type: "submit", size: "sm" }, "OK")))))));
60
+ });
61
+ SparklineDialog.displayName = "SparklineDialog";
62
+ /** Excel's seeds: a multi-cell selection is the Data Range (Location = the column right of it,
63
+ * one cell per data row); a single cell is the Location Range with the Data Range left to type. */
64
+ const seedsForRequest = (request) => {
65
+ if (request.mode === "edit") {
66
+ return {
67
+ dataRange: sparklineGroupDataRange(request.group) ?? "",
68
+ locationRange: rangeToA1(sparklineGroupLocation(request.group)),
69
+ };
70
+ }
71
+ const [selection] = getUserSelections(request.activeCell, request.selections);
72
+ const range = selection?.range;
73
+ const singleCell = !range ||
74
+ (range.startRowIndex === range.endRowIndex &&
75
+ range.startColumnIndex === range.endColumnIndex);
76
+ if (singleCell) {
77
+ return {
78
+ dataRange: "",
79
+ locationRange: rangeToA1({
80
+ startRowIndex: request.activeCell.rowIndex,
81
+ endRowIndex: request.activeCell.rowIndex,
82
+ startColumnIndex: request.activeCell.columnIndex,
83
+ endColumnIndex: request.activeCell.columnIndex,
84
+ }),
85
+ };
86
+ }
87
+ return {
88
+ dataRange: rangeToA1(range),
89
+ locationRange: rangeToA1(defaultSparklineLocation(range)),
90
+ };
91
+ };
92
+ /**
93
+ * Host-mounted, atom-driven wrapper around {@link SparklineDialog}. Mount it once alongside the
94
+ * other editor dialogs; the Insert menu, the Sparkline Design menu and the cell context menu open
95
+ * it. Remounted per request so each opening starts from the request's seeds.
96
+ */
97
+ export const SparklineDialogHost = ({ onCreateSparklineGroup, onUpdateSparklineGroup, }) => {
98
+ useRegisterSparklineDialogHost();
99
+ const [request, setRequest] = useSparklineDialogState();
100
+ const focusSheet = useFocusSheet();
101
+ const close = useCallback(() => {
102
+ setRequest(null);
103
+ focusSheet?.();
104
+ }, [setRequest, focusSheet]);
105
+ if (!request)
106
+ return null;
107
+ const seeds = seedsForRequest(request);
108
+ const onOpenChange = (open) => {
109
+ if (!open)
110
+ close();
111
+ };
112
+ const onApply = (ranges) => {
113
+ const plan = request.mode === "create"
114
+ ? onCreateSparklineGroup({
115
+ sheetId: request.sheetId,
116
+ type: request.type,
117
+ ...ranges,
118
+ })
119
+ : onUpdateSparklineGroup(request.group, ranges);
120
+ return plan.error;
121
+ };
122
+ return (React.createElement(SparklineDialog, { key: JSON.stringify(seeds), open: true, mode: request.mode, initialDataRange: seeds.dataRange, initialLocationRange: seeds.locationRange, onOpenChange: onOpenChange, onApply: onApply }));
123
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/subtotal-dialog/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAE/E,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAG1B,MAAM,kCAAkC,CAAC;AAG1C,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;AAoB5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,4CAA4C;IAC5C,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,0FAOtB,mBAAmB,uBAoKvB,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;CAe9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/subtotal-dialog/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAG/E,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAG1B,MAAM,kCAAkC,CAAC;AAG1C,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;AAoB5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,4CAA4C;IAC5C,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,0FAOtB,mBAAmB,uBA8KvB,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;CAe9B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Cross1Icon } from "@rowsncolumns/icons";
2
2
  import { Button, Dialog, DialogBody, DialogCloseButton, DialogContent, DialogDescription, DialogTitle, Separator, } from "@rowsncolumns/ui";
3
3
  import React, { memo, useCallback, useEffect, useMemo, useState } from "react";
4
+ import { useFocusSheet } from "../../atoms";
4
5
  import { useRegisterSubtotalDialogHost, useSubtotalDialogState, } from "../../atoms/subtotal-dialog.atom";
5
6
  import { SUBTOTAL_FUNCTIONS } from "../../types";
6
7
  /**
@@ -31,6 +32,7 @@ export const SubtotalDialog = memo(({ open, onOpenChange, columns, initialHasHea
31
32
  const [fn, setFn] = useState("SUM");
32
33
  const [aggregates, setAggregates] = useState(() => new Set(columns.length ? [columns[columns.length - 1].columnIndex] : []));
33
34
  const [replaceCurrent, setReplaceCurrent] = useState(true);
35
+ const focusSheet = useFocusSheet();
34
36
  // Re-seed when reopened for a different range.
35
37
  useEffect(() => {
36
38
  if (open) {
@@ -69,7 +71,14 @@ export const SubtotalDialog = memo(({ open, onOpenChange, columns, initialHasHea
69
71
  onOpenChange(false);
70
72
  }, [groupBy, orderedAggregates, fn, hasHeader, replaceCurrent, onApply, onOpenChange]);
71
73
  return (React.createElement(Dialog, { open: open, onOpenChange: onOpenChange },
72
- React.createElement(DialogContent, { className: "w-[420px] max-w-[92vw] pointer-events-auto" },
74
+ React.createElement(DialogContent, { className: "w-[420px] max-w-[92vw] pointer-events-auto",
75
+ // The dialog is opened from the context menu, whose item is gone by the time the dialog
76
+ // closes, so Radix has no trigger to return focus to and it lands on the body — Ctrl+Z
77
+ // right after OK would go nowhere. Hand focus back to the grid instead.
78
+ onCloseAutoFocus: (event) => {
79
+ event.preventDefault();
80
+ focusSheet?.();
81
+ } },
73
82
  React.createElement(DialogTitle, null, "Subtotal"),
74
83
  React.createElement(DialogDescription, null, "Insert a total row after every change in a column, plus a grand total, and outline the groups."),
75
84
  React.createElement(DialogCloseButton, { onClick: () => onOpenChange(false) },
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import type { TableAutoExpansionOption } from "../../api/table-auto-expansion";
3
+ export type TableAutoExpansionSmartTagProps = {
4
+ /** Position/size of the selection the tag is anchored to (bottom-left). */
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ /** Whether the host can turn auto-expansion off ("Stop Automatically Expanding Tables"). */
10
+ canStop: boolean;
11
+ onChooseOption(option: TableAutoExpansionOption): void;
12
+ };
13
+ /**
14
+ * Excel's AutoCorrect Options smart tag after a table auto-expanded (a value typed, pasted or
15
+ * filled into the row below / column right of a table): the lightning-bolt button offering "Undo
16
+ * Table AutoExpansion" — the table alone shrinks back, the written cells stay — and "Stop
17
+ * Automatically Expanding Tables" (when the host wires `onChangeAutoExpandTables`). Same skin as
18
+ * the Insert Options tag.
19
+ */
20
+ export declare const TableAutoExpansionSmartTag: {
21
+ ({ x, y, width: _width, height, canStop, onChooseOption, }: TableAutoExpansionSmartTagProps): React.JSX.Element;
22
+ displayName: string;
23
+ };
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/table-auto-expansion-smart-tag/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,2EAA2E;IAC3E,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACxD,CAAC;AASF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;gEAOpC,+BAA+B;;CAqCjC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuTrigger, IconButton, } from "@rowsncolumns/ui";
2
+ import React, { useState } from "react";
3
+ /** Excel's AutoCorrect Options lightning bolt. */
4
+ const LightningIcon = () => (React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true" },
5
+ React.createElement("path", { d: "M13 2 4 14h6l-1 8 9-12h-6l1-8z" })));
6
+ /**
7
+ * Excel's AutoCorrect Options smart tag after a table auto-expanded (a value typed, pasted or
8
+ * filled into the row below / column right of a table): the lightning-bolt button offering "Undo
9
+ * Table AutoExpansion" — the table alone shrinks back, the written cells stay — and "Stop
10
+ * Automatically Expanding Tables" (when the host wires `onChangeAutoExpandTables`). Same skin as
11
+ * the Insert Options tag.
12
+ */
13
+ export const TableAutoExpansionSmartTag = ({ x, y, width: _width, height, canStop, onChooseOption, }) => {
14
+ const [open, setOpen] = useState(false);
15
+ return (React.createElement("div", { className: "absolute pointer-events-auto flex items-start justify-start", style: { left: x, top: y + height }, onMouseDown: (e) => e.stopPropagation(), "data-testid": "table-auto-expansion" },
16
+ React.createElement(DropdownMenu, { modal: false, open: open, onOpenChange: setOpen },
17
+ React.createElement(DropdownMenuTrigger, { asChild: true },
18
+ React.createElement(IconButton, { tooltip: "AutoCorrect Options", "aria-label": "AutoCorrect Options", className: "shadow-sm bg-rnc-background border-rnc-border border border-solid rounded-md" },
19
+ React.createElement(LightningIcon, null))),
20
+ React.createElement(DropdownMenuPortal, null,
21
+ React.createElement(DropdownMenuContent, { align: "start", onCloseAutoFocus: (event) => event.preventDefault() },
22
+ React.createElement(DropdownMenuItem, { onSelect: () => onChooseOption("undo") }, "Undo Table AutoExpansion"),
23
+ canStop ? (React.createElement(DropdownMenuItem, { onSelect: () => onChooseOption("stop") }, "Stop Automatically Expanding Tables")) : null)))));
24
+ };
25
+ TableAutoExpansionSmartTag.displayName = "TableAutoExpansionSmartTag";
@@ -15,6 +15,7 @@ export * from "./text-rotation-selector";
15
15
  export * from "./text-format-selector";
16
16
  export * from "./theme-selector";
17
17
  export * from "./table-actions";
18
+ export * from "./sparkline-actions";
18
19
  export * from "./cell-style-selector";
19
20
  export * from "./table-style-selector";
20
21
  export * from "./border-color-selector";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -15,6 +15,7 @@ export * from "./text-rotation-selector";
15
15
  export * from "./text-format-selector";
16
16
  export * from "./theme-selector";
17
17
  export * from "./table-actions";
18
+ export * from "./sparkline-actions";
18
19
  export * from "./cell-style-selector";
19
20
  export * from "./table-style-selector";
20
21
  export * from "./border-color-selector";
@@ -7,6 +7,7 @@ type InsertMenuProps = {
7
7
  activeCell: CellInterface;
8
8
  selections: SelectionArea<SelectionAttributes>[];
9
9
  onRequestCreatePivotTable?(pivotTable: PivotTable): void;
10
+ onRequestCreatePivotChart?: CanvasGridProps["onRequestCreatePivotChart"];
10
11
  onCreateNewSheet?: CanvasGridProps["onCreateNewSheet"];
11
12
  onInsertCellsShiftRight?: CanvasGridProps["onInsertCellsShiftRight"];
12
13
  onInsertCellsShiftDown?: CanvasGridProps["onInsertCellsShiftDown"];
@@ -17,6 +18,6 @@ type InsertMenuProps = {
17
18
  onRequestInsertLink?(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]): void;
18
19
  onRequestDataValidation: CanvasGridProps["onRequestDataValidation"];
19
20
  };
20
- export declare const InsertMenu: React.MemoExoticComponent<({ sheetId, activeCell, selections, onCreateNewSheet, onInsertCellsShiftRight, onInsertCellsShiftDown, onInsertRow, onInsertColumn, onCreateChart, onRequestInsertImage, onRequestInsertLink, onRequestDataValidation, onRequestCreatePivotTable, }: InsertMenuProps) => React.JSX.Element>;
21
+ export declare const InsertMenu: React.MemoExoticComponent<({ sheetId, activeCell, selections, onCreateNewSheet, onInsertCellsShiftRight, onInsertCellsShiftDown, onInsertRow, onInsertColumn, onCreateChart, onRequestInsertImage, onRequestInsertLink, onRequestDataValidation, onRequestCreatePivotTable, onRequestCreatePivotChart, }: InsertMenuProps) => React.JSX.Element>;
21
22
  export {};
22
23
  //# sourceMappingURL=insert-menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-menu.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/insert-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAgB5B,OAAO,KAAuB,MAAM,OAAO,CAAC;AAI5C,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,yBAAyB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,uBAAuB,CAAC,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrE,sBAAsB,CAAC,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACnE,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,oBAAoB,CAAC,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,eAAe,CAAC,EAAE,OAAO,GACxB,IAAI,CAAC;IACR,mBAAmB,CAAC,CAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,uBAAuB,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,UAAU,iRAelB,eAAe,uBA2PnB,CAAC"}
1
+ {"version":3,"file":"insert-menu.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/insert-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAgB5B,OAAO,KAAuB,MAAM,OAAO,CAAC;AAQ5C,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,yBAAyB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACzD,yBAAyB,CAAC,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzE,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,uBAAuB,CAAC,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrE,sBAAsB,CAAC,EAAE,eAAe,CAAC,wBAAwB,CAAC,CAAC;IACnE,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,oBAAoB,CAAC,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,eAAe,CAAC,EAAE,OAAO,GACxB,IAAI,CAAC;IACR,mBAAmB,CAAC,CAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,uBAAuB,EAAE,eAAe,CAAC,yBAAyB,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,UAAU,4SAgBlB,eAAe,uBAoSnB,CAAC"}
@@ -5,9 +5,13 @@ import { uuid, uuidString } from "@rowsncolumns/utils";
5
5
  import React, { memo, useRef } from "react";
6
6
  import { getUserSelections } from "../../api/selections";
7
7
  import { useFocusSheet, useInsertNote } from "../../atoms";
8
- export const InsertMenu = memo(({ sheetId, activeCell, selections, onCreateNewSheet, onInsertCellsShiftRight, onInsertCellsShiftDown, onInsertRow, onInsertColumn, onCreateChart, onRequestInsertImage, onRequestInsertLink, onRequestDataValidation, onRequestCreatePivotTable, }) => {
8
+ import { useIsSparklineDialogMounted, useOpenSparklineDialog, } from "../../atoms/sparkline-dialog.atom";
9
+ import { SPARKLINE_TYPES } from "./sparkline-actions";
10
+ export const InsertMenu = memo(({ sheetId, activeCell, selections, onCreateNewSheet, onInsertCellsShiftRight, onInsertCellsShiftDown, onInsertRow, onInsertColumn, onCreateChart, onRequestInsertImage, onRequestInsertLink, onRequestDataValidation, onRequestCreatePivotTable, onRequestCreatePivotChart, }) => {
9
11
  const focusSheet = useFocusSheet();
10
12
  const onInsertNote = useInsertNote();
13
+ const openSparklineDialog = useOpenSparklineDialog();
14
+ const isSparklineDialogMounted = useIsSparklineDialogMounted();
11
15
  const shouldFocusSheetRef = useRef(true);
12
16
  return (React.createElement(DropdownMenu, { modal: false },
13
17
  React.createElement(DropdownMenuTrigger, { asChild: true },
@@ -74,6 +78,25 @@ export const InsertMenu = memo(({ sheetId, activeCell, selections, onCreateNewSh
74
78
  shouldFocusSheetRef.current = false;
75
79
  onCreateChart?.(sheetId, activeCell, selections);
76
80
  } }, "Chart"),
81
+ onRequestCreatePivotChart ? (React.createElement(DropdownMenuItem, { onClick: () => {
82
+ shouldFocusSheetRef.current = false;
83
+ onRequestCreatePivotChart(sheetId, activeCell, selections);
84
+ } }, "PivotChart")) : null,
85
+ isSparklineDialogMounted ? (React.createElement(DropdownMenuSub, null,
86
+ React.createElement(DropdownMenuSubTrigger, null,
87
+ "Sparklines",
88
+ React.createElement(DropdownRightSlot, null,
89
+ React.createElement(ChevronRightIcon, null))),
90
+ React.createElement(DropdownMenuSubContent, null, SPARKLINE_TYPES.map((entry) => (React.createElement(DropdownMenuItem, { key: entry.value, onClick: () => {
91
+ shouldFocusSheetRef.current = false;
92
+ openSparklineDialog({
93
+ mode: "create",
94
+ sheetId,
95
+ type: entry.value,
96
+ activeCell,
97
+ selections,
98
+ });
99
+ } }, entry.label)))))) : null,
77
100
  React.createElement(DropdownMenuSub, null,
78
101
  React.createElement(DropdownMenuSubTrigger, null,
79
102
  "Image",
@@ -1,6 +1,7 @@
1
1
  import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/grid";
2
2
  import { Direction } from "@rowsncolumns/grid";
3
3
  import React from "react";
4
+ import type { TableView } from "../../types";
4
5
  import type { SelectionAttributes } from "../canvas-grid/typings";
5
6
  type MergeCellsSelectorProps = {
6
7
  activeCell: CellInterface;
@@ -9,7 +10,9 @@ type MergeCellsSelectorProps = {
9
10
  onMerge(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], direction?: Direction): void;
10
11
  onUnMerge(sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]): void;
11
12
  merges?: GridRange[] | null;
13
+ /** Tables of the workbook — a selection touching one on `sheetId` cannot be merged (Excel). */
14
+ tables?: TableView[] | null;
12
15
  };
13
- export declare const MergeCellsSelector: ({ activeCell, selections, sheetId, merges, onMerge, onUnMerge, }: MergeCellsSelectorProps) => React.JSX.Element;
16
+ export declare const MergeCellsSelector: ({ activeCell, selections, sheetId, merges, tables, onMerge, onUnMerge, }: MergeCellsSelectorProps) => React.JSX.Element;
14
17
  export {};
15
18
  //# sourceMappingURL=merge-cells-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-cells-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/merge-cells-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAY7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CACL,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,SAAS,CAAC,EAAE,SAAS,GACpB,IAAI,CAAC;IACR,SAAS,CACP,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,kEAOhC,uBAAuB,sBAqFzB,CAAC"}
1
+ {"version":3,"file":"merge-cells-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/merge-cells-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAkB,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAY7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CACL,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,SAAS,CAAC,EAAE,SAAS,GACpB,IAAI,CAAC;IACR,SAAS,CACP,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,GAC/C,IAAI,CAAC;IACR,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,0EAQhC,uBAAuB,sBAgGzB,CAAC"}
@@ -1,15 +1,19 @@
1
- import { Direction, isEqualCells } from "@rowsncolumns/grid";
1
+ import { areaIntersects, Direction, isEqualCells } from "@rowsncolumns/grid";
2
2
  import { AiOutlineMergeCells, MdOutlineArrowDropDown, } from "@rowsncolumns/icons";
3
3
  import { DropdownMenuPortal, IconButton, Stack } from "@rowsncolumns/ui";
4
4
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@rowsncolumns/ui";
5
5
  import React from "react";
6
6
  import { useFocusSheet } from "../../atoms";
7
7
  import { DEFAULT_ARRAY } from "../../config";
8
- export const MergeCellsSelector = ({ activeCell, selections = DEFAULT_ARRAY, sheetId, merges, onMerge, onUnMerge, }) => {
8
+ export const MergeCellsSelector = ({ activeCell, selections = DEFAULT_ARRAY, sheetId, merges, tables, onMerge, onUnMerge, }) => {
9
9
  const focusSheet = useFocusSheet();
10
10
  const isMerged = !!merges?.find((merge) => isEqualCells({ rowIndex: merge.startRowIndex, columnIndex: merge.startColumnIndex }, activeCell));
11
11
  const selection = selections[selections.length - 1];
12
- const disableMenu = selections.length === 0 && !isMerged;
12
+ // Excel greys the merge controls out for a selection that touches a table.
13
+ const selectionTouchesTable = !!tables?.some((table) => table.sheetId === sheetId &&
14
+ selections.some((sel) => areaIntersects(table.range, sel.range)));
15
+ const disableMerge = selectionTouchesTable && !isMerged;
16
+ const disableMenu = (selections.length === 0 && !isMerged) || disableMerge;
13
17
  const canMergeHorizontally = selection &&
14
18
  selection.range.startColumnIndex !== selection.range.endColumnIndex;
15
19
  const canMergeVertically = selection && selection.range.startRowIndex !== selection.range.endRowIndex;
@@ -29,18 +33,18 @@ export const MergeCellsSelector = ({ activeCell, selections = DEFAULT_ARRAY, she
29
33
  React.createElement(MdOutlineArrowDropDown, null))),
30
34
  React.createElement(DropdownMenuPortal, null,
31
35
  React.createElement(DropdownMenuContent, { align: "end" },
32
- React.createElement(DropdownMenuItem, { disabled: isMerged, onClick: () => {
36
+ React.createElement(DropdownMenuItem, { disabled: isMerged || selectionTouchesTable, onClick: () => {
33
37
  onMerge(sheetId, activeCell, selections);
34
38
  focusSheet?.();
35
39
  } }, "Merge all"),
36
- React.createElement(DropdownMenuItem, { disabled: isMerged || !canMergeVertically, onClick: () => {
40
+ React.createElement(DropdownMenuItem, { disabled: isMerged || selectionTouchesTable || !canMergeVertically, onClick: () => {
37
41
  onMerge(sheetId, activeCell, selections, Direction.Down);
38
42
  focusSheet?.();
39
43
  } }, "Merge vertically"),
40
44
  React.createElement(DropdownMenuItem, { onClick: () => {
41
45
  onMerge(sheetId, activeCell, selections, Direction.Right);
42
46
  focusSheet?.();
43
- }, disabled: isMerged || !canMergeHorizontally }, "Merge horizontally"),
47
+ }, disabled: isMerged || selectionTouchesTable || !canMergeHorizontally }, "Merge horizontally"),
44
48
  React.createElement(DropdownMenuItem, { disabled: !isMerged, onClick: () => {
45
49
  onUnMerge(sheetId, activeCell, selections);
46
50
  focusSheet?.();
@@ -0,0 +1,31 @@
1
+ import type { CellInterface, SelectionArea } from "@rowsncolumns/grid";
2
+ import type { SparklineGroup, SparklineGroupOptions, SparklineGroupType } from "@rowsncolumns/utils";
3
+ import React from "react";
4
+ import type { SelectionAttributes } from "../canvas-grid/typings";
5
+ export declare const SPARKLINE_TYPES: {
6
+ value: SparklineGroupType;
7
+ label: string;
8
+ }[];
9
+ export type SparklineActionsProps = {
10
+ sheetId: number;
11
+ activeCell: CellInterface;
12
+ selections: SelectionArea<SelectionAttributes>[];
13
+ /** The state hook's group reader — the Design entries are enabled when this finds a group. */
14
+ getSparklineGroup?(sheetId: number, cell: CellInterface): SparklineGroup | undefined;
15
+ onUpdateSparklineGroup?(group: SparklineGroup, patch: {
16
+ type?: SparklineGroupType;
17
+ options?: SparklineGroupOptions;
18
+ }): unknown;
19
+ onDeleteSparklineGroup?(group: SparklineGroup): void;
20
+ onClearSparklines?(sheetId: number, cells: CellInterface[]): void;
21
+ onGroupSparklines?(sheetId: number, activeCell: CellInterface, cells: CellInterface[]): void;
22
+ readonly?: boolean;
23
+ };
24
+ /**
25
+ * Excel's Sparklines ribbon: Insert → Sparklines (Line / Column / Win-Loss → the Create
26
+ * Sparklines dialog) and, when the active cell is in a sparkline group, the Sparkline Design tab —
27
+ * Edit Data & Location, Type, Show (points + markers), Sparkline / marker colours, Axis (show
28
+ * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Clear.
29
+ */
30
+ export declare const SparklineActions: ({ sheetId, activeCell, selections, getSparklineGroup, onUpdateSparklineGroup, onDeleteSparklineGroup, onClearSparklines, onGroupSparklines, readonly, }: SparklineActionsProps) => React.JSX.Element;
31
+ //# sourceMappingURL=sparkline-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sparkline-actions.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/sparkline-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBvE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAIzE,CAAC;AA6CF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,8FAA8F;IAC9F,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;IACrF,sBAAsB,CAAC,CACrB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,qBAAqB,CAAA;KAAE,GACpE,OAAO,CAAC;IACX,sBAAsB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrD,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAClE,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,yJAU9B,qBAAqB,sBAyXvB,CAAC"}