@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,6 +1,17 @@
1
1
  import { type ParsedToken } from "@rowsncolumns/calculator";
2
- import type { CellInterface, GridRange } from "@rowsncolumns/common-types";
2
+ import type { CellInterface, ExtendedValue, GridRange } from "@rowsncolumns/common-types";
3
3
  import type { BandedRange, FilterView, TableView } from "@rowsncolumns/spreadsheet";
4
+ /**
5
+ * Excel's default for the Create Table dialog's "My table has headers": checked when the
6
+ * range's first row reads as a header row — it holds at least one value, every value in it is
7
+ * text (a number or boolean there means the data starts on the first row), and at least one row
8
+ * of data lies below it. A single-row range defaults to unchecked.
9
+ */
10
+ export declare const guessTableHasHeaders: ({ sheetId, range, getEffectiveExtendedValue, }: {
11
+ sheetId: number;
12
+ range: GridRange;
13
+ getEffectiveExtendedValue: (sheetId: number, rowIndex: number, columnIndex: number) => ExtendedValue | null | undefined;
14
+ }) => boolean;
4
15
  /**
5
16
  * Get table column index
6
17
  * @param sheetId
@@ -25,7 +36,20 @@ export declare const findAdjacentTable: (sheetId: number, cell: CellInterface, t
25
36
  * @returns
26
37
  */
27
38
  export declare const findAdjacentBandedRange: (sheetId: number, cell: CellInterface, bandedRanges: BandedRange[] | undefined, getUserEnteredValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined) => readonly [BandedRange | undefined, boolean, boolean];
28
- export declare const isTableColumnCellsFillable: (sheetId: number, range: GridRange, excludeCell: CellInterface, existingColumnFormula: string | undefined, currentValue: string | boolean | undefined, activeSheetName: string, getUserEnteredValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined) => boolean;
39
+ /**
40
+ * Excel's calculated-column fill decision, shared with the Rust engine's
41
+ * `auto_fill_calculated_column` (rowsncolumns/spreadsheet#681): a formula just
42
+ * written into a table body cell fills the whole column when every OTHER body
43
+ * cell of that column is either empty (a fresh column) or holds the same
44
+ * formula relative to its row (a consistent calculated column, which the new
45
+ * formula overwrites). A literal anywhere, or two rows that disagree, leave
46
+ * the edit a one-cell exception. The column's cells are the reference — not
47
+ * the formula recorded on `columns[].formula`, which has no row of its own —
48
+ * so the overwrite works from any row, not only the one the column was
49
+ * created from (#668 T-50). A consistent column is a calculated column
50
+ * whatever its formula references (`=TODAY()`, `=1`), like Excel (#668 T-29).
51
+ */
52
+ export declare const isTableColumnCellsFillable: (sheetId: number, range: GridRange, excludeCell: CellInterface, currentValue: string | boolean | undefined, activeSheetName: string, getUserEnteredValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined) => boolean;
29
53
  export declare const addTableNameToTokens: (tokens: ParsedToken[], title: string) => string;
30
54
  export declare const removeTableName: (tokens: ParsedToken[], title: string) => string;
31
55
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../api/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAkBnC;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,uBAiBhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,0BAMvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,uDAgDxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,cAAc,WAAW,EAAE,GAAG,SAAS,EACvC,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,yDA8CxB,CAAC;AAGF,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,OAAO,SAAS,EAChB,aAAa,aAAa,EAC1B,uBAAuB,MAAM,GAAG,SAAS,EACzC,cAAc,MAAM,GAAG,OAAO,GAAG,SAAS,EAC1C,iBAAiB,MAAM,EACvB,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,YAsExB,CAAC;AAiCF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,WAAW,EAAE,EAAE,OAAO,MAAM,WAyBxE,CAAC;AAcF,eAAO,MAAM,eAAe,GAAI,QAAQ,WAAW,EAAE,EAAE,OAAO,MAAM,WA2BnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,GAAG,UAAU,EAC7B,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,SAoDvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,SAAS,GAAG,UAAU,EAC7B,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,SAoDvB,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../api/table.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAmBnC;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,gDAIlC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,yBAAyB,EAAE,CACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;CACvC,KAAG,OA8BH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,uBAiBhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,0BAMvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,uDA8DxB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,MAAM,aAAa,EACnB,cAAc,WAAW,EAAE,GAAG,SAAS,EACvC,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,yDA8CxB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,EACf,OAAO,SAAS,EAChB,aAAa,aAAa,EAC1B,cAAc,MAAM,GAAG,OAAO,GAAG,SAAS,EAC1C,iBAAiB,MAAM,EACvB,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,KAChB,MAAM,GAAG,SAAS,YAuDxB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,WAAW,EAAE,EAAE,OAAO,MAAM,WAyBxE,CAAC;AAcF,eAAO,MAAM,eAAe,GAAI,QAAQ,WAAW,EAAE,EAAE,OAAO,MAAM,WA2BnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,GAAG,UAAU,EAC7B,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,SAoDvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,SAAS,GAAG,UAAU,EAC7B,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,SAoDvB,CAAC"}
@@ -1,8 +1,7 @@
1
- var _a, _b, _c;
2
1
  import { __assign, __read, __spreadArray, __values } from "tslib";
