@rowsncolumns/spreadsheet-state 29.0.0 → 29.1.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 (603) hide show
  1. package/dist/cjs/api/anchored-objects.d.ts +122 -6
  2. package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
  3. package/dist/cjs/api/anchored-objects.js +464 -43
  4. package/dist/cjs/api/copy-paste.d.ts +1 -2
  5. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  6. package/dist/cjs/api/copy-paste.js +1 -3
  7. package/dist/cjs/api/filter.d.ts +15 -1
  8. package/dist/cjs/api/filter.d.ts.map +1 -1
  9. package/dist/cjs/api/filter.js +32 -2
  10. package/dist/cjs/api/formula.d.ts +63 -0
  11. package/dist/cjs/api/formula.d.ts.map +1 -1
  12. package/dist/cjs/api/formula.js +278 -8
  13. package/dist/cjs/api/paint-format.d.ts +22 -1
  14. package/dist/cjs/api/paint-format.d.ts.map +1 -1
  15. package/dist/cjs/api/paint-format.js +57 -1
  16. package/dist/cjs/api/sort.d.ts +23 -1
  17. package/dist/cjs/api/sort.d.ts.map +1 -1
  18. package/dist/cjs/api/sort.js +52 -6
  19. package/dist/cjs/api/structural-guards.d.ts +57 -0
  20. package/dist/cjs/api/structural-guards.d.ts.map +1 -1
  21. package/dist/cjs/api/structural-guards.js +93 -1
  22. package/dist/cjs/api/structural-table-refs.d.ts +58 -3
  23. package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
  24. package/dist/cjs/api/structural-table-refs.js +177 -16
  25. package/dist/cjs/api/table.d.ts +26 -2
  26. package/dist/cjs/api/table.d.ts.map +1 -1
  27. package/dist/cjs/api/table.js +93 -60
  28. package/dist/cjs/api/validation.d.ts.map +1 -1
  29. package/dist/cjs/api/validation.js +53 -8
  30. package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
  31. package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
  32. package/dist/cjs/atoms/creating-table.atom.js +4 -0
  33. package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
  34. package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
  35. package/dist/cjs/atoms/dialog-state.atom.js +28 -0
  36. package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
  37. package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
  39. package/dist/cjs/atoms/index.d.ts +4 -0
  40. package/dist/cjs/atoms/index.d.ts.map +1 -1
  41. package/dist/cjs/atoms/index.js +4 -0
  42. package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
  43. package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
  44. package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
  45. package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
  46. package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
  47. package/dist/cjs/atoms/resizing-table.atom.js +5 -0
  48. package/dist/cjs/commands.d.ts +129 -2
  49. package/dist/cjs/commands.d.ts.map +1 -1
  50. package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
  51. package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
  52. package/dist/cjs/components/editors/embed-editor.js +38 -9
  53. package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
  54. package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
  55. package/dist/cjs/components/editors/slicer-editor.js +87 -0
  56. package/dist/cjs/components/editors/table-editor.d.ts +58 -2
  57. package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
  58. package/dist/cjs/components/editors/table-editor.js +261 -20
  59. package/dist/cjs/components/index.d.ts +1 -0
  60. package/dist/cjs/components/index.d.ts.map +1 -1
  61. package/dist/cjs/components/index.js +1 -0
  62. package/dist/cjs/constants.d.ts +9 -1
  63. package/dist/cjs/constants.d.ts.map +1 -1
  64. package/dist/cjs/constants.js +12 -0
  65. package/dist/cjs/generated-names.d.ts +13 -3
  66. package/dist/cjs/generated-names.d.ts.map +1 -1
  67. package/dist/cjs/generated-names.js +3 -1
  68. package/dist/cjs/helpers.d.ts +5 -0
  69. package/dist/cjs/helpers.d.ts.map +1 -1
  70. package/dist/cjs/helpers.js +10 -1
  71. package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
  72. package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
  73. package/dist/cjs/hooks/use-on-change-batch.js +43 -35
  74. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
  75. package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  76. package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
  77. package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
  78. package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
  79. package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
  80. package/dist/cjs/hooks/use-on-change.d.ts +36 -3
  81. package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
  82. package/dist/cjs/hooks/use-on-change.js +218 -136
  83. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
  84. package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  85. package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
  86. package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
  87. package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
  88. package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
  89. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  90. package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  91. package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
  92. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  93. package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  94. package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
  95. package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
  96. package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
  97. package/dist/cjs/hooks/use-on-delete-column.js +3 -1
  98. package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
  99. package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
  100. package/dist/cjs/hooks/use-on-delete-row.js +3 -1
  101. package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
  102. package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
  103. package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
  104. package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
  105. package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
  106. package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
  107. package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
  108. package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
  109. package/dist/cjs/hooks/use-on-delete.js +5 -1
  110. package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
  111. package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
  112. package/dist/cjs/hooks/use-on-embeds.js +26 -24
  113. package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
  114. package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-on-fill.js +29 -15
  116. package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-on-filter-table.js +209 -103
  118. package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
  119. package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
  120. package/dist/cjs/hooks/use-on-import-excel.js +22 -19
  121. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  122. package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
  124. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  125. package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  126. package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
  127. package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
  128. package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
  129. package/dist/cjs/hooks/use-on-insert-column.js +3 -1
  130. package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
  131. package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
  132. package/dist/cjs/hooks/use-on-insert-row.js +3 -1
  133. package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
  134. package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
  135. package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
  136. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  137. package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  138. package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
  139. package/dist/cjs/hooks/use-on-move-columns.d.ts +3 -1
  140. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  141. package/dist/cjs/hooks/use-on-move-columns.js +14 -1
  142. package/dist/cjs/hooks/use-on-move-rows.d.ts +3 -1
  143. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  144. package/dist/cjs/hooks/use-on-move-rows.js +14 -1
  145. package/dist/cjs/hooks/use-on-move-selection.d.ts +3 -1
  146. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  147. package/dist/cjs/hooks/use-on-move-selection.js +88 -25
  148. package/dist/cjs/hooks/use-on-paste.d.ts +22 -1
  149. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  150. package/dist/cjs/hooks/use-on-paste.js +993 -776
  151. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
  152. package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  153. package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
  154. package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
  155. package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
  156. package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
  157. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
  158. package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  159. package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
  160. package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
  161. package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
  162. package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
  163. package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
  164. package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
  165. package/dist/cjs/hooks/use-on-resize-table.js +110 -33
  166. package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
  167. package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
  168. package/dist/cjs/hooks/use-on-sort-column.js +136 -90
  169. package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
  170. package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-on-sort-range.js +113 -67
  172. package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
  173. package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
  174. package/dist/cjs/hooks/use-on-sort-table.js +128 -98
  175. package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
  176. package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
  177. package/dist/cjs/hooks/use-on-subtotal.js +13 -9
  178. package/dist/cjs/hooks/use-on-table.d.ts +39 -7
  179. package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
  180. package/dist/cjs/hooks/use-on-table.js +257 -49
  181. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
  182. package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  183. package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
  184. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  185. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  186. package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
  187. package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
  188. package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
  189. package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
  190. package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
  191. package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
  192. package/dist/cjs/hooks/use-sheet-properties.js +54 -34
  193. package/dist/cjs/hooks/use-slicers.d.ts +2 -2
  194. package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
  195. package/dist/cjs/hooks/use-slicers.js +17 -26
  196. package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
  197. package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
  198. package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
  199. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +56 -10
  200. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  201. package/dist/cjs/hooks/use-spreadsheet-state.js +322 -100
  202. package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
  203. package/dist/cjs/hooks/use-structured-reference.js +17 -0
  204. package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
  205. package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
  206. package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
  207. package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
  208. package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
  209. package/dist/cjs/hooks/use-undo-redo.js +169 -10
  210. package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
  211. package/dist/cjs/hooks/utils/sort-rows.js +4 -3
  212. package/dist/cjs/index.d.ts +7 -0
  213. package/dist/cjs/index.d.ts.map +1 -1
  214. package/dist/cjs/index.js +8 -0
  215. package/dist/cjs/interface/apply-fill.d.ts +26 -3
  216. package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
  217. package/dist/cjs/interface/apply-fill.js +207 -98
  218. package/dist/cjs/interface/change-batch.d.ts +1 -1
  219. package/dist/cjs/interface/change-batch.d.ts.map +1 -1
  220. package/dist/cjs/interface/change-batch.js +112 -15
  221. package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
  222. package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
  223. package/dist/cjs/interface/change-calculated-column.js +87 -17
  224. package/dist/cjs/interface/change-table-column.d.ts +81 -7
  225. package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
  226. package/dist/cjs/interface/change-table-column.js +336 -76
  227. package/dist/cjs/interface/create-table.d.ts +15 -3
  228. package/dist/cjs/interface/create-table.d.ts.map +1 -1
  229. package/dist/cjs/interface/create-table.js +100 -25
  230. package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
  231. package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
  232. package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
  233. package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
  234. package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
  235. package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
  236. package/dist/cjs/interface/delete-cells.d.ts +1 -1
  237. package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
  238. package/dist/cjs/interface/delete-cells.js +81 -25
  239. package/dist/cjs/interface/delete-column.d.ts +1 -1
  240. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  241. package/dist/cjs/interface/delete-column.js +9 -2
  242. package/dist/cjs/interface/delete-row.d.ts +1 -1
  243. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  244. package/dist/cjs/interface/delete-row.js +223 -18
  245. package/dist/cjs/interface/delete-sheet.d.ts +2 -2
  246. package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
  247. package/dist/cjs/interface/delete-sheet.js +118 -1
  248. package/dist/cjs/interface/delete-table-column.d.ts +1 -1
  249. package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
  250. package/dist/cjs/interface/delete-table-column.js +11 -1
  251. package/dist/cjs/interface/delete-table-row.d.ts +1 -1
  252. package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
  253. package/dist/cjs/interface/delete-table-row.js +361 -275
  254. package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
  255. package/dist/cjs/interface/duplicate-sheet.js +83 -31
  256. package/dist/cjs/interface/embeds.d.ts +10 -1
  257. package/dist/cjs/interface/embeds.d.ts.map +1 -1
  258. package/dist/cjs/interface/embeds.js +120 -6
  259. package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
  260. package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
  261. package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
  262. package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
  263. package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
  264. package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
  265. package/dist/cjs/interface/insert-column.d.ts +2 -2
  266. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  267. package/dist/cjs/interface/insert-column.js +67 -38
  268. package/dist/cjs/interface/insert-row.d.ts +1 -1
  269. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  270. package/dist/cjs/interface/insert-row.js +9 -2
  271. package/dist/cjs/interface/insert-table-row.d.ts +2 -1
  272. package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
  273. package/dist/cjs/interface/insert-table-row.js +70 -19
  274. package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
  275. package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
  276. package/dist/cjs/interface/remove-duplicates.js +46 -6
  277. package/dist/cjs/interface/remove-table.d.ts +1 -1
  278. package/dist/cjs/interface/remove-table.d.ts.map +1 -1
  279. package/dist/cjs/interface/remove-table.js +72 -16
  280. package/dist/cjs/interface/slicers.d.ts +12 -1
  281. package/dist/cjs/interface/slicers.d.ts.map +1 -1
  282. package/dist/cjs/interface/slicers.js +47 -2
  283. package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
  284. package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
  285. package/dist/cjs/interface/spreadsheet-interface.js +64 -1
  286. package/dist/cjs/interface/table-totalrow.d.ts +13 -1
  287. package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
  288. package/dist/cjs/interface/table-totalrow.js +107 -73
  289. package/dist/cjs/interface/table-utils.d.ts +59 -6
  290. package/dist/cjs/interface/table-utils.d.ts.map +1 -1
  291. package/dist/cjs/interface/table-utils.js +211 -15
  292. package/dist/cjs/interface/update-table.d.ts +16 -1
  293. package/dist/cjs/interface/update-table.d.ts.map +1 -1
  294. package/dist/cjs/interface/update-table.js +190 -44
  295. package/dist/cjs/sheet-cell.d.ts.map +1 -1
  296. package/dist/cjs/test-setup.d.ts.map +1 -1
  297. package/dist/cjs/test-setup.js +6 -0
  298. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  299. package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
  300. package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
  301. package/dist/cjs/validation-schema/table.schema.js +20 -3
  302. package/dist/esm/api/anchored-objects.d.ts +122 -6
  303. package/dist/esm/api/anchored-objects.d.ts.map +1 -1
  304. package/dist/esm/api/anchored-objects.js +375 -15
  305. package/dist/esm/api/copy-paste.d.ts +1 -2
  306. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  307. package/dist/esm/api/copy-paste.js +1 -3
  308. package/dist/esm/api/filter.d.ts +15 -1
  309. package/dist/esm/api/filter.d.ts.map +1 -1
  310. package/dist/esm/api/filter.js +28 -0
  311. package/dist/esm/api/formula.d.ts +63 -0
  312. package/dist/esm/api/formula.d.ts.map +1 -1
  313. package/dist/esm/api/formula.js +235 -8
  314. package/dist/esm/api/paint-format.d.ts +22 -1
  315. package/dist/esm/api/paint-format.d.ts.map +1 -1
  316. package/dist/esm/api/paint-format.js +44 -1
  317. package/dist/esm/api/sort.d.ts +23 -1
  318. package/dist/esm/api/sort.d.ts.map +1 -1
  319. package/dist/esm/api/sort.js +45 -6
  320. package/dist/esm/api/structural-guards.d.ts +57 -0
  321. package/dist/esm/api/structural-guards.d.ts.map +1 -1
  322. package/dist/esm/api/structural-guards.js +85 -0
  323. package/dist/esm/api/structural-table-refs.d.ts +58 -3
  324. package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
  325. package/dist/esm/api/structural-table-refs.js +126 -6
  326. package/dist/esm/api/table.d.ts +26 -2
  327. package/dist/esm/api/table.d.ts.map +1 -1
  328. package/dist/esm/api/table.js +70 -48
  329. package/dist/esm/api/validation.d.ts.map +1 -1
  330. package/dist/esm/api/validation.js +53 -8
  331. package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
  332. package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
  333. package/dist/esm/atoms/creating-table.atom.js +4 -0
  334. package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
  335. package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
  336. package/dist/esm/atoms/dialog-state.atom.js +12 -0
  337. package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
  338. package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
  339. package/dist/esm/atoms/editing-slicer.atom.js +6 -0
  340. package/dist/esm/atoms/index.d.ts +4 -0
  341. package/dist/esm/atoms/index.d.ts.map +1 -1
  342. package/dist/esm/atoms/index.js +4 -0
  343. package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
  344. package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
  345. package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
  346. package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
  347. package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
  348. package/dist/esm/atoms/resizing-table.atom.js +5 -0
  349. package/dist/esm/commands.d.ts +129 -2
  350. package/dist/esm/commands.d.ts.map +1 -1
  351. package/dist/esm/components/editors/embed-editor.d.ts +4 -2
  352. package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
  353. package/dist/esm/components/editors/embed-editor.js +40 -6
  354. package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
  355. package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
  356. package/dist/esm/components/editors/slicer-editor.js +85 -0
  357. package/dist/esm/components/editors/table-editor.d.ts +58 -2
  358. package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
  359. package/dist/esm/components/editors/table-editor.js +243 -19
  360. package/dist/esm/components/index.d.ts +1 -0
  361. package/dist/esm/components/index.d.ts.map +1 -1
  362. package/dist/esm/components/index.js +1 -0
  363. package/dist/esm/constants.d.ts +9 -1
  364. package/dist/esm/constants.d.ts.map +1 -1
  365. package/dist/esm/constants.js +12 -0
  366. package/dist/esm/generated-names.d.ts +13 -3
  367. package/dist/esm/generated-names.d.ts.map +1 -1
  368. package/dist/esm/generated-names.js +3 -1
  369. package/dist/esm/helpers.d.ts +5 -0
  370. package/dist/esm/helpers.d.ts.map +1 -1
  371. package/dist/esm/helpers.js +7 -1
  372. package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
  373. package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
  374. package/dist/esm/hooks/use-on-change-batch.js +19 -3
  375. package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
  376. package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
  377. package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
  378. package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
  379. package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
  380. package/dist/esm/hooks/use-on-change-table-column.js +17 -5
  381. package/dist/esm/hooks/use-on-change.d.ts +36 -3
  382. package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
  383. package/dist/esm/hooks/use-on-change.js +214 -124
  384. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
  385. package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
  386. package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
  387. package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
  388. package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
  389. package/dist/esm/hooks/use-on-create-named-range.js +11 -1
  390. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
  391. package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
  392. package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
  393. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
  394. package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
  395. package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
  396. package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
  397. package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
  398. package/dist/esm/hooks/use-on-delete-column.js +3 -1
  399. package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
  400. package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
  401. package/dist/esm/hooks/use-on-delete-row.js +3 -1
  402. package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
  403. package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
  404. package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
  405. package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
  406. package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
  407. package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
  408. package/dist/esm/hooks/use-on-delete.d.ts +5 -2
  409. package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
  410. package/dist/esm/hooks/use-on-delete.js +5 -1
  411. package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
  412. package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
  413. package/dist/esm/hooks/use-on-embeds.js +23 -6
  414. package/dist/esm/hooks/use-on-fill.d.ts +17 -2
  415. package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
  416. package/dist/esm/hooks/use-on-fill.js +27 -1
  417. package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
  418. package/dist/esm/hooks/use-on-filter-table.js +97 -26
  419. package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
  420. package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
  421. package/dist/esm/hooks/use-on-import-excel.js +4 -1
  422. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
  423. package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
  424. package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
  425. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
  426. package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
  427. package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
  428. package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
  429. package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
  430. package/dist/esm/hooks/use-on-insert-column.js +3 -1
  431. package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
  432. package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
  433. package/dist/esm/hooks/use-on-insert-row.js +3 -1
  434. package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
  435. package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
  436. package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
  437. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
  438. package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
  439. package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
  440. package/dist/esm/hooks/use-on-move-columns.d.ts +3 -1
  441. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  442. package/dist/esm/hooks/use-on-move-columns.js +14 -1
  443. package/dist/esm/hooks/use-on-move-rows.d.ts +3 -1
  444. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  445. package/dist/esm/hooks/use-on-move-rows.js +14 -1
  446. package/dist/esm/hooks/use-on-move-selection.d.ts +3 -1
  447. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  448. package/dist/esm/hooks/use-on-move-selection.js +44 -1
  449. package/dist/esm/hooks/use-on-paste.d.ts +22 -1
  450. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  451. package/dist/esm/hooks/use-on-paste.js +815 -672
  452. package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
  453. package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
  454. package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
  455. package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
  456. package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
  457. package/dist/esm/hooks/use-on-request-create-table.js +43 -0
  458. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
  459. package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
  460. package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
  461. package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
  462. package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
  463. package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
  464. package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
  465. package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
  466. package/dist/esm/hooks/use-on-resize-table.js +107 -27
  467. package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
  468. package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
  469. package/dist/esm/hooks/use-on-sort-column.js +105 -68
  470. package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
  471. package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
  472. package/dist/esm/hooks/use-on-sort-range.js +100 -64
  473. package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
  474. package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
  475. package/dist/esm/hooks/use-on-sort-table.js +107 -86
  476. package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
  477. package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
  478. package/dist/esm/hooks/use-on-subtotal.js +7 -5
  479. package/dist/esm/hooks/use-on-table.d.ts +39 -7
  480. package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
  481. package/dist/esm/hooks/use-on-table.js +234 -26
  482. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
  483. package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
  484. package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
  485. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
  486. package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
  487. package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
  488. package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
  489. package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
  490. package/dist/esm/hooks/use-on-update-named-range.js +13 -1
  491. package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
  492. package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
  493. package/dist/esm/hooks/use-sheet-properties.js +38 -19
  494. package/dist/esm/hooks/use-slicers.d.ts +2 -2
  495. package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
  496. package/dist/esm/hooks/use-slicers.js +16 -8
  497. package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
  498. package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
  499. package/dist/esm/hooks/use-sparkline-groups.js +146 -0
  500. package/dist/esm/hooks/use-spreadsheet-state.d.ts +56 -10
  501. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  502. package/dist/esm/hooks/use-spreadsheet-state.js +259 -30
  503. package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
  504. package/dist/esm/hooks/use-structured-reference.js +17 -0
  505. package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
  506. package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
  507. package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
  508. package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
  509. package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
  510. package/dist/esm/hooks/use-undo-redo.js +158 -7
  511. package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
  512. package/dist/esm/hooks/utils/sort-rows.js +4 -3
  513. package/dist/esm/index.d.ts +7 -0
  514. package/dist/esm/index.d.ts.map +1 -1
  515. package/dist/esm/index.js +8 -0
  516. package/dist/esm/interface/apply-fill.d.ts +26 -3
  517. package/dist/esm/interface/apply-fill.d.ts.map +1 -1
  518. package/dist/esm/interface/apply-fill.js +188 -88
  519. package/dist/esm/interface/change-batch.d.ts +1 -1
  520. package/dist/esm/interface/change-batch.d.ts.map +1 -1
  521. package/dist/esm/interface/change-batch.js +89 -8
  522. package/dist/esm/interface/change-calculated-column.d.ts +6 -2
  523. package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
  524. package/dist/esm/interface/change-calculated-column.js +81 -16
  525. package/dist/esm/interface/change-table-column.d.ts +81 -7
  526. package/dist/esm/interface/change-table-column.d.ts.map +1 -1
  527. package/dist/esm/interface/change-table-column.js +295 -67
  528. package/dist/esm/interface/create-table.d.ts +15 -3
  529. package/dist/esm/interface/create-table.d.ts.map +1 -1
  530. package/dist/esm/interface/create-table.js +103 -27
  531. package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
  532. package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
  533. package/dist/esm/interface/delete-cells-shift-left.js +10 -1
  534. package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
  535. package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
  536. package/dist/esm/interface/delete-cells-shift-up.js +10 -1
  537. package/dist/esm/interface/delete-cells.d.ts +1 -1
  538. package/dist/esm/interface/delete-cells.d.ts.map +1 -1
  539. package/dist/esm/interface/delete-cells.js +47 -14
  540. package/dist/esm/interface/delete-column.d.ts +1 -1
  541. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  542. package/dist/esm/interface/delete-column.js +9 -2
  543. package/dist/esm/interface/delete-row.d.ts +1 -1
  544. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  545. package/dist/esm/interface/delete-row.js +173 -15
  546. package/dist/esm/interface/delete-sheet.d.ts +2 -2
  547. package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
  548. package/dist/esm/interface/delete-sheet.js +113 -1
  549. package/dist/esm/interface/delete-table-column.d.ts +1 -1
  550. package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
  551. package/dist/esm/interface/delete-table-column.js +11 -1
  552. package/dist/esm/interface/delete-table-row.d.ts +1 -1
  553. package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
  554. package/dist/esm/interface/delete-table-row.js +312 -232
  555. package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
  556. package/dist/esm/interface/duplicate-sheet.js +73 -26
  557. package/dist/esm/interface/embeds.d.ts +10 -1
  558. package/dist/esm/interface/embeds.d.ts.map +1 -1
  559. package/dist/esm/interface/embeds.js +84 -5
  560. package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
  561. package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
  562. package/dist/esm/interface/insert-cells-shift-down.js +10 -1
  563. package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
  564. package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
  565. package/dist/esm/interface/insert-cells-shift-right.js +10 -1
  566. package/dist/esm/interface/insert-column.d.ts +2 -2
  567. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  568. package/dist/esm/interface/insert-column.js +48 -23
  569. package/dist/esm/interface/insert-row.d.ts +1 -1
  570. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  571. package/dist/esm/interface/insert-row.js +9 -2
  572. package/dist/esm/interface/insert-table-row.d.ts +2 -1
  573. package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
  574. package/dist/esm/interface/insert-table-row.js +67 -12
  575. package/dist/esm/interface/remove-duplicates.d.ts +1 -1
  576. package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
  577. package/dist/esm/interface/remove-duplicates.js +41 -6
  578. package/dist/esm/interface/remove-table.d.ts +1 -1
  579. package/dist/esm/interface/remove-table.d.ts.map +1 -1
  580. package/dist/esm/interface/remove-table.js +58 -10
  581. package/dist/esm/interface/slicers.d.ts +12 -1
  582. package/dist/esm/interface/slicers.d.ts.map +1 -1
  583. package/dist/esm/interface/slicers.js +44 -2
  584. package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
  585. package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
  586. package/dist/esm/interface/spreadsheet-interface.js +73 -1
  587. package/dist/esm/interface/table-totalrow.d.ts +13 -1
  588. package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
  589. package/dist/esm/interface/table-totalrow.js +98 -68
  590. package/dist/esm/interface/table-utils.d.ts +59 -6
  591. package/dist/esm/interface/table-utils.d.ts.map +1 -1
  592. package/dist/esm/interface/table-utils.js +155 -14
  593. package/dist/esm/interface/update-table.d.ts +16 -1
  594. package/dist/esm/interface/update-table.d.ts.map +1 -1
  595. package/dist/esm/interface/update-table.js +203 -42
  596. package/dist/esm/sheet-cell.d.ts.map +1 -1
  597. package/dist/esm/test-setup.d.ts.map +1 -1
  598. package/dist/esm/test-setup.js +6 -0
  599. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  600. package/dist/esm/validation-schema/table.schema.d.ts +11 -0
  601. package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
  602. package/dist/esm/validation-schema/table.schema.js +15 -2
  603. package/package.json +19 -11
