@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,9 +1,10 @@
1
- import { __read, __spreadArray, __values } from "tslib";
1
+ import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { isStaticNode, } from "@rowsncolumns/dag";
3
3
  import { getCellUserEnteredValue, getExtendedValueFormula, getStringifiedColor, } from "@rowsncolumns/spreadsheet";
4
4
  import { produceWithPatches } from "immer";
5
5
  import { useCallback } from "react";
6
6
  import { createSheetCellIdentifier } from "../api/formula";
7
+ import { getCellSortValue } from "../api/sort";
7
8
  import { createSheetDraft } from "../api/immer-utils";
8
9
  import { SheetCell } from "../sheet-cell";
9
10
  import { useShowError } from "../atoms/error-state.atom";
@@ -35,7 +36,7 @@ var buildSortValue = function (options, fallbackValue, getEffectiveFormat, theme
35
36
  * @returns
36
37
  */
37
38
  export var useOnSortColumn = function (_a) {
38
- var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, isHiddenRow = _a.isHiddenRow, getDependents = _a.getDependents, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, enableSortTimingLogs = _a.enableSortTimingLogs, onCommand = _a.onCommand;
39
+ var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, getCellData = _a.getCellData, getDataRowCount = _a.getDataRowCount, isHiddenRow = _a.isHiddenRow, isManuallyHiddenRow = _a.isManuallyHiddenRow, getDependents = _a.getDependents, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, enableSortTimingLogs = _a.enableSortTimingLogs, onCommand = _a.onCommand;
39
40
  var canEditSheet = useCanEditSheet();
40
41
  var canPerformSheetAction = useCanPerformSheetAction();
41
42
  var showError = useShowError();
@@ -46,6 +47,7 @@ export var useOnSortColumn = function (_a) {
46
47
  * column. Omitting this keeps the single-column behavior identical.
47
48
  */
48
49
  additionalLevels) {
50
+ var _a, _b;
49
51
  if (!canEditSheet(sheetId)) {
50
52
  console.debug("This range is protected, users cannot edit this cell range.");
51
53
  return;
@@ -75,108 +77,148 @@ export var useOnSortColumn = function (_a) {
75
77
  startColumnIndex: 1,
76
78
  endColumnIndex: columnCount,
77
79
  });
80
+ var startRowIndex = 1;
81
+ var startColumnIndex = 1;
82
+ var isPinnedRow = function (rowIndex) {
83
+ return isManuallyHiddenRow
84
+ ? isManuallyHiddenRow(sheetId, rowIndex)
85
+ : isHiddenRow(sheetId, rowIndex);
86
+ };
87
+ var overallStart = now();
88
+ // Gather the sort keys from the committed cell data. Pinned rows
89
+ // contribute no entry and are never rewritten.
90
+ var buildStart = now();
91
+ var dataRowCount = (_a = getDataRowCount(sheetId)) !== null && _a !== void 0 ? _a : 0;
92
+ var rowEntries = [];
93
+ var _loop_1 = function (rowIndex) {
94
+ var e_1, _c;
95
+ if (isPinnedRow(rowIndex)) {
96
+ return "continue";
97
+ }
98
+ // Build one sort value per level: the primary column first,
99
+ // then each "then by" column in order.
100
+ var buildLevelValue = function (columnIndex, levelOptions) {
101
+ var sortCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, getCellData(sheetId, rowIndex, columnIndex), { locale: locale, sharedStringRegistry: sharedStringRegistry });
102
+ var fallbackValue = getCellSortValue(sortCell);
103
+ return buildSortValue(levelOptions, fallbackValue, getEffectiveFormat, theme, sheetId, rowIndex, columnIndex);
104
+ };
105
+ var sortValues = [
106
+ buildLevelValue(sortedColumnIndex, options),
107
+ ];
108
+ try {
109
+ for (var _d = (e_1 = void 0, __values(additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : [])), _e = _d.next(); !_e.done; _e = _d.next()) {
110
+ var level = _e.value;
111
+ sortValues.push(buildLevelValue(level.columnIndex, level));
112
+ }
113
+ }
114
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
115
+ finally {
116
+ try {
117
+ if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
118
+ }
119
+ finally { if (e_1) throw e_1.error; }
120
+ }
121
+ rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
122
+ };
123
+ for (var rowIndex = startRowIndex; rowIndex <= dataRowCount; rowIndex++) {
124
+ _loop_1(rowIndex);
125
+ }
126
+ var buildMs = now() - buildStart;
127
+ // The slots the sorted rows land on, ascending (the sort reorders
128
+ // `rowEntries` in place).
129
+ var destRows = rowEntries.map(function (entry) { return entry.rowIndex; });
130
+ // Sort data
131
+ var sortStart = now();
132
+ // Primary spec, then one spec per "then by" level. The order
133
+ // matches the sortValues built above so the comparator pairs
134
+ // each value with its spec. `sortedEntries[i]` is the row that
135
+ // lands on `destRows[i]`.
136
+ var specs = __spreadArray([
137
+ {
138
+ sortOrder: sortOrder,
139
+ sortBy: (_b = options === null || options === void 0 ? void 0 : options.sortBy) !== null && _b !== void 0 ? _b : "value",
140
+ // Pre-resolve the target color the same way the cell sort
141
+ // values are resolved, so sort-rows.ts can compare strings.
142
+ sortColor: getStringifiedColor(options === null || options === void 0 ? void 0 : options.sortColor, theme),
143
+ sortIcon: options === null || options === void 0 ? void 0 : options.sortIcon,
144
+ customList: options === null || options === void 0 ? void 0 : options.customList,
145
+ }
146
+ ], __read((additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : []).map(function (level) {
147
+ var _a;
148
+ return ({
149
+ sortOrder: level.sortOrder,
150
+ sortBy: (_a = level.sortBy) !== null && _a !== void 0 ? _a : "value",
151
+ sortColor: getStringifiedColor(level.sortColor, theme),
152
+ sortIcon: level.sortIcon,
153
+ customList: level.customList,
154
+ });
155
+ })), false);
156
+ var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, specs);
157
+ var sortMs = now() - sortStart;
158
+ // Carry each row's `hiddenByFilter` flag to the row's destination: a
159
+ // sort does not re-evaluate the filter, so the hidden set follows the
160
+ // rows.
161
+ onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
162
+ var _a = __read(produceWithPatches(prevSheets, function (draft) {
163
+ var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
164
+ if (!sheet) {
165
+ return;
166
+ }
167
+ var hiddenByFilterAt = function (rowIndex) { var _a, _b; return Boolean((_b = (_a = sheet.rowMetadata) === null || _a === void 0 ? void 0 : _a[rowIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByFilter); };
168
+ // Read every source flag before writing any destination.
169
+ var carried = destRows.map(function (rowIndex, index) { var _a, _b; return hiddenByFilterAt((_b = (_a = sortedEntries[index]) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : rowIndex); });
170
+ destRows.forEach(function (rowIndex, index) {
171
+ var hiddenByFilter = carried[index];
172
+ if (hiddenByFilter === hiddenByFilterAt(rowIndex)) {
173
+ return;
174
+ }
175
+ if (!sheet.rowMetadata) {
176
+ sheet.rowMetadata = [];
177
+ }
178
+ sheet.rowMetadata[rowIndex] = __assign(__assign({}, sheet.rowMetadata[rowIndex]), { hiddenByFilter: hiddenByFilter });
179
+ });
180
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
181
+ if (!patches.length) {
182
+ return prevSheets;
183
+ }
184
+ saveHistory({ sheets: { patches: patches, inversePatches: inversePatches } });
185
+ return nextState;
186
+ });
78
187
  // Update sheet data
79
188
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
80
- var overallStart = now();
81
- var buildMs = 0;
82
- var sortMs = 0;
83
189
  var applyMs = 0;
84
190
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
85
- var e_1, _a;
86
- var _b, _c, _d, _e, _f;
191
+ var e_2, _a, e_3, _b;
192
+ var _c, _d, _e;
87
193
  var sheet = createSheetDraft(draft, sheetId);
88
- var startRowIndex = 1;
89
- var startColumnIndex = 1;
90
- var rowCount = sheet.length;
91
- var rowEntries = [];
92
194
  var rowSnapshots = new Map();
93
- var buildStart = now();
94
195
  var maxColumnCount = 0;
95
- var _loop_1 = function (rowIndex) {
96
- var e_2, _g;
97
- // Ignore hidden rows
98
- if (isHiddenRow(sheetId, rowIndex)) {
99
- return "continue";
196
+ try {
197
+ for (var destRows_1 = __values(destRows), destRows_1_1 = destRows_1.next(); !destRows_1_1.done; destRows_1_1 = destRows_1.next()) {
198
+ var rowIndex = destRows_1_1.value;
199
+ var rowValues = (_d = (_c = sheet[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : [];
200
+ maxColumnCount = Math.max(maxColumnCount, rowValues.length);
201
+ rowSnapshots.set(rowIndex, rowValues.slice());
100
202
  }
101
- var rowValue = sheet[rowIndex];
102
- var columnCount_1 = (_c = (_b = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
103
- maxColumnCount = Math.max(maxColumnCount, columnCount_1);
104
- rowSnapshots.set(rowIndex, ((_d = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) !== null && _d !== void 0 ? _d : []).slice());
105
- // Build one sort value per level: the primary column first,
106
- // then each "then by" column in order.
107
- var buildLevelValue = function (columnIndex, levelOptions) {
108
- var _a, _b;
109
- var sortCellData = (_a = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) === null || _a === void 0 ? void 0 : _a[columnIndex];
110
- var sortCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, sortCellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
111
- var fallbackValue = (_b = sortCell.getEffectiveValue()) !== null && _b !== void 0 ? _b : sortCell.formattedValue;
112
- return buildSortValue(levelOptions, fallbackValue, getEffectiveFormat, theme, sheetId, rowIndex, columnIndex);
113
- };
114
- var sortValues = [
115
- buildLevelValue(sortedColumnIndex, options),
116
- ];
203
+ }
204
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
205
+ finally {
117
206
  try {
118
- for (var _h = (e_2 = void 0, __values(additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : [])), _j = _h.next(); !_j.done; _j = _h.next()) {
119
- var level = _j.value;
120
- sortValues.push(buildLevelValue(level.columnIndex, level));
121
- }
207
+ if (destRows_1_1 && !destRows_1_1.done && (_a = destRows_1.return)) _a.call(destRows_1);
122
208
  }
123
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
124
- finally {
125
- try {
126
- if (_j && !_j.done && (_g = _h.return)) _g.call(_h);
127
- }
128
- finally { if (e_2) throw e_2.error; }
129
- }
130
- rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
131
- };
132
- for (var rowIndex = startRowIndex; rowIndex <= rowCount; rowIndex++) {
133
- _loop_1(rowIndex);
209
+ finally { if (e_2) throw e_2.error; }
134
210
  }
135
- buildMs = now() - buildStart;
136
- // Sort data
137
- var sortStart = now();
138
- // Primary spec, then one spec per "then by" level. The order
139
- // matches the sortValues built above so the comparator pairs
140
- // each value with its spec.
141
- var specs = __spreadArray([
142
- {
143
- sortOrder: sortOrder,
144
- sortBy: (_e = options === null || options === void 0 ? void 0 : options.sortBy) !== null && _e !== void 0 ? _e : "value",
145
- // Pre-resolve the target color the same way the cell sort
146
- // values are resolved, so sort-rows.ts can compare strings.
147
- sortColor: getStringifiedColor(options === null || options === void 0 ? void 0 : options.sortColor, theme),
148
- sortIcon: options === null || options === void 0 ? void 0 : options.sortIcon,
149
- customList: options === null || options === void 0 ? void 0 : options.customList,
150
- }
151
- ], __read((additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : []).map(function (level) {
152
- var _a;
153
- return ({
154
- sortOrder: level.sortOrder,
155
- sortBy: (_a = level.sortBy) !== null && _a !== void 0 ? _a : "value",
156
- sortColor: getStringifiedColor(level.sortColor, theme),
157
- sortIcon: level.sortIcon,
158
- customList: level.customList,
159
- });
160
- })), false);
161
- var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, specs);
162
- sortMs = now() - sortStart;
163
- // Counter for how many rows we have skipped
164
- var skippedRow = 0;
165
211
  var applyStart = now();
166
- for (var rowIndex = startRowIndex; rowIndex <= sortedEntries.length; rowIndex++) {
167
- // Ignore hidden rows
168
- if (isHiddenRow(sheetId, rowIndex)) {
169
- skippedRow++;
170
- continue;
171
- }
172
- var sourceRow = sortedEntries[rowIndex - skippedRow - startRowIndex];
212
+ for (var index = 0; index < destRows.length; index++) {
213
+ var rowIndex = destRows[index];
214
+ var sourceRow = sortedEntries[index];
173
215
  if (!sourceRow) {
174
216
  continue;
175
217
  }
176
218
  if (sourceRow.rowIndex === rowIndex) {
177
219
  continue;
178
220
  }
179
- var sourceRowValues = (_f = rowSnapshots.get(sourceRow.rowIndex)) !== null && _f !== void 0 ? _f : [];
221
+ var sourceRowValues = (_e = rowSnapshots.get(sourceRow.rowIndex)) !== null && _e !== void 0 ? _e : [];
180
222
  var nextRowValues = [];
181
223
  for (var columnIndex = startColumnIndex; columnIndex <= maxColumnCount; columnIndex++) {
182
224
  // const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
@@ -226,7 +268,7 @@ export var useOnSortColumn = function (_a) {
226
268
  nextRowValues[columnIndex] =
227
269
  sheetCell === null || sheetCell === void 0 ? void 0 : sheetCell.getCellData();
228
270
  try {
229
- for (var dependents_1 = (e_1 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
271
+ for (var dependents_1 = (e_3 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
230
272
  var dependent = dependents_1_1.value;
231
273
  if (isStaticNode(dependent)) {
232
274
  continue;
@@ -238,12 +280,12 @@ export var useOnSortColumn = function (_a) {
238
280
  recalcCells.set(createSheetCellIdentifier(dependent.position.sheetId, dependent.position.rowIndex, dependent.position.columnIndex), dependent.position);
239
281
  }
240
282
  }
241
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
283
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
242
284
  finally {
243
285
  try {
244
- if (dependents_1_1 && !dependents_1_1.done && (_a = dependents_1.return)) _a.call(dependents_1);
286
+ if (dependents_1_1 && !dependents_1_1.done && (_b = dependents_1.return)) _b.call(dependents_1);
245
287
  }
246
- finally { if (e_1) throw e_1.error; }
288
+ finally { if (e_3) throw e_3.error; }
247
289
  }
248
290
  }
249
291
  var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
@@ -286,7 +328,11 @@ export var useOnSortColumn = function (_a) {
286
328
  enqueueStructureChange,
287
329
  enqueueGraphOperation,
288
330
  onChangeSheetData,
331
+ onChangeSheets,
332
+ getCellData,
333
+ getDataRowCount,
289
334
  isHiddenRow,
335
+ isManuallyHiddenRow,
290
336
  getDependents,
291
337
  getFrozenRowCount,
292
338
  canEditSheet,
@@ -1,5 +1,5 @@
1
1
  import type { SelectionArea } from "@rowsncolumns/common-types";
2
- import { type CellData, type SelectionAttributes, type SortOrder, type SpreadsheetTheme } from "@rowsncolumns/spreadsheet";
2
+ import { type CellData, type Sheet, type SelectionAttributes, type SortOrder, type SpreadsheetTheme } from "@rowsncolumns/spreadsheet";
3
3
  import type { OnCommand } from "../commands";
4
4
  import type { useCalculation } from "./use-calculation";
5
5
  import type { useSheetProperties } from "./use-sheet-properties";
@@ -7,7 +7,7 @@ import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
7
7
  import type { SharedStringRegistry } from "./use-ss-registry";
8
8
  import type { SpreadsheetPatch } from "./use-undo-redo";
9
9
  import { type DimensionSortSpec } from "./utils/sort-rows";
10
- export type UseOnSortRangeProps<T extends CellData> = {
10
+ export type UseOnSortRangeProps<T extends CellData, S extends Sheet = Sheet> = {
11
11
  locale?: string;
12
12
  sharedStringRegistry?: SharedStringRegistry;
13
13
  createHistory(): (patches: SpreadsheetPatch) => void;
@@ -15,7 +15,30 @@ export type UseOnSortRangeProps<T extends CellData> = {
15
15
  enqueueGraphOperation: ReturnType<typeof useCalculation>["enqueueGraphOperation"];
16
16
  enqueueCalculation: ReturnType<typeof useCalculation>["enqueueCalculation"];
17
17
  onChangeSheetData: UseSpreadsheetProps<T>["onChangeSheetData"];
18
+ /**
19
+ * Receives each sorted row's `hiddenByFilter` flag at its destination,
20
+ * in the same undo step as the cell rewrite. Without it filter-hidden
21
+ * rows still sort, but the hidden set stays on the old row numbers.
22
+ */
23
+ onChangeSheets?: UseSpreadsheetProps<T, S>["onChangeSheets"];
24
+ /**
25
+ * Committed cell data — the sort keys are gathered from it before the
26
+ * state updaters run, so one row permutation drives both the sheet data
27
+ * rewrite and the row-metadata carry-over.
28
+ */
29
+ getCellData(sheetId: number, rowIndex: number, columnIndex: number): T | null | undefined;
30
+ /**
31
+ * Any hidden row (by the user, a filter, or a collapsed group). Used as
32
+ * the pin predicate only when `isManuallyHiddenRow` is not supplied.
33
+ */
18
34
  isHiddenRow(sheetId: number, rowIndex: number): boolean;
35
+ /**
36
+ * A row the user hid (`hiddenByUser` / a collapsed outline group). These
37
+ * rows are pinned in place; rows an AutoFilter hid sort along with the
38
+ * visible ones and keep their `hiddenByFilter` flag at their destination,
39
+ * like Excel.
40
+ */
41
+ isManuallyHiddenRow?(sheetId: number, rowIndex: number): boolean;
19
42
  getDependents: ReturnType<typeof useCalculation>["getDependents"];
20
43
  getFrozenRowCount(sheetId: number): number;
21
44
  getSheetName(sheetId: number): string;
@@ -38,5 +61,5 @@ export type UseOnSortRangeProps<T extends CellData> = {
38
61
  * @param param0
39
62
  * @returns
40
63
  */
41
- export declare const useOnSortRange: <T extends CellData>({ locale, sharedStringRegistry, createHistory, enqueueStructureChange, enqueueGraphOperation, enqueueCalculation, onChangeSheetData, getDependents, isHiddenRow, getFrozenRowCount, getSheetName, getEffectiveFormat, theme, onCommand, }: UseOnSortRangeProps<T>) => (sheetId: number, selections: SelectionArea<SelectionAttributes>[], sortOrder: SortOrder, specs?: DimensionSortSpec[]) => void;
64
+ export declare const useOnSortRange: <T extends CellData, S extends Sheet = Sheet>({ locale, sharedStringRegistry, createHistory, enqueueStructureChange, enqueueGraphOperation, enqueueCalculation, onChangeSheetData, onChangeSheets, getCellData, getDependents, isHiddenRow, isManuallyHiddenRow, getFrozenRowCount, getSheetName, getEffectiveFormat, theme, onCommand, }: UseOnSortRangeProps<T, S>) => (sheetId: number, selections: SelectionArea<SelectionAttributes>[], sortOrder: SortOrder, specs?: DimensionSortSpec[]) => void;
42
65
  //# sourceMappingURL=use-on-sort-range.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-on-sort-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-sort-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACL,KAAK,QAAQ,EAIb,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;OAGG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,2OAehD,mBAAmB,CAAC,CAAC,CAAC,eAMV,MAAM,cACH,aAAa,CAAC,mBAAmB,CAAC,EAAE,aACrC,SAAS,UAQZ,iBAAiB,EAAE,SA8ShC,CAAC"}
1
+ {"version":3,"file":"use-on-sort-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-sort-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,KAAK,EAIV,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,IACrB;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D;;;;OAIG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7D;;;;OAIG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;OAGG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,6RAkBzE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,eAMb,MAAM,cACH,aAAa,CAAC,mBAAmB,CAAC,EAAE,aACrC,SAAS,UAQZ,iBAAiB,EAAE,SA2UhC,CAAC"}
@@ -5,6 +5,7 @@ import { getCellUserEnteredValue, getExtendedValueFormula, getStringifiedColor,
5
5
  import { produceWithPatches } from "immer";
6
6
  import { useCallback } from "react";
7
7
  import { createSheetCellIdentifier } from "../api/formula";
8
+ import { getCellSortValue } from "../api/sort";
8
9
  import { createSheetDraft } from "../api/immer-utils";
9
10
  import { useShowError } from "../atoms/error-state.atom";
10
11
  import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
@@ -17,7 +18,7 @@ import { sortRowEntriesByFrozenState, } from "./utils/sort-rows";
17
18
  * @returns
18
19
  */
19
20
  export var useOnSortRange = function (_a) {
20
- var locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, onChangeSheetData = _a.onChangeSheetData, getDependents = _a.getDependents, isHiddenRow = _a.isHiddenRow, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, onCommand = _a.onCommand;
21
+ var locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, getCellData = _a.getCellData, getDependents = _a.getDependents, isHiddenRow = _a.isHiddenRow, isManuallyHiddenRow = _a.isManuallyHiddenRow, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, onCommand = _a.onCommand;
21
22
  var canEditCellRange = useCanEditCellRange();
22
23
  var canPerformSheetAction = useCanPerformSheetAction();
23
24
  var showError = useShowError();
@@ -30,6 +31,7 @@ export var useOnSortRange = function (_a) {
30
31
  * legacy uniform-direction behavior is preserved exactly.
31
32
  */
32
33
  specs) {
34
+ var _a, _b, _c, _d;
33
35
  var activeSheetName = getSheetName(sheetId);
34
36
  // We need to track this for history. Precedent cells
35
37
  var recalcCells = new Map();
@@ -62,81 +64,122 @@ export var useOnSortRange = function (_a) {
62
64
  startColumnIndex: selection.range.startColumnIndex,
63
65
  endColumnIndex: selection.range.endColumnIndex,
64
66
  });
67
+ var startRowIndex = selection.range.startRowIndex;
68
+ var endRowIndex = selection.range.endRowIndex;
69
+ var startColumnIndex = selection.range.startColumnIndex;
70
+ var endColumnIndex = selection.range.endColumnIndex;
71
+ var frozenRowCount = getFrozenRowCount(sheetId);
72
+ var isPinnedRow = function (rowIndex) {
73
+ return isManuallyHiddenRow
74
+ ? isManuallyHiddenRow(sheetId, rowIndex)
75
+ : isHiddenRow(sheetId, rowIndex);
76
+ };
77
+ // Gather the sort keys from the committed cell data. Pinned rows
78
+ // contribute no entry and are never rewritten.
79
+ var rowEntries = [];
80
+ for (var rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
81
+ if (isPinnedRow(rowIndex)) {
82
+ continue;
83
+ }
84
+ var sortValues = [];
85
+ for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
86
+ var sheetCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, getCellData(sheetId, rowIndex, columnIndex), { locale: locale, sharedStringRegistry: sharedStringRegistry });
87
+ var fallbackValue = getCellSortValue(sheetCell);
88
+ // When the per-column spec sorts by color/icon, swap the
89
+ // value for the matching attribute from the cell's
90
+ // effective format so sort-rows.ts can compare it.
91
+ var spec = specs === null || specs === void 0 ? void 0 : specs[columnIndex - startColumnIndex];
92
+ var sortBy = (_a = spec === null || spec === void 0 ? void 0 : spec.sortBy) !== null && _a !== void 0 ? _a : "value";
93
+ var fmt = sortBy === "cellColor" || sortBy === "fontColor" || sortBy === "icon"
94
+ ? getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(sheetId, rowIndex, columnIndex)
95
+ : undefined;
96
+ var sortValue = sortBy === "cellColor"
97
+ ? getStringifiedColor(fmt === null || fmt === void 0 ? void 0 : fmt.backgroundColor, theme)
98
+ : sortBy === "fontColor"
99
+ ? getStringifiedColor((_b = fmt === null || fmt === void 0 ? void 0 : fmt.textFormat) === null || _b === void 0 ? void 0 : _b.color, theme)
100
+ : sortBy === "icon"
101
+ ? (fmt === null || fmt === void 0 ? void 0 : fmt.conditionalIcon)
102
+ ? {
103
+ iconSet: fmt.conditionalIcon.iconSet,
104
+ iconId: fmt.conditionalIcon.iconId,
105
+ }
106
+ : undefined
107
+ : fallbackValue;
108
+ sortValues.push(sortValue);
109
+ }
110
+ rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
111
+ }
112
+ // The slots the sorted rows land on, ascending (the sort reorders
113
+ // `rowEntries` in place).
114
+ var destRows = rowEntries.map(function (entry) { return entry.rowIndex; });
115
+ // Sort each column. When per-column specs are provided, use
116
+ // them as multi-level "then by" specs (pre-resolving any
117
+ // target colors so sort-rows.ts can compare strings). Otherwise
118
+ // fall back to the legacy uniform-direction behavior.
119
+ // `sortedEntries[i]` is the row that lands on `destRows[i]`.
120
+ var sortSpecs = specs
121
+ ? specs.map(function (spec) { return (__assign(__assign({}, spec), { sortColor: getStringifiedColor(spec.sortColor, theme) })); })
122
+ : new Array((_d = (_c = rowEntries[0]) === null || _c === void 0 ? void 0 : _c.sortValues.length) !== null && _d !== void 0 ? _d : 0).fill(sortOrder);
123
+ var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, sortSpecs);
124
+ // Carry each row's `hiddenByFilter` flag to the row's destination: a
125
+ // sort does not re-evaluate the filter, so the hidden set follows the
126
+ // rows.
127
+ onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
128
+ var _a = __read(produceWithPatches(prevSheets, function (draft) {
129
+ var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
130
+ if (!sheet) {
131
+ return;
132
+ }
133
+ var hiddenByFilterAt = function (rowIndex) { var _a, _b; return Boolean((_b = (_a = sheet.rowMetadata) === null || _a === void 0 ? void 0 : _a[rowIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByFilter); };
134
+ // Read every source flag before writing any destination.
135
+ var carried = destRows.map(function (rowIndex, index) { var _a, _b; return hiddenByFilterAt((_b = (_a = sortedEntries[index]) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : rowIndex); });
136
+ destRows.forEach(function (rowIndex, index) {
137
+ var hiddenByFilter = carried[index];
138
+ if (hiddenByFilter === hiddenByFilterAt(rowIndex)) {
139
+ return;
140
+ }
141
+ if (!sheet.rowMetadata) {
142
+ sheet.rowMetadata = [];
143
+ }
144
+ sheet.rowMetadata[rowIndex] = __assign(__assign({}, sheet.rowMetadata[rowIndex]), { hiddenByFilter: hiddenByFilter });
145
+ });
146
+ }), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
147
+ if (!patches.length) {
148
+ return prevSheets;
149
+ }
150
+ saveHistory({ sheets: { patches: patches, inversePatches: inversePatches } });
151
+ return nextState;
152
+ });
65
153
  // Update sheet data
66
154
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
67
155
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
68
- var e_1, _a;
69
- var _b, _c, _d, _e, _f, _g, _h, _j, _k;
156
+ var e_1, _a, e_2, _b;
157
+ var _c, _d, _e, _f;
70
158
  var sheet = createSheetDraft(draft, sheetId);
71
- var startRowIndex = selection.range.startRowIndex;
72
- var endRowIndex = selection.range.endRowIndex;
73
- var startColumnIndex = selection.range.startColumnIndex;
74
- var endColumnIndex = selection.range.endColumnIndex;
75
- var rowEntries = [];
76
159
  var rowSnapshots = new Map();
77
- var frozenRowCount = getFrozenRowCount(sheetId);
78
- for (var rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
79
- // Ignore hidden rows
80
- if (isHiddenRow(sheetId, rowIndex)) {
81
- continue;
82
- }
83
- var rowValue = sheet[rowIndex];
84
- var sortValues = [];
85
- for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
86
- var cellData = (_b = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) === null || _b === void 0 ? void 0 : _b[columnIndex];
87
- var sheetCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, cellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
88
- var fallbackValue = (_c = sheetCell.getEffectiveValue()) !== null && _c !== void 0 ? _c : sheetCell.formattedValue;
89
- // When the per-column spec sorts by color/icon, swap the
90
- // value for the matching attribute from the cell's
91
- // effective format so sort-rows.ts can compare it.
92
- var spec = specs === null || specs === void 0 ? void 0 : specs[columnIndex - startColumnIndex];
93
- var sortBy = (_d = spec === null || spec === void 0 ? void 0 : spec.sortBy) !== null && _d !== void 0 ? _d : "value";
94
- var fmt = sortBy === "cellColor" ||
95
- sortBy === "fontColor" ||
96
- sortBy === "icon"
97
- ? getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(sheetId, rowIndex, columnIndex)
98
- : undefined;
99
- var sortValue = sortBy === "cellColor"
100
- ? getStringifiedColor(fmt === null || fmt === void 0 ? void 0 : fmt.backgroundColor, theme)
101
- : sortBy === "fontColor"
102
- ? getStringifiedColor((_e = fmt === null || fmt === void 0 ? void 0 : fmt.textFormat) === null || _e === void 0 ? void 0 : _e.color, theme)
103
- : sortBy === "icon"
104
- ? (fmt === null || fmt === void 0 ? void 0 : fmt.conditionalIcon)
105
- ? {
106
- iconSet: fmt.conditionalIcon.iconSet,
107
- iconId: fmt.conditionalIcon.iconId,
108
- }
109
- : undefined
110
- : fallbackValue;
111
- sortValues.push(sortValue);
160
+ try {
161
+ for (var destRows_1 = __values(destRows), destRows_1_1 = destRows_1.next(); !destRows_1_1.done; destRows_1_1 = destRows_1.next()) {
162
+ var rowIndex = destRows_1_1.value;
163
+ rowSnapshots.set(rowIndex, ((_d = (_c = sheet[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : []).slice());
112
164
  }
113
- rowSnapshots.set(rowIndex, ((_f = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) !== null && _f !== void 0 ? _f : []).slice());
114
- rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
115
165
  }
116
- // Sort each column. When per-column specs are provided, use
117
- // them as multi-level "then by" specs (pre-resolving any
118
- // target colors so sort-rows.ts can compare strings). Otherwise
119
- // fall back to the legacy uniform-direction behavior.
120
- var sortSpecs = specs
121
- ? specs.map(function (spec) { return (__assign(__assign({}, spec), { sortColor: getStringifiedColor(spec.sortColor, theme) })); })
122
- : new Array((_h = (_g = rowEntries[0]) === null || _g === void 0 ? void 0 : _g.sortValues.length) !== null && _h !== void 0 ? _h : 0).fill(sortOrder);
123
- var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, sortSpecs);
124
- // Counter for how many rows we have skipped
125
- var skippedRow = 0;
126
- for (var rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
127
- // Ignore hidden rows
128
- if (isHiddenRow(sheetId, rowIndex)) {
129
- skippedRow++;
130
- continue;
166
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
167
+ finally {
168
+ try {
169
+ if (destRows_1_1 && !destRows_1_1.done && (_a = destRows_1.return)) _a.call(destRows_1);
131
170
  }
132
- var sourceRow = sortedEntries[rowIndex - skippedRow - startRowIndex];
171
+ finally { if (e_1) throw e_1.error; }
172
+ }
173
+ for (var index = 0; index < destRows.length; index++) {
174
+ var rowIndex = destRows[index];
175
+ var sourceRow = sortedEntries[index];
133
176
  if (!sourceRow) {
134
177
  continue;
135
178
  }
136
179
  if (sourceRow.rowIndex === rowIndex) {
137
180
  continue;
138
181
  }
139
- var sourceRowValues = (_j = rowSnapshots.get(sourceRow.rowIndex)) !== null && _j !== void 0 ? _j : [];
182
+ var sourceRowValues = (_e = rowSnapshots.get(sourceRow.rowIndex)) !== null && _e !== void 0 ? _e : [];
140
183
  var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
141
184
  for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
142
185
  var sourceCellData = sourceRowValues[columnIndex];
@@ -145,7 +188,7 @@ export var useOnSortRange = function (_a) {
145
188
  if (sourceCellData && hasFormula) {
146
189
  sheetCell = new SheetCell(sheetId, { rowIndex: sourceRow.rowIndex, columnIndex: columnIndex }, sourceCellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
147
190
  }
148
- var coords = (_k = sheetCell === null || sheetCell === void 0 ? void 0 : sheetCell.coords) !== null && _k !== void 0 ? _k : {
191
+ var coords = (_f = sheetCell === null || sheetCell === void 0 ? void 0 : sheetCell.coords) !== null && _f !== void 0 ? _f : {
149
192
  rowIndex: sourceRow.rowIndex,
150
193
  columnIndex: columnIndex,
151
194
  };
@@ -178,7 +221,7 @@ export var useOnSortRange = function (_a) {
178
221
  });
179
222
  }
180
223
  try {
181
- for (var dependents_1 = (e_1 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
224
+ for (var dependents_1 = (e_2 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
182
225
  var dependent = dependents_1_1.value;
183
226
  if (isStaticNode(dependent)) {
184
227
  continue;
@@ -198,12 +241,12 @@ export var useOnSortRange = function (_a) {
198
241
  recalcCells.set(createSheetCellIdentifier(dependent.position.sheetId, dependent.position.rowIndex, dependent.position.columnIndex), dependent.position);
199
242
  }
200
243
  }
201
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
244
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
202
245
  finally {
203
246
  try {
204
- if (dependents_1_1 && !dependents_1_1.done && (_a = dependents_1.return)) _a.call(dependents_1);
247
+ if (dependents_1_1 && !dependents_1_1.done && (_b = dependents_1.return)) _b.call(dependents_1);
205
248
  }
206
- finally { if (e_1) throw e_1.error; }
249
+ finally { if (e_2) throw e_2.error; }
207
250
  }
208
251
  // Update
209
252
  if (sheetCell) {
@@ -239,7 +282,10 @@ export var useOnSortRange = function (_a) {
239
282
  enqueueGraphOperation,
240
283
  enqueueCalculation,
241
284
  onChangeSheetData,
285
+ onChangeSheets,
286
+ getCellData,
242
287
  isHiddenRow,
288
+ isManuallyHiddenRow,
243
289
  getFrozenRowCount,
244
290
  getSheetName,
245
291
  getEffectiveFormat,