3
- import { lexify, tokenVocabulary, } from "@rowsncolumns/calculator";
2
+ import { tokenVocabulary, } from "@rowsncolumns/calculator";
4
3
  import { Direction } from "@rowsncolumns/common-types";
5
- import { isAFormula, isCellWithinBounds, isNil, iterateCellsInRange, } from "@rowsncolumns/utils";
4
+ import { areaIntersects, isAFormula, isCellWithinBounds, isNil, iterateCellsInRange, } from "@rowsncolumns/utils";
6
5
  import { SheetCell } from "../sheet-cell";
7
6
  import { detokenize } from "./formula";
8
7
  import { moveFilterView, moveRange } from "./selection";
@@ -12,6 +11,35 @@ var isTableColumnToken = function (token) {
12
11
  var isTableNameToken = function (token) {
13
12
  return token.tokenType.name === tokenVocabulary.TableName.name;
14
13
  };
14
+ /**
15
+ * Excel's default for the Create Table dialog's "My table has headers": checked when the
16
+ * range's first row reads as a header row — it holds at least one value, every value in it is
17
+ * text (a number or boolean there means the data starts on the first row), and at least one row
18
+ * of data lies below it. A single-row range defaults to unchecked.
19
+ */
20
+ export var guessTableHasHeaders = function (_a) {
21
+ var _b, _c, _d;
22
+ var sheetId = _a.sheetId, range = _a.range, getEffectiveExtendedValue = _a.getEffectiveExtendedValue;
23
+ if (range.endRowIndex <= range.startRowIndex) {
24
+ return false;
25
+ }
26
+ var sawText = false;
27
+ for (var columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
28
+ var value = getEffectiveExtendedValue(sheetId, range.startRowIndex, columnIndex);
29
+ if (!value) {
30
+ continue;
31
+ }
32
+ if (!isNil((_b = value.nv) !== null && _b !== void 0 ? _b : value.numberValue) ||
33
+ !isNil((_c = value.bv) !== null && _c !== void 0 ? _c : value.boolValue)) {
34
+ return false;
35
+ }
36
+ var text = (_d = value.sv) !== null && _d !== void 0 ? _d : value.stringValue;
37
+ if (!isNil(text) && text !== "") {
38
+ sawText = true;
39
+ }
40
+ }
41
+ return sawText;
42
+ };
15
43
  /**
16
44
  * Get table column index
17
45
  * @param sheetId
@@ -75,15 +103,25 @@ export var findAdjacentTable = function (sheetId, cell, tables, getUserEnteredVa
75
103
  startColumnIndex: cell.columnIndex,
76
104
  endColumnIndex: cell.columnIndex,
77
105
  }));
106
+ // Excel never merges tables: a line that belongs to another table is not free to grow over.
107
+ if (tables === null || tables === void 0 ? void 0 : tables.some(function (other) {
108
+ return other.id !== table.id &&
109
+ other.sheetId === sheetId &&
110
+ areaIntersects(other.range, lookupRange);
111
+ })) {
112
+ return false;
113
+ }
78
114
  return (isAdjacent &&
79
115
  __spreadArray([], __read(iterateCellsInRange(lookupRange)), false).every(function (_a) {
80
116
  var _b = __read(_a, 2), rowIndex = _b[0], columnIndex = _b[1];
81
117
  return isNil(getUserEnteredValue(sheetId, rowIndex, columnIndex));
82
118
  }));
83
119
  });
84
- var totalRowOffset = (adjacentTable === null || adjacentTable === void 0 ? void 0 : adjacentTable.totalRow) ? 1 : 0;
120
+ // A table with a totals row never grows by rows (Excel): the cell right of its totals row is
121
+ // a column expansion only.
85
122
  var isRowExpansion = adjacentTable
86
- ? adjacentTable.range.endRowIndex + 1 - totalRowOffset === cell.rowIndex
123
+ ? adjacentTable.range.endRowIndex + 1 === cell.rowIndex &&
124
+ !adjacentTable.totalRow
87
125
  : false;
88
126
  var isColumnExpansion = adjacentTable
89
127
  ? adjacentTable.range.endColumnIndex + 1 === cell.columnIndex
@@ -129,66 +167,61 @@ export var findAdjacentBandedRange = function (sheetId, cell, bandedRanges, getU
129
167
  : false;
130
168
  return [adjacentTable, isRowExpansion, isColumnExpansion];
131
169
  };
132
- // Check if table cells are fillable
133
- export var isTableColumnCellsFillable = function (sheetId, range, excludeCell, existingColumnFormula, currentValue, activeSheetName, getUserEnteredValue) {
134
- var _a;
135
- var normalizedExistingFormula = normalizeFormulaString(existingColumnFormula);
136
- var normalizedCurrentFormula = isAFormula(currentValue)
137
- ? normalizeFormulaString(currentValue)
138
- : undefined;
139
- var templateFormula = normalizedExistingFormula !== null && normalizedExistingFormula !== void 0 ? normalizedExistingFormula : normalizedCurrentFormula;
140
- if (!templateFormula) {
141
- return false;
142
- }
143
- var normalizedTemplate = (_a = SheetCell.getRelativeFormula(templateFormula, excludeCell, excludeCell, activeSheetName)) !== null && _a !== void 0 ? _a : templateFormula;
144
- var templateHasReferences = formulaHasCellReferences(templateFormula);
145
- var isAnchorCell = excludeCell.rowIndex === range.startRowIndex &&
146
- excludeCell.columnIndex === range.startColumnIndex;
147
- var normalizedCurrentLiteral = normalizeFormulaString(typeof currentValue === "string" ? currentValue : undefined);
148
- if (normalizedExistingFormula && !templateHasReferences) {
170
+ /**
171
+ * Excel's calculated-column fill decision, shared with the Rust engine's
172
+ * `auto_fill_calculated_column` (rowsncolumns/spreadsheet#681): a formula just
173
+ * written into a table body cell fills the whole column when every OTHER body
174
+ * cell of that column is either empty (a fresh column) or holds the same
175
+ * formula relative to its row (a consistent calculated column, which the new
176
+ * formula overwrites). A literal anywhere, or two rows that disagree, leave
177
+ * the edit a one-cell exception. The column's cells are the reference — not
178
+ * the formula recorded on `columns[].formula`, which has no row of its own —
179
+ * so the overwrite works from any row, not only the one the column was
180
+ * created from (#668 T-50). A consistent column is a calculated column
181
+ * whatever its formula references (`=TODAY()`, `=1`), like Excel (#668 T-29).
182
+ */
183
+ export var isTableColumnCellsFillable = function (sheetId, range, excludeCell, currentValue, activeSheetName, getUserEnteredValue) {
184
+ var e_2, _a;
185
+ var _b;
186
+ if (!isAFormula(currentValue)) {
149
187
  return false;
150
188
  }
151
- return __spreadArray([], __read(iterateCellsInRange(range)), false).every(function (_a) {
152
- var _b = __read(_a, 2), rowIndex = _b[0], columnIndex = _b[1];
153
- if (rowIndex === excludeCell.rowIndex &&
154
- columnIndex === excludeCell.columnIndex) {
155
- return true;
156
- }
157
- var userEnteredValue = getUserEnteredValue(sheetId, rowIndex, columnIndex);
158
- if (isNil(userEnteredValue) || userEnteredValue === "") {
159
- return true;
160
- }
161
- if (!isAFormula(userEnteredValue)) {
162
- return false;
189
+ // The column's existing formula, relativised to the edited cell — every
190
+ // non-empty body cell must agree on it.
191
+ var existingTemplate;
192
+ try {
193
+ for (var _c = __values(iterateCellsInRange(range)), _d = _c.next(); !_d.done; _d = _c.next()) {
194
+ var _e = __read(_d.value, 2), rowIndex = _e[0], columnIndex = _e[1];
195
+ if (rowIndex === excludeCell.rowIndex &&
196
+ columnIndex === excludeCell.columnIndex) {
197
+ continue;
198
+ }
199
+ var userEnteredValue = getUserEnteredValue(sheetId, rowIndex, columnIndex);
200
+ if (isNil(userEnteredValue) || userEnteredValue === "") {
201
+ continue;
202
+ }
203
+ if (!isAFormula(userEnteredValue)) {
204
+ return false;
205
+ }
206
+ // `$`-anchored references stay put from row to row (Excel), so they must
207
+ // not be shifted for the comparison.
208
+ var relativeFormula = (_b = SheetCell.getRelativeFormula(userEnteredValue, { rowIndex: rowIndex, columnIndex: columnIndex }, excludeCell, activeSheetName, undefined, false, undefined, undefined, true)) !== null && _b !== void 0 ? _b : userEnteredValue;
209
+ if (existingTemplate === undefined) {
210
+ existingTemplate = relativeFormula;
211
+ }
212
+ else if (existingTemplate !== relativeFormula) {
213
+ return false;
214
+ }
163
215
  }
164
- var relativeFormula = SheetCell.getRelativeFormula(userEnteredValue, { rowIndex: rowIndex, columnIndex: columnIndex }, excludeCell, activeSheetName);
165
- var comparable = relativeFormula !== null && relativeFormula !== void 0 ? relativeFormula : userEnteredValue;
166
- return normalizedTemplate === comparable;
167
- });
168
- };
169
- var formulaHasCellReferences = function (formula) {
170
- if (!formula || typeof formula !== "string" || !formula.startsWith("=")) {
171
- return false;
172
- }
173
- var tokens = lexify(formula).tokens;
174
- return tokens.some(function (token) {
175
- return CELL_REFERENCE_TOKEN_NAMES.has(token.tokenType.name);
176
- });
177
- };
178
- var CELL_REFERENCE_TOKEN_NAMES = new Set([
179
- (_a = tokenVocabulary.Cell) === null || _a === void 0 ? void 0 : _a.name,
180
- (_b = tokenVocabulary.Column) === null || _b === void 0 ? void 0 : _b.name,
181
- (_c = tokenVocabulary.TableColumnName) === null || _c === void 0 ? void 0 : _c.name,
182
- ].filter(function (tokenName) { return Boolean(tokenName); }));
183
- var normalizeFormulaString = function (value) {
184
- if (typeof value !== "string") {
185
- return undefined;
186
216
  }
187
- var trimmed = value.trim();
188
- if (!trimmed) {
189
- return undefined;
217
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
218
+ finally {
219
+ try {
220
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
221
+ }
222
+ finally { if (e_2) throw e_2.error; }
190
223
  }
191
- return trimmed.startsWith("=") ? trimmed : "=".concat(trimmed);
224
+ return true;
192
225
  };
193
226
  // Add table name to formula
194
227
  export var addTableNameToTokens = function (tokens, title) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../api/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAiBpF,KAAK,mBAAmB,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,SAAS,GACT;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBxC,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,SA6BlD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,kBAAkB,GAAG,SAAS,EACrC,QAAQ,mBAAmB,EAC3B,gBAAgB,mBAAmB,EACnC,iBAAiB,CAAC,OAAO,EAAE,MAAM,KAAK,cAAc,EAAE,EACtD,UAAU,uBAAuB,wBAsTlC,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../api/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAkBpF,KAAK,mBAAmB,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,SAAS,GACT;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBxC,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,SA6BlD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,kBAAkB,GAAG,SAAS,EACrC,QAAQ,mBAAmB,EAC3B,gBAAgB,mBAAmB,EACnC,iBAAiB,CAAC,OAAO,EAAE,MAAM,KAAK,cAAc,EAAE,EACtD,UAAU,uBAAuB,wBA2WlC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { checkIfStringIsReference, escapeCharacters, isNil, stripDataValidationTextPrefix, toDate, toSerial, } from "@rowsncolumns/utils";
1
+ import { checkIfStringIsReference, escapeCharacters, isNil, matchesWildcardPattern, stripDataValidationTextPrefix, toDate, toSerial, } from "@rowsncolumns/utils";
2
2
  import { convertToNumber } from "./datatype";
3
3
  var EMAIL_REGEX = /(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
4
4
  var URL_REGEX = /^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/;
@@ -151,6 +151,33 @@ export var checkBooleanRule = function (rule, value, previousValue, getRangeValu
151
151
  var end = new Date(today.getFullYear(), today.getMonth() + 2, 0);
152
152
  return { start: startOfDay(start), end: endOfDay(end) };
153
153
  }
154
+ // Calendar quarters / years, like Excel's Date Filters. `new Date` rolls a
155
+ // month index past December (or before January) into the adjacent year.
156
+ case "DATE_THIS_QUARTER":
157
+ case "DATE_LAST_QUARTER":
158
+ case "DATE_NEXT_QUARTER": {
159
+ var shift = type === "DATE_LAST_QUARTER" ? -3 : type === "DATE_NEXT_QUARTER" ? 3 : 0;
160
+ var firstMonth = Math.floor(today.getMonth() / 3) * 3 + shift;
161
+ var start = new Date(today.getFullYear(), firstMonth, 1);
162
+ var end = new Date(today.getFullYear(), firstMonth + 3, 0);
163
+ return { start: startOfDay(start), end: endOfDay(end) };
164
+ }
165
+ case "DATE_THIS_YEAR":
166
+ case "DATE_LAST_YEAR":
167
+ case "DATE_NEXT_YEAR": {
168
+ var year = today.getFullYear() +
169
+ (type === "DATE_LAST_YEAR" ? -1 : type === "DATE_NEXT_YEAR" ? 1 : 0);
170
+ return {
171
+ start: startOfDay(new Date(year, 0, 1)),
172
+ end: endOfDay(new Date(year, 11, 31)),
173
+ };
174
+ }
175
+ case "DATE_YEAR_TO_DATE": {
176
+ return {
177
+ start: startOfDay(new Date(today.getFullYear(), 0, 1)),
178
+ end: endOfDay(today),
179
+ };
180
+ }
154
181
  default:
155
182
  return undefined;
156
183
  }
@@ -166,9 +193,20 @@ export var checkBooleanRule = function (rule, value, previousValue, getRangeValu
166
193
  var type = condition.type, values = condition.values;
167
194
  var valuesArray = values !== null && values !== void 0 ? values : [];
168
195
  var firstValue = (_a = valuesArray[0]) !== null && _a !== void 0 ? _a : { userEnteredValue: "" };
196
+ // "All Dates in the Period" (`DATE_IN_Q1`..`Q4`, `DATE_IN_M1`..`M12`): the
197
+ // cell's quarter / month in any year.
198
+ var periodMatch = /^DATE_IN_([QM])(\d+)$/.exec(type);
199
+ if (periodMatch) {
200
+ var dateValue = toComparableDate(value);
201
+ if (!dateValue)
202
+ return false;
203
+ var month = dateValue.getMonth() + 1;
204
+ var period = periodMatch[1] === "Q" ? Math.ceil(month / 3) : month;
205
+ return period === Number(periodMatch[2]);
206
+ }
169
207
  switch (type) {
170
208
  case "TEXT_EQ":
171
- return new RegExp("^" + escapeCharacters(firstValue.userEnteredValue) + "$", "gi").test(String(value));
209
+ return matchesWildcardPattern(firstValue.userEnteredValue, String(value), "equals");
172
210
  case "BLANK":
173
211
  return value === "" || isNil(value);
174
212
  case "BOOLEAN":
@@ -212,17 +250,17 @@ export var checkBooleanRule = function (rule, value, previousValue, getRangeValu
212
250
  case "NUMBER_NOT_EQ":
213
251
  return parseNumber(value) !== parseNumber(firstValue.userEnteredValue);
214
252
  case "TEXT_CONTAINS":
215
- return new RegExp(escapeCharacters(firstValue.userEnteredValue), "gi").test(String(value));
253
+ return matchesWildcardPattern(firstValue.userEnteredValue, String(value), "contains");
216
254
  case "TEXT_ENDS_WITH":
217
- return new RegExp(escapeCharacters(firstValue.userEnteredValue) + "$", "gi").test(String(value));
255
+ return matchesWildcardPattern(firstValue.userEnteredValue, String(value), "endsWith");
218
256
  case "TEXT_NOT_CONTAINS":
219
- return !new RegExp(escapeCharacters(firstValue.userEnteredValue), "gi").test(String(value));
257
+ return !matchesWildcardPattern(firstValue.userEnteredValue, String(value), "contains");
220
258
  case "NOT_BLANK":
221
259
  return !(isNil(value) || value === "");
222
260
  case "TEXT_NOT_EQ":
223
- return !new RegExp(escapeCharacters(firstValue.userEnteredValue), "gi").test(String(value));
261
+ return !matchesWildcardPattern(firstValue.userEnteredValue, String(value), "equals");
224
262
  case "TEXT_STARTS_WITH":
225
- return new RegExp("^" + escapeCharacters(firstValue.userEnteredValue), "gi").test(String(value));
263
+ return matchesWildcardPattern(firstValue.userEnteredValue, String(value), "startsWith");
226
264
  case "ONE_OF_RANGE":
227
265
  case "ONE_OF_LIST": {
228
266
  if (allowBlank && !value) {
@@ -267,7 +305,14 @@ export var checkBooleanRule = function (rule, value, previousValue, getRangeValu
267
305
  case "DATE_NEXT_WEEK":
268
306
  case "DATE_LAST_MONTH":
269
307
  case "DATE_THIS_MONTH":
270
- case "DATE_NEXT_MONTH": {
308
+ case "DATE_NEXT_MONTH":
309
+ case "DATE_THIS_QUARTER":
310
+ case "DATE_LAST_QUARTER":
311
+ case "DATE_NEXT_QUARTER":
312
+ case "DATE_THIS_YEAR":
313
+ case "DATE_LAST_YEAR":
314
+ case "DATE_NEXT_YEAR":
315
+ case "DATE_YEAR_TO_DATE": {
271
316
  var dateValue = toComparableDate(value);
272
317
  if (!dateValue)
273
318
  return false;
@@ -0,0 +1,22 @@
1
+ import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/common-types";
2
+ import type { BandedDefinition, SelectionAttributes, TableTheme } from "@rowsncolumns/spreadsheet";
3
+ /**
4
+ * What the Create Table dialog was opened for: the selection it came from, the range it
5
+ * pre-fills (the selection, else the data region around the active cell), Excel's guess for
6
+ * "My table has headers", and the style the entry point chose (Format as Table / context menu).
7
+ */
8
+ export type CreateTableRequest = {
9
+ sheetId: number;
10
+ activeCell: CellInterface;
11
+ selections: SelectionArea<SelectionAttributes>[];
12
+ range: GridRange;
13
+ hasHeaders: boolean;
14
+ theme?: TableTheme;
15
+ bandedRange?: BandedDefinition;
16
+ };
17
+ export declare const creatingTableAtom: import("jotai").PrimitiveAtom<CreateTableRequest | undefined> & {
18
+ init: CreateTableRequest | undefined;
19
+ };
20
+ export declare const useCreatingTable: () => CreateTableRequest | undefined;
21
+ export declare const useSetCreatingTable: () => (args_0: CreateTableRequest | ((prev: CreateTableRequest | undefined) => CreateTableRequest | undefined) | undefined) => void;
22
+ //# sourceMappingURL=creating-table.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creating-table.atom.d.ts","sourceRoot":"","sources":["../../../atoms/creating-table.atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAGnC;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,sCAAwC,CAAC;AACtE,eAAO,MAAM,mBAAmB,qIAAsC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { atom, useAtomValue, useSetAtom } from "jotai";
2
+ export var creatingTableAtom = atom(undefined);
3
+ export var useCreatingTable = function () { return useAtomValue(creatingTableAtom); };
4
+ export var useSetCreatingTable = function () { return useSetAtom(creatingTableAtom); };
@@ -3,6 +3,14 @@ export declare const dialogStateAtom: import("jotai/vanilla/utils/atomFamily").A
3
3
  }>;
4
4
  export declare const useEditTableDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
5
5
  export declare const useSetEditTableDialogValue: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
6
+ export declare const useCreateTableDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
7
+ export declare const useSetCreateTableDialogValue: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
8
+ export declare const useResizeTableDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
9
+ export declare const useSetResizeTableDialogValue: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
10
+ export declare const useInsertSlicerDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
11
+ export declare const useSetInsertSlicerDialogValue: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
12
+ export declare const useEditSlicerDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
13
+ export declare const useSetEditSlicerDialogState: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
6
14
  export declare const useDeletSheetConfirmationDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
7
15
  export declare const useEditNamedRangeDialogState: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
8
16
  export declare const useSetEditNamedRangeDialogState: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-state.atom.d.ts","sourceRoot":"","sources":["../../../atoms/dialog-state.atom.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe;;EAAyC,CAAC;AAGtE,eAAO,MAAM,uBAAuB,2EACG,CAAC;AAExC,eAAO,MAAM,0BAA0B,gEACG,CAAC;AAG3C,eAAO,MAAM,oCAAoC,2EACR,CAAC;AAG1C,eAAO,MAAM,4BAA4B,2EACG,CAAC;AAE7C,eAAO,MAAM,+BAA+B,gEACG,CAAC;AAGhD,eAAO,MAAM,uBAAuB,2EACG,CAAC;AAExC,eAAO,MAAM,0BAA0B,gEACG,CAAC;AAG3C,eAAO,MAAM,6BAA6B,2EACG,CAAC;AAE9C,eAAO,MAAM,gCAAgC,gEACG,CAAC;AAGjD,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,+BAA+B,2EACG,CAAC;AAEhD,eAAO,MAAM,kCAAkC,gEACG,CAAC;AAGnD,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,wBAAwB,2EACG,CAAC;AAEzC,eAAO,MAAM,2BAA2B,gEACG,CAAC;AAG5C,eAAO,MAAM,4BAA4B,2EACG,CAAC;AAE7C,eAAO,MAAM,gCAAgC,gEACE,CAAC"}
1
+ {"version":3,"file":"dialog-state.atom.d.ts","sourceRoot":"","sources":["../../../atoms/dialog-state.atom.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe;;EAAyC,CAAC;AAGtE,eAAO,MAAM,uBAAuB,2EACG,CAAC;AAExC,eAAO,MAAM,0BAA0B,gEACG,CAAC;AAG3C,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,0BAA0B,2EACG,CAAC;AAE3C,eAAO,MAAM,6BAA6B,gEACG,CAAC;AAG9C,eAAO,MAAM,wBAAwB,2EACG,CAAC;AAEzC,eAAO,MAAM,2BAA2B,gEACG,CAAC;AAG5C,eAAO,MAAM,oCAAoC,2EACR,CAAC;AAG1C,eAAO,MAAM,4BAA4B,2EACG,CAAC;AAE7C,eAAO,MAAM,+BAA+B,gEACG,CAAC;AAGhD,eAAO,MAAM,uBAAuB,2EACG,CAAC;AAExC,eAAO,MAAM,0BAA0B,gEACG,CAAC;AAG3C,eAAO,MAAM,6BAA6B,2EACG,CAAC;AAE9C,eAAO,MAAM,gCAAgC,gEACG,CAAC;AAGjD,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,+BAA+B,2EACG,CAAC;AAEhD,eAAO,MAAM,kCAAkC,gEACG,CAAC;AAGnD,eAAO,MAAM,yBAAyB,2EACG,CAAC;AAE1C,eAAO,MAAM,4BAA4B,gEACG,CAAC;AAG7C,eAAO,MAAM,wBAAwB,2EACG,CAAC;AAEzC,eAAO,MAAM,2BAA2B,gEACG,CAAC;AAG5C,eAAO,MAAM,4BAA4B,2EACG,CAAC;AAE7C,eAAO,MAAM,gCAAgC,gEACE,CAAC"}
@@ -10,6 +10,34 @@ export var useEditTableDialogState = function () {
10
10
  export var useSetEditTableDialogValue = function () {
11
11
  return useSetAtom(dialogStateAtom("editTable"));
12
12
  };
13
+ // Create Table Dialog (Ctrl+T / Insert → Table / Format as Table)
14
+ export var useCreateTableDialogState = function () {
15
+ return useAtom(dialogStateAtom("createTable"));
16
+ };
17
+ export var useSetCreateTableDialogValue = function () {
18
+ return useSetAtom(dialogStateAtom("createTable"));
19
+ };
20
+ // Resize Table Dialog (Table Design → Resize Table)
21
+ export var useResizeTableDialogState = function () {
22
+ return useAtom(dialogStateAtom("resizeTable"));
23
+ };
24
+ export var useSetResizeTableDialogValue = function () {
25
+ return useSetAtom(dialogStateAtom("resizeTable"));
26
+ };
27
+ // Insert Slicers Dialog (Table Design → Insert Slicer, Table → Insert Slicer…)
28
+ export var useInsertSlicerDialogState = function () {
29
+ return useAtom(dialogStateAtom("insertSlicer"));
30
+ };
31
+ export var useSetInsertSlicerDialogValue = function () {
32
+ return useSetAtom(dialogStateAtom("insertSlicer"));
33
+ };
34
+ // Edit Slicer Dialog (Slicer → Slicer Settings…)
35
+ export var useEditSlicerDialogState = function () {
36
+ return useAtom(dialogStateAtom("editSlicer"));
37
+ };
38
+ export var useSetEditSlicerDialogState = function () {
39
+ return useSetAtom(dialogStateAtom("editSlicer"));
40
+ };
13
41
  // Delete Sheet Confirmation Dialog
14
42
  export var useDeletSheetConfirmationDialogState = function () {
15
43
  return useAtom(dialogStateAtom("deleteSheet"));
@@ -0,0 +1,9 @@
1
+ import type { Slicer } from "@rowsncolumns/spreadsheet";
2
+ /** The slicer Excel's "Slicer Settings" dialog was opened for (`onRequestEditSlicer`). */
3
+ export declare const editingSlicerAtom: import("jotai").PrimitiveAtom<Slicer | undefined> & {
4
+ init: Slicer | undefined;
5
+ };
6
+ export declare const useEditingSlicer: () => Slicer | undefined;
7
+ export declare const useSetEditingSlicer: () => (args_0: Slicer | ((prev: Slicer | undefined) => Slicer | undefined) | undefined) => void;
8
+ export declare const useEditingSlicerState: () => [Slicer | undefined, (args_0: Slicer | ((prev: Slicer | undefined) => Slicer | undefined) | undefined) => void];
9
+ //# sourceMappingURL=editing-slicer.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editing-slicer.atom.d.ts","sourceRoot":"","sources":["../../../atoms/editing-slicer.atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAGxD,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB;;CAAsC,CAAC;AAErE,eAAO,MAAM,gBAAgB,0BAAwC,CAAC;AACtE,eAAO,MAAM,mBAAmB,iGAAsC,CAAC;AACvE,eAAO,MAAM,qBAAqB,uHAAmC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
2
+ /** The slicer Excel's "Slicer Settings" dialog was opened for (`onRequestEditSlicer`). */
3
+ export var editingSlicerAtom = atom(undefined);
4
+ export var useEditingSlicer = function () { return useAtomValue(editingSlicerAtom); };
5
+ export var useSetEditingSlicer = function () { return useSetAtom(editingSlicerAtom); };
6
+ export var useEditingSlicerState = function () { return useAtom(editingSlicerAtom); };
@@ -1,5 +1,9 @@
1
1
  export * from "./error-state.atom";
2
2
  export * from "./dialog-state.atom";
3
3
  export * from "./editing-embed.atom";
4
+ export * from "./creating-table.atom";
5
+ export * from "./resizing-table.atom";
6
+ export * from "./inserting-slicer.atom";
7
+ export * from "./editing-slicer.atom";
4
8
  export * from "./sheet-observer.atom";
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  export * from "./error-state.atom";
2
2
  export * from "./dialog-state.atom";
3
3
  export * from "./editing-embed.atom";
4
+ export * from "./creating-table.atom";
5
+ export * from "./resizing-table.atom";
6
+ export * from "./inserting-slicer.atom";
7
+ export * from "./editing-slicer.atom";
4
8
  export * from "./sheet-observer.atom";
@@ -0,0 +1,8 @@
1
+ import type { TableView } from "@rowsncolumns/spreadsheet";
2
+ /** The table Excel's "Insert Slicers" dialog was opened for. */
3
+ export declare const insertingSlicerAtom: import("jotai").PrimitiveAtom<TableView | undefined> & {
4
+ init: TableView | undefined;
5
+ };
6
+ export declare const useInsertingSlicer: () => TableView | undefined;
7
+ export declare const useSetInsertingSlicer: () => (args_0: TableView | ((prev: TableView | undefined) => TableView | undefined) | undefined) => void;
8
+ //# sourceMappingURL=inserting-slicer.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inserting-slicer.atom.d.ts","sourceRoot":"","sources":["../../../atoms/inserting-slicer.atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,gEAAgE;AAChE,eAAO,MAAM,mBAAmB;;CAAyC,CAAC;AAE1E,eAAO,MAAM,kBAAkB,6BAA0C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,0GAAwC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { atom, useAtomValue, useSetAtom } from "jotai";
2
+ /** The table Excel's "Insert Slicers" dialog was opened for. */
3
+ export var insertingSlicerAtom = atom(undefined);
4
+ export var useInsertingSlicer = function () { return useAtomValue(insertingSlicerAtom); };
5
+ export var useSetInsertingSlicer = function () { return useSetAtom(insertingSlicerAtom); };
@@ -0,0 +1,8 @@
1
+ import type { TableView } from "@rowsncolumns/spreadsheet";
2
+ /** The table Excel's "Resize Table" dialog was opened for. */
3
+ export declare const resizingTableAtom: import("jotai").PrimitiveAtom<TableView | undefined> & {
4
+ init: TableView | undefined;
5
+ };
6
+ export declare const useResizingTable: () => TableView | undefined;
7
+ export declare const useSetResizingTable: () => (args_0: TableView | ((prev: TableView | undefined) => TableView | undefined) | undefined) => void;
8
+ //# sourceMappingURL=resizing-table.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizing-table.atom.d.ts","sourceRoot":"","sources":["../../../atoms/resizing-table.atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB;;CAAyC,CAAC;AAExE,eAAO,MAAM,gBAAgB,6BAAwC,CAAC;AACtE,eAAO,MAAM,mBAAmB,0GAAsC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { atom, useAtomValue, useSetAtom } from "jotai";
2
+ /** The table Excel's "Resize Table" dialog was opened for. */
3
+ export var resizingTableAtom = atom(undefined);
4
+ export var useResizingTable = function () { return useAtomValue(resizingTableAtom); };
5
+ export var useSetResizingTable = function () { return useSetAtom(resizingTableAtom); };