@@ -1,12 +1,68 @@
1
- import type { SpreadsheetTheme } from "@rowsncolumns/spreadsheet";
1
+ import type { GridRange } from "@rowsncolumns/common-types";
2
+ import type { NamedRange, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
2
3
  import React from "react";
3
4
  import type { useSpreadsheetState } from "../../hooks/use-spreadsheet-state";
4
5
  type TableEditorProps = {
5
6
  sheetId: number;
6
7
  theme: SpreadsheetTheme;
8
+ /**
9
+ * Every table in the workbook — the name field refuses a rename that
10
+ * collides with another table's name (case-insensitive, like Excel).
11
+ */
12
+ tables?: TableView[];
13
+ /**
14
+ * The workbook's defined names — a table name that collides with one is
15
+ * refused inline, the way the engines refuse it on submit.
16
+ */
17
+ namedRanges?: NamedRange[];
7
18
  onSubmit: ReturnType<typeof useSpreadsheetState>["onUpdateTable"];
8
19
  onRemoveTable?: ReturnType<typeof useSpreadsheetState>["onRemoveTable"];
20
+ /**
21
+ * Submits the Create Table dialog (opened by `onRequestCreateTable` — Ctrl+T, Insert → Table,
22
+ * Format as Table). Without it the create dialog is not rendered.
23
+ */
24
+ onCreateTable?: ReturnType<typeof useSpreadsheetState>["onCreateTable"];
25
+ /**
26
+ * Submits the Resize Table dialog (opened by `onRequestResizeTable` — Table Design → Resize
27
+ * Table, the context menu's Table → Resize Table…). Without it the resize dialog is not rendered.
28
+ */
29
+ onResizeTable?: ReturnType<typeof useSpreadsheetState>["onResizeTable"];
30
+ /**
31
+ * Submits the Insert Slicers dialog (opened by `onRequestInsertSlicer` — Table Design → Insert
32
+ * Slicer, the context menu's Table → Insert Slicer…): one slicer per checked column. Without it
33
+ * the dialog is not rendered.
34
+ */
35
+ onCreateSlicer?: (slicer: Slicer) => void;
9
36
  };
10
- export declare const TableEditor: ({ sheetId, theme, onSubmit, onRemoveTable, }: TableEditorProps) => React.JSX.Element;
37
+ export declare const TableEditor: ({ sheetId, theme, tables, namedRanges, onSubmit, onRemoveTable, onCreateTable, onResizeTable, onCreateSlicer, }: TableEditorProps) => React.JSX.Element;
38
+ /**
39
+ * Excel's "Create Table" dialog: the data range (pre-filled with the selection or the data region
40
+ * around the active cell) and "My table has headers". Unchecked, a `Column1..N` header row is
41
+ * inserted above the data (`CreateTableOptions.hasHeaders: false`).
42
+ */
43
+ export declare const CreateTableEditor: ({ onCreateTable, }: {
44
+ onCreateTable: NonNullable<TableEditorProps["onCreateTable"]>;
45
+ }) => React.JSX.Element;
46
+ /**
47
+ * Excel's rule for a resized table: the header row stays where it is and the new range must
48
+ * overlap the original one. Overlaps with other tables or merged cells are refused by the engines
49
+ * themselves (`onResizeTable`).
50
+ */
51
+ export declare const RESIZE_TABLE_RANGE_ERROR = "The header row must remain in the same row, and the resulting table range must overlap the original table range.";
52
+ export declare const getResizeTableRangeError: (table: Pick<TableView, "range">, range: GridRange) => string | undefined;
53
+ /**
54
+ * Excel's "Resize Table" dialog: the table's range, editable, submitted through
55
+ * `onResizeTable` once it keeps the header row and overlaps the original range.
56
+ */
57
+ export declare const ResizeTableEditor: ({ onResizeTable, }: {
58
+ onResizeTable: NonNullable<TableEditorProps["onResizeTable"]>;
59
+ }) => React.JSX.Element;
60
+ /**
61
+ * Excel's "Insert Slicers" dialog: the table's columns as checkboxes; OK creates one table-bound
62
+ * slicer per checked column (`buildTableSlicers`), placed right of the table.
63
+ */
64
+ export declare const InsertSlicerEditor: ({ onCreateSlicer, }: {
65
+ onCreateSlicer: NonNullable<TableEditorProps["onCreateSlicer"]>;
66
+ }) => React.JSX.Element;
11
67
  export {};
12
68
  //# sourceMappingURL=table-editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/table-editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,2BAA2B,CAAC;AAqB7E,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACzE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,8CAKzB,gBAAgB,sBA2DlB,CAAC"}
1
+ {"version":3,"file":"table-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/table-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EACV,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAqBnC,OAAO,KAAyC,MAAM,OAAO,CAAC;AAe9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAO7E,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;OAGG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;OAGG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,iHAUzB,gBAAgB,sBAwElB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAE/B;IACD,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;CAC/D,sBA2DA,CAAC;AAgEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,qHAC+E,CAAC;AAErH,eAAO,MAAM,wBAAwB,GACnC,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAC/B,OAAO,SAAS,KACf,MAAM,GAAG,SAOX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAE/B;IACD,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;CAC/D,sBAqDA,CAAC;AAmEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,qBAEhC;IACD,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;CACjE,sBAiDA,CAAC"}
@@ -1,14 +1,18 @@
1
- import { __assign, __read } from "tslib";
1
+ import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Cross2Icon } from "@rowsncolumns/icons";
3
3
  import { findMatchingBandProperty, FormulaInput, useFocusSheet, useFormulaInputState, useSetFormulaMode, useSetFormulaSelections, } from "@rowsncolumns/spreadsheet";
4
4
  import { Button, Dialog, DialogBody, DialogCloseButton, DialogContent, DialogDescription, DialogTitle, Input, Stack, } from "@rowsncolumns/ui";
5
5
  import { useFormik } from "formik";
6
- import React, { useCallback } from "react";
7
- import { useEditTableDialogState } from "../../atoms/dialog-state.atom";
6
+ import React, { useCallback, useMemo, useState } from "react";
7
+ import { useCreatingTable, } from "../../atoms/creating-table.atom";
8
+ import { useCreateTableDialogState, useEditTableDialogState, useInsertSlicerDialogState, useResizeTableDialogState, } from "../../atoms/dialog-state.atom";
8
9
  import { useEditingTable } from "../../atoms/editing-table.atom";
9
- import { tableSchema } from "../../validation-schema/table.schema";
10
+ import { useInsertingSlicer } from "../../atoms/inserting-slicer.atom";
11
+ import { useResizingTable } from "../../atoms/resizing-table.atom";
12
+ import { buildTableSlicers, getTableSlicerColumnNames, } from "../../interface/slicers";
13
+ import { createTableSchema } from "../../validation-schema/table.schema";
10
14
  export var TableEditor = function (_a) {
11
- var sheetId = _a.sheetId, theme = _a.theme, onSubmit = _a.onSubmit, onRemoveTable = _a.onRemoveTable;
15
+ var sheetId = _a.sheetId, theme = _a.theme, tables = _a.tables, namedRanges = _a.namedRanges, onSubmit = _a.onSubmit, onRemoveTable = _a.onRemoveTable, onCreateTable = _a.onCreateTable, onResizeTable = _a.onResizeTable, onCreateSlicer = _a.onCreateSlicer;
12
16
  var _b = __read(useEditTableDialogState(), 2), isOpen = _b[0], onOpenChange = _b[1];
13
17
  var setFormulaMode = useSetFormulaMode();
14
18
  var setFormulaSelections = useSetFormulaSelections();
@@ -24,25 +28,247 @@ export var TableEditor = function (_a) {
24
28
  onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(sheetId, tableId, table);
25
29
  closeDialog();
26
30
  }, [onSubmit, closeDialog]);
31
+ return (React.createElement(React.Fragment, null,
32
+ onCreateTable ? (React.createElement(CreateTableEditor, { onCreateTable: onCreateTable })) : null,
33
+ onResizeTable ? (React.createElement(ResizeTableEditor, { onResizeTable: onResizeTable })) : null,
34
+ onCreateSlicer ? (React.createElement(InsertSlicerEditor, { onCreateSlicer: onCreateSlicer })) : null,
35
+ React.createElement(Dialog, { modal: false, open: isOpen },
36
+ React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: function (e) {
37
+ e.preventDefault();
38
+ focusSheet === null || focusSheet === void 0 ? void 0 : focusSheet();
39
+ } },
40
+ React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Edit table"),
41
+ React.createElement(DialogDescription, null, "Update data range and table properties"),
42
+ React.createElement(DialogBody, null, table ? (React.createElement(TableEditorForm, { onSubmit: handleSubmit, table: table, tables: tables, namedRanges: namedRanges, sheetId: sheetId, theme: theme, onCancel: closeDialog, onRemoveTable: onRemoveTable })) : null),
43
+ React.createElement(DialogCloseButton, { onClick: function () {
44
+ closeDialog();
45
+ } },
46
+ React.createElement(Cross2Icon, null))))));
47
+ };
48
+ /**
49
+ * Excel's "Create Table" dialog: the data range (pre-filled with the selection or the data region
50
+ * around the active cell) and "My table has headers". Unchecked, a `Column1..N` header row is
51
+ * inserted above the data (`CreateTableOptions.hasHeaders: false`).
52
+ */
53
+ export var CreateTableEditor = function (_a) {
54
+ var onCreateTable = _a.onCreateTable;
55
+ var _b = __read(useCreateTableDialogState(), 2), isOpen = _b[0], onOpenChange = _b[1];
56
+ var request = useCreatingTable();
57
+ var setFormulaMode = useSetFormulaMode();
58
+ var setFormulaSelections = useSetFormulaSelections();
59
+ var focusSheet = useFocusSheet();
60
+ var closeDialog = useCallback(function () {
61
+ setFormulaMode(false);
62
+ setFormulaSelections([]);
63
+ onOpenChange(false);
64
+ }, [setFormulaMode, setFormulaSelections, onOpenChange]);
65
+ var handleSubmit = useCallback(function (range, hasHeaders) {
66
+ if (!request) {
67
+ return;
68
+ }
69
+ onCreateTable(request.sheetId, request.activeCell, [{ range: range }], { range: range }, request.theme, request.bandedRange, { hasHeaders: hasHeaders });
70
+ closeDialog();
71
+ }, [request, onCreateTable, closeDialog]);
27
72
  return (React.createElement(Dialog, { modal: false, open: isOpen },
28
73
  React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: function (e) {
29
74
  e.preventDefault();
30
75
  focusSheet === null || focusSheet === void 0 ? void 0 : focusSheet();
31
76
  } },
32
- React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Edit table"),
33
- React.createElement(DialogDescription, null, "Update data range and table properties"),
34
- React.createElement(DialogBody, null, table ? (React.createElement(TableEditorForm, { onSubmit: handleSubmit, table: table, sheetId: sheetId, theme: theme, onCancel: closeDialog, onRemoveTable: onRemoveTable })) : null),
35
- React.createElement(DialogCloseButton, { onClick: function () {
36
- closeDialog();
37
- } },
77
+ React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Create Table"),
78
+ React.createElement(DialogDescription, null, "Where is the data for your table?"),
79
+ React.createElement(DialogBody, null, request && isOpen ? (React.createElement(CreateTableForm
80
+ // A fresh form per request: its fields are seeded from the request once.
81
+ , {
82
+ // A fresh form per request: its fields are seeded from the request once.
83
+ key: "".concat(request.sheetId, ":").concat(request.range.startRowIndex, ":").concat(request.range.startColumnIndex, ":").concat(request.range.endRowIndex, ":").concat(request.range.endColumnIndex), request: request, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
84
+ React.createElement(DialogCloseButton, { onClick: closeDialog },
85
+ React.createElement(Cross2Icon, null)))));
86
+ };
87
+ var CreateTableForm = function (_a) {
88
+ var request = _a.request, onSubmit = _a.onSubmit, onCancel = _a.onCancel;
89
+ var _b = __read(useState(request.range), 2), range = _b[0], setRange = _b[1];
90
+ var _c = __read(useState(request.hasHeaders), 2), hasHeaders = _c[0], setHasHeaders = _c[1];
91
+ var formulaInput = useFormulaInputState(request.sheetId, __assign(__assign({}, request.range), { sheetId: request.sheetId }));
92
+ return (React.createElement("form", { onSubmit: function (e) {
93
+ e.preventDefault();
94
+ if (range) {
95
+ onSubmit(range, hasHeaders);
96
+ }
97
+ }, className: "m-0 p-0" },
98
+ React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-2" },
99
+ React.createElement(FormulaInput, { onChange: function (value) {
100
+ // An unparsable range disables OK until the text reads as a range again.
101
+ setRange(undefined);
102
+ formulaInput.onChange(value, function (parsed) {
103
+ setRange(parsed);
104
+ });
105
+ }, value: formulaInput.value, required: true }),
106
+ React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
107
+ React.createElement("input", { type: "checkbox", id: "rnc-table-has-headers-element", checked: hasHeaders, name: "hasHeaders", onChange: function (e) { return setHasHeaders(e.target.checked); } }),
108
+ "My table has headers")),
109
+ React.createElement("div", { className: "flex gap-1 pt-2" },
110
+ React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !range }, "OK"),
111
+ React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
112
+ };
113
+ /**
114
+ * Excel's rule for a resized table: the header row stays where it is and the new range must
115
+ * overlap the original one. Overlaps with other tables or merged cells are refused by the engines
116
+ * themselves (`onResizeTable`).
117
+ */
118
+ export var RESIZE_TABLE_RANGE_ERROR = "The header row must remain in the same row, and the resulting table range must overlap the original table range.";
119
+ export var getResizeTableRangeError = function (table, range) {
120
+ var overlapsColumns = range.startColumnIndex <= table.range.endColumnIndex &&
121
+ range.endColumnIndex >= table.range.startColumnIndex;
122
+ return range.startRowIndex === table.range.startRowIndex && overlapsColumns
123
+ ? undefined
124
+ : RESIZE_TABLE_RANGE_ERROR;
125
+ };
126
+ /**
127
+ * Excel's "Resize Table" dialog: the table's range, editable, submitted through
128
+ * `onResizeTable` once it keeps the header row and overlaps the original range.
129
+ */
130
+ export var ResizeTableEditor = function (_a) {
131
+ var onResizeTable = _a.onResizeTable;
132
+ var _b = __read(useResizeTableDialogState(), 2), isOpen = _b[0], onOpenChange = _b[1];
133
+ var table = useResizingTable();
134
+ var setFormulaMode = useSetFormulaMode();
135
+ var setFormulaSelections = useSetFormulaSelections();
136
+ var focusSheet = useFocusSheet();
137
+ var closeDialog = useCallback(function () {
138
+ setFormulaMode(false);
139
+ setFormulaSelections([]);
140
+ onOpenChange(false);
141
+ }, [setFormulaMode, setFormulaSelections, onOpenChange]);
142
+ var handleSubmit = useCallback(function (range) {
143
+ if (!table) {
144
+ return;
145
+ }
146
+ onResizeTable(table.sheetId, table, range);
147
+ closeDialog();
148
+ }, [table, onResizeTable, closeDialog]);
149
+ return (React.createElement(Dialog, { modal: false, open: isOpen },
150
+ React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: function (e) {
151
+ e.preventDefault();
152
+ focusSheet === null || focusSheet === void 0 ? void 0 : focusSheet();
153
+ } },
154
+ React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Resize Table"),
155
+ React.createElement(DialogDescription, null, "Select the new data range for your table:"),
156
+ React.createElement(DialogBody, null, table && isOpen ? (React.createElement(ResizeTableForm
157
+ // A fresh form per table: its field is seeded from the table once.
158
+ , {
159
+ // A fresh form per table: its field is seeded from the table once.
160
+ key: "".concat(table.sheetId, ":").concat(table.id, ":").concat(table.range.startRowIndex, ":").concat(table.range.startColumnIndex, ":").concat(table.range.endRowIndex, ":").concat(table.range.endColumnIndex), table: table, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
161
+ React.createElement(DialogCloseButton, { onClick: closeDialog },
162
+ React.createElement(Cross2Icon, null)))));
163
+ };
164
+ var ResizeTableForm = function (_a) {
165
+ var table = _a.table, onSubmit = _a.onSubmit, onCancel = _a.onCancel;
166
+ var _b = __read(useState(table.range), 2), range = _b[0], setRange = _b[1];
167
+ var _c = __read(useState(), 2), error = _c[0], setError = _c[1];
168
+ var formulaInput = useFormulaInputState(table.sheetId, __assign(__assign({}, table.range), { sheetId: table.sheetId }));
169
+ return (React.createElement("form", { onSubmit: function (e) {
170
+ e.preventDefault();
171
+ if (!range) {
172
+ return;
173
+ }
174
+ var rangeError = getResizeTableRangeError(table, range);
175
+ setError(rangeError);
176
+ if (!rangeError) {
177
+ onSubmit(range);
178
+ }
179
+ }, className: "m-0 p-0" },
180
+ React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-2" },
181
+ React.createElement(FormulaInput, { onChange: function (value) {
182
+ // An unparsable range disables OK until the text reads as a range again.
183
+ setRange(undefined);
184
+ setError(undefined);
185
+ formulaInput.onChange(value, function (parsed) {
186
+ setRange(parsed);
187
+ });
188
+ }, value: formulaInput.value, required: true }),
189
+ React.createElement("p", { className: "font-system text-xs text-rnc-muted-foreground m-0" }, "Note: The headers must remain in the same row, and the resulting table range must overlap the original table range."),
190
+ error ? (React.createElement("p", { role: "alert", className: "font-system text-xs text-rnc-destructive m-0" }, error)) : null),
191
+ React.createElement("div", { className: "flex gap-1 pt-2" },
192
+ React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !range }, "OK"),
193
+ React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
194
+ };
195
+ /**
196
+ * Excel's "Insert Slicers" dialog: the table's columns as checkboxes; OK creates one table-bound
197
+ * slicer per checked column (`buildTableSlicers`), placed right of the table.
198
+ */
199
+ export var InsertSlicerEditor = function (_a) {
200
+ var onCreateSlicer = _a.onCreateSlicer;
201
+ var _b = __read(useInsertSlicerDialogState(), 2), isOpen = _b[0], onOpenChange = _b[1];
202
+ var table = useInsertingSlicer();
203
+ var focusSheet = useFocusSheet();
204
+ var closeDialog = useCallback(function () { return onOpenChange(false); }, [onOpenChange]);
205
+ var handleSubmit = useCallback(function (columnIndexes) {
206
+ var e_1, _a;
207
+ if (!table) {
208
+ return;
209
+ }
210
+ try {
211
+ for (var _b = __values(buildTableSlicers(table, columnIndexes)), _c = _b.next(); !_c.done; _c = _b.next()) {
212
+ var slicer = _c.value;
213
+ onCreateSlicer(slicer);
214
+ }
215
+ }
216
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
217
+ finally {
218
+ try {
219
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
220
+ }
221
+ finally { if (e_1) throw e_1.error; }
222
+ }
223
+ closeDialog();
224
+ }, [table, onCreateSlicer, closeDialog]);
225
+ return (React.createElement(Dialog, { modal: false, open: isOpen },
226
+ React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: function (e) {
227
+ e.preventDefault();
228
+ focusSheet === null || focusSheet === void 0 ? void 0 : focusSheet();
229
+ } },
230
+ React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Insert Slicers"),
231
+ React.createElement(DialogDescription, null, "Choose the columns to filter the table by:"),
232
+ React.createElement(DialogBody, null, table && isOpen ? (React.createElement(InsertSlicerForm
233
+ // A fresh form per table: its checkboxes are seeded from the table once.
234
+ , {
235
+ // A fresh form per table: its checkboxes are seeded from the table once.
236
+ key: "".concat(table.sheetId, ":").concat(table.id), table: table, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
237
+ React.createElement(DialogCloseButton, { onClick: closeDialog },
38
238
  React.createElement(Cross2Icon, null)))));
39
239
  };
240
+ var InsertSlicerForm = function (_a) {
241
+ var table = _a.table, onSubmit = _a.onSubmit, onCancel = _a.onCancel;
242
+ var names = useMemo(function () { return getTableSlicerColumnNames(table); }, [table]);
243
+ var _b = __read(useState([]), 2), checked = _b[0], setChecked = _b[1];
244
+ return (React.createElement("form", { onSubmit: function (e) {
245
+ e.preventDefault();
246
+ if (checked.length) {
247
+ onSubmit(__spreadArray([], __read(checked), false).sort(function (a, b) { return a - b; }));
248
+ }
249
+ }, className: "m-0 p-0" },
250
+ React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-1" }, names.map(function (name, index) { return (React.createElement("label", { key: index, className: "font-system text-sm flex items-center gap-1" },
251
+ React.createElement("input", { type: "checkbox", name: "slicerColumn", value: index, checked: checked.includes(index), onChange: function (e) {
252
+ return setChecked(function (prev) {
253
+ return e.target.checked
254
+ ? __spreadArray(__spreadArray([], __read(prev), false), [index], false) : prev.filter(function (i) { return i !== index; });
255
+ });
256
+ } }),
257
+ name)); })),
258
+ React.createElement("div", { className: "flex gap-1 pt-2" },
259
+ React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !checked.length }, "OK"),
260
+ React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
261
+ };
40
262
  var TableEditorForm = function (_a) {
41
- var table = _a.table, sheetId = _a.sheetId, theme = _a.theme, onSubmit = _a.onSubmit, onCancel = _a.onCancel, onRemoveTable = _a.onRemoveTable;
263
+ var table = _a.table, tables = _a.tables, namedRanges = _a.namedRanges, sheetId = _a.sheetId, theme = _a.theme, onSubmit = _a.onSubmit, onCancel = _a.onCancel, onRemoveTable = _a.onRemoveTable;
264
+ var validationSchema = useMemo(function () {
265
+ var _a, _b;
266
+ return createTableSchema((_a = tables === null || tables === void 0 ? void 0 : tables.filter(function (t) { return t.id !== table.id; }).map(function (t) { return t.title; })) !== null && _a !== void 0 ? _a : [], (_b = namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (namedRange) { return namedRange.name; })) !== null && _b !== void 0 ? _b : []);
267
+ }, [tables, namedRanges, table.id]);
42
268
  var _b = useFormik({
43
269
  initialValues: table,
44
270
  enableReinitialize: true,
45
- validationSchema: tableSchema,
271
+ validationSchema: validationSchema,
46
272
  onSubmit: function (values) {
47
273
  var _a;
48
274
  var tableTheme = (_a = values.theme) !== null && _a !== void 0 ? _a : "TableStyleLight1";
@@ -61,7 +287,7 @@ var TableEditorForm = function (_a) {
61
287
  onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(sheetId, newTable.id, newTable);
62
288
  }
63
289
  },
64
- }), _c = _b.values, title = _c.title, _d = _c.showRowStripes, showRowStripes = _d === void 0 ? true : _d, _e = _c.showColumnStripes, showColumnStripes = _e === void 0 ? false : _e, _f = _c.filterButton, filterButton = _f === void 0 ? true : _f, range = _c.range, _g = _c.totalRow, totalRow = _g === void 0 ? false : _g, errors = _b.errors, handleChange = _b.handleChange, handleSubmit = _b.handleSubmit, setFieldValue = _b.setFieldValue, resetForm = _b.resetForm;
290
+ }), _c = _b.values, title = _c.title, _d = _c.showRowStripes, showRowStripes = _d === void 0 ? true : _d, _e = _c.showColumnStripes, showColumnStripes = _e === void 0 ? false : _e, _f = _c.showFirstColumn, showFirstColumn = _f === void 0 ? false : _f, _g = _c.showLastColumn, showLastColumn = _g === void 0 ? false : _g, _h = _c.filterButton, filterButton = _h === void 0 ? true : _h, range = _c.range, _j = _c.headerRow, headerRow = _j === void 0 ? true : _j, _k = _c.totalRow, totalRow = _k === void 0 ? false : _k, errors = _b.errors, handleChange = _b.handleChange, handleSubmit = _b.handleSubmit, setFieldValue = _b.setFieldValue, resetForm = _b.resetForm;
65
291
  // Formula input helper
66
292
  var formulaInput = useFormulaInputState(sheetId, __assign(__assign({}, range), { sheetId: sheetId }));
67
293
  return (React.createElement("form", { onSubmit: handleSubmit, className: "m-0 p-0" },
@@ -77,6 +303,16 @@ var TableEditorForm = function (_a) {
77
303
  });
78
304
  }, value: formulaInput.value, required: true })),
79
305
  React.createElement(Stack, { direction: "horizontal", className: "grid grid-cols-2 gap-2" },
306
+ React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
307
+ React.createElement("input", { type: "checkbox", id: "rnc-header-row-element", checked: headerRow !== null && headerRow !== void 0 ? headerRow : true, name: "headerRow", onChange: function (e) {
308
+ setFieldValue("headerRow", e.target.checked);
309
+ } }),
310
+ "Header row"),
311
+ React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
312
+ React.createElement("input", { type: "checkbox", id: "rnc-total-row-element", checked: totalRow !== null && totalRow !== void 0 ? totalRow : false, name: "totalRow", onChange: function (e) {
313
+ setFieldValue("totalRow", e.target.checked);
314
+ } }),
315
+ "Show total row"),
80
316
  React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
81
317
  React.createElement("input", { type: "checkbox", checked: showRowStripes !== null && showRowStripes !== void 0 ? showRowStripes : undefined, name: "showRowStripes", onChange: function (e) {
82
318
  setFieldValue("showRowStripes", e.target.checked);
@@ -88,15 +324,20 @@ var TableEditorForm = function (_a) {
88
324
  } }),
89
325
  "Banded columns"),
90
326
  React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
91
- React.createElement("input", { type: "checkbox", id: "rnc-filter-button-element", checked: filterButton !== null && filterButton !== void 0 ? filterButton : undefined, name: "filterButton", onChange: function (e) {
92
- setFieldValue("filterButton", e.target.checked);
327
+ React.createElement("input", { type: "checkbox", id: "rnc-first-column-element", checked: showFirstColumn !== null && showFirstColumn !== void 0 ? showFirstColumn : false, name: "showFirstColumn", onChange: function (e) {
328
+ setFieldValue("showFirstColumn", e.target.checked);
93
329
  } }),
94
- "Show filter button"),
330
+ "First column"),
95
331
  React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
96
- React.createElement("input", { type: "checkbox", id: "rnc-total-row-element", checked: totalRow !== null && totalRow !== void 0 ? totalRow : false, name: "totalRow", onChange: function (e) {
97
- setFieldValue("totalRow", e.target.checked);
332
+ React.createElement("input", { type: "checkbox", id: "rnc-last-column-element", checked: showLastColumn !== null && showLastColumn !== void 0 ? showLastColumn : false, name: "showLastColumn", onChange: function (e) {
333
+ setFieldValue("showLastColumn", e.target.checked);
334
+ } }),
335
+ "Last column"),
336
+ React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
337
+ React.createElement("input", { type: "checkbox", id: "rnc-filter-button-element", checked: filterButton !== null && filterButton !== void 0 ? filterButton : undefined, name: "filterButton", disabled: headerRow === false, onChange: function (e) {
338
+ setFieldValue("filterButton", e.target.checked);
98
339
  } }),
99
- "Show total row"))),
340
+ "Show filter button"))),
100
341
  React.createElement("div", { className: "flex gap-1 pt-2" },
101
342
  React.createElement(Button, { type: "submit", variant: "primary", size: "xs" }, "Save"),
102
343
  React.createElement(Button, { size: "xs", onClick: function () {
@@ -10,4 +10,5 @@ export * from "./editors/insert-image-editor";
10
10
  export * from "./editors/insert-link-editor";
11
11
  export * from "./editors/data-validation-editor";
12
12
  export * from "./editors/embed-editor";
13
+ export * from "./editors/slicer-editor";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
@@ -10,3 +10,4 @@ export * from "./editors/insert-image-editor";
10
10
  export * from "./editors/insert-link-editor";
11
11
  export * from "./editors/data-validation-editor";
12
12
  export * from "./editors/embed-editor";
13
+ export * from "./editors/slicer-editor";
@@ -13,8 +13,16 @@ export declare const MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged
13
13
  export declare const TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
14
14
  /** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
15
15
  export declare const ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
16
+ /** T-42 — a merge whose region touches a table (Excel refuses every merge inside a table). */
17
+ export declare const TABLE_MERGE_REFUSAL_MESSAGE = "This operation is not allowed. The operation is attempting to shift cells in a table on your worksheet.";
18
+ /** T-17 — a table resize whose new range would overlap another table on the sheet. */
19
+ export declare const TABLE_OVERLAP_REFUSAL_MESSAGE = "A table cannot overlap another table.";
20
+ /** T-17 — a table resize whose new range would cover a merged cell. */
21
+ export declare const TABLE_MERGED_CELLS_REFUSAL_MESSAGE = "A table cannot overlap a range that contains a PivotTable report, query results, protected cells or merged cells.";
22
+ /** T-81 — a fill whose target reaches a table's totals row (Excel's fill handle never extends over it). */
23
+ export declare const TABLE_TOTALS_FILL_REFUSAL_MESSAGE = "This won't work because it would overwrite the totals row of a table on your worksheet.";
16
24
  /** Machine-readable refusal codes — the rnc engine's `CommitResult.rejected.code` uses the same set. */
17
- export type StructuralRefusalCode = "off-sheet-push" | "torn-merge" | "torn-table" | "torn-array";
25
+ export type StructuralRefusalCode = "off-sheet-push" | "torn-merge" | "torn-table" | "torn-array" | "table-merge" | "table-overlap" | "table-merged-cells" | "table-totals-fill";
18
26
  export type StructuralRefusal = {
19
27
  code: StructuralRefusalCode;
20
28
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,ySACqQ,CAAC;AAEzS,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,8EACqC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,wGAAwG;AACxG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAK7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,qBAAqB,KAC1B,iBAID,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,ySACqQ,CAAC;AAEzS,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,8EACqC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,4GACmE,CAAC;AAE5G,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,0CACD,CAAC;AAE1C,uEAAuE;AACvE,eAAO,MAAM,kCAAkC,sHACsE,CAAC;AAEtH,2GAA2G;AAC3G,eAAO,MAAM,iCAAiC,4FAC6C,CAAC;AAE5F,wGAAwG;AACxG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,eAAe,GACf,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAS7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,qBAAqB,KAC1B,iBAID,CAAC"}
@@ -13,11 +13,23 @@ export var MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged cell.";
13
13
  export var TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
14
14
  /** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
15
15
  export var ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
16
+ /** T-42 — a merge whose region touches a table (Excel refuses every merge inside a table). */
17
+ export var TABLE_MERGE_REFUSAL_MESSAGE = "This operation is not allowed. The operation is attempting to shift cells in a table on your worksheet.";
18
+ /** T-17 — a table resize whose new range would overlap another table on the sheet. */
19
+ export var TABLE_OVERLAP_REFUSAL_MESSAGE = "A table cannot overlap another table.";
20
+ /** T-17 — a table resize whose new range would cover a merged cell. */
21
+ export var TABLE_MERGED_CELLS_REFUSAL_MESSAGE = "A table cannot overlap a range that contains a PivotTable report, query results, protected cells or merged cells.";
22
+ /** T-81 — a fill whose target reaches a table's totals row (Excel's fill handle never extends over it). */
23
+ export var TABLE_TOTALS_FILL_REFUSAL_MESSAGE = "This won't work because it would overwrite the totals row of a table on your worksheet.";
16
24
  export var STRUCTURAL_REFUSAL_MESSAGES = {
17
25
  "off-sheet-push": OFF_SHEET_PUSH_MESSAGE,
18
26
  "torn-merge": MERGED_CELL_REFUSAL_MESSAGE,
19
27
  "torn-table": TABLE_SHIFT_REFUSAL_MESSAGE,
20
28
  "torn-array": ARRAY_REFUSAL_MESSAGE,
29
+ "table-merge": TABLE_MERGE_REFUSAL_MESSAGE,
30
+ "table-overlap": TABLE_OVERLAP_REFUSAL_MESSAGE,
31
+ "table-merged-cells": TABLE_MERGED_CELLS_REFUSAL_MESSAGE,
32
+ "table-totals-fill": TABLE_TOTALS_FILL_REFUSAL_MESSAGE,
21
33
  };
22
34
  export var structuralRefusal = function (code) { return ({
23
35
  code: code,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Formatters for auto-generated names such as "Sheet1", "Table 1",
2
+ * Formatters for auto-generated names such as "Sheet1", "Table1",
3
3
  * "Column1" and "Copy of Sheet1".
4
4
  *
5
5
  * Pass `generatedNames` to `useSpreadsheetState` to customize or
@@ -31,11 +31,19 @@ export interface GeneratedNames {
31
31
  */
32
32
  sheetCopy?: (title: string) => string | undefined;
33
33
  /**
34
- * Title for a newly created table. Default: `Table ${index}`
34
+ * Title for a chartsheet created by "Move Chart → New sheet". Default:
35
+ * `Chart${index}` (Excel's pattern — the first unused number is picked).
36
+ */
37
+ chartSheet?: (index: number) => string | undefined;
38
+ /**
39
+ * Title for a newly created table. Default: `Table${index}` (Excel's
40
+ * pattern — no space; the first unused number is picked).
35
41
  */
36
42
  table?: (index: number) => string | undefined;
37
43
  /**
38
- * Title for a pasted (copied) table. Default: `Copy of ${title}`
44
+ * @deprecated No longer applied: a pasted table is named like a new one
45
+ * (the next free `Table${index}`, via `table`), as in Excel — `Copy of
46
+ * ${title}` is not a valid table name.
39
47
  */
40
48
  tableCopy?: (title: string) => string | undefined;
41
49
  /**
@@ -45,7 +53,9 @@ export interface GeneratedNames {
45
53
  }
46
54
  export declare const getGeneratedSheetName: (index: number, generatedNames?: GeneratedNames) => string;
47
55
  export declare const getGeneratedSheetCopyName: (title: string, generatedNames?: GeneratedNames) => string;
56
+ export declare const getGeneratedChartSheetName: (index: number, generatedNames?: GeneratedNames) => string;
48
57
  export declare const getGeneratedTableName: (index: number, generatedNames?: GeneratedNames) => string;
58
+ /** @deprecated See `GeneratedNames.tableCopy`. */
49
59
  export declare const getGeneratedTableCopyName: (title: string, generatedNames?: GeneratedNames) => string;
50
60
  export declare const getGeneratedTableColumnName: (index: number, generatedNames?: GeneratedNames) => string;
51
61
  //# sourceMappingURL=generated-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-names.d.ts","sourceRoot":"","sources":["../../generated-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD;AAED,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA2D,CAAC;AAE/D,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA4D,CAAC;AAEhE,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC"}
1
+ {"version":3,"file":"generated-names.d.ts","sourceRoot":"","sources":["../../generated-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD;AAED,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA2D,CAAC;AAE/D,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAgE,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA2D,CAAC;AAE/D,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export var getGeneratedSheetName = function (index, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.sheet) === null || _a === void 0 ? void 0 : _a.call(generatedNames, index)) !== null && _b !== void 0 ? _b : "Sheet".concat(index); };
2
2
  export var getGeneratedSheetCopyName = function (title, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.sheetCopy) === null || _a === void 0 ? void 0 : _a.call(generatedNames, title)) !== null && _b !== void 0 ? _b : "Copy of ".concat(title); };
3
- export var getGeneratedTableName = function (index, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.table) === null || _a === void 0 ? void 0 : _a.call(generatedNames, index)) !== null && _b !== void 0 ? _b : "Table ".concat(index); };
3
+ export var getGeneratedChartSheetName = function (index, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.chartSheet) === null || _a === void 0 ? void 0 : _a.call(generatedNames, index)) !== null && _b !== void 0 ? _b : "Chart".concat(index); };
4
+ export var getGeneratedTableName = function (index, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.table) === null || _a === void 0 ? void 0 : _a.call(generatedNames, index)) !== null && _b !== void 0 ? _b : "Table".concat(index); };
5
+ /** @deprecated See `GeneratedNames.tableCopy`. */
4
6
  export var getGeneratedTableCopyName = function (title, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.tableCopy) === null || _a === void 0 ? void 0 : _a.call(generatedNames, title)) !== null && _b !== void 0 ? _b : "Copy of ".concat(title); };
5
7
  export var getGeneratedTableColumnName = function (index, generatedNames) { var _a, _b; return (_b = (_a = generatedNames === null || generatedNames === void 0 ? void 0 : generatedNames.tableColumn) === null || _a === void 0 ? void 0 : _a.call(generatedNames, index)) !== null && _b !== void 0 ? _b : "Column".concat(index); };
@@ -28,6 +28,11 @@ export declare function combineMapIterators<K, V>(...mapIterators: IterableItera
28
28
  * @returns
29
29
  */
30
30
  export declare function combineMapIteratorsWithFormatting<K, V, F>(...mapIterators: IterableIterator<[K, V, formatting?: F]>[]): IterableIterator<[K, V, formatting?: F]>;
31
+ /**
32
+ * Default title for a new table — `Table1`, `Table2`, … with the lowest
33
+ * number no existing table uses (case-insensitive), like Excel.
34
+ */
35
+ export declare const getNextTableTitle: (tables?: Pick<TableView, "title">[] | null, generatedNames?: GeneratedNames) => string;
31
36
  /**
32
37
  * Get unique table column name
33
38
  * @param columns
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKxD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,QAAQ,EACvD,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EACnE,gBAAwB,KACvB,OAAO,CAAC,CAAC,CAAC,EAeZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,GAAG,SAAS,KAC7B,MAAM,IAAI,SAEZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1C,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvD,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1D,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1C;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAAE,GAAG,IAAI,EACzB,iBAAiB,cAAc,WAYhC,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,aAAa,SAAS,0BAsBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,WA6BxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAW,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,QAAQ,EACvD,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EACnE,gBAAwB,KACvB,OAAO,CAAC,CAAC,CAAC,EAeZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,GAAG,SAAS,KAC7B,MAAM,IAAI,SAEZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1C,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvD,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1D,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1C;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAC1C,iBAAiB,cAAc,WAK9B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAAE,GAAG,IAAI,EACzB,iBAAiB,cAAc,WAYhC,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,aAAa,SAAS,0BAsBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,WA6BxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAW,CAAC"}
@@ -1,4 +1,5 @@
1
- import { getGeneratedTableColumnName } from "./generated-names";
1
+ import { getNextTableName } from "@rowsncolumns/utils";
2
+ import { getGeneratedTableColumnName, getGeneratedTableName, } from "./generated-names";
2
3
  import { defaultCellCoords, defaultSheetId, SheetCell } from "./sheet-cell";
3
4
  /**
4
5
  * Convert
@@ -88,6 +89,14 @@ export function combineMapIteratorsWithFormatting() {
88
89
  },
89
90
  _a;
90
91
  }
92
+ /**
93
+ * Default title for a new table — `Table1`, `Table2`, … with the lowest
94
+ * number no existing table uses (case-insensitive), like Excel.
95
+ */
96
+ export var getNextTableTitle = function (tables, generatedNames) {
97
+ var _a;
98
+ return getNextTableName((_a = tables === null || tables === void 0 ? void 0 : tables.map(function (table) { return table.title; })) !== null && _a !== void 0 ? _a : [], function (index) { return getGeneratedTableName(index, generatedNames); });
99
+ };
91
100
  /**
92
101
  * Get unique table column name
93
102
  * @param columns