@rowsncolumns/spreadsheet 10.2.74 → 10.2.76

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 (280) hide show
  1. package/dist/cjs/api/excel-validation-kinds.d.ts +71 -0
  2. package/dist/cjs/api/excel-validation-kinds.d.ts.map +1 -0
  3. package/dist/cjs/api/excel-validation-kinds.js +304 -0
  4. package/dist/cjs/api/fill-series.d.ts +38 -0
  5. package/dist/cjs/api/fill-series.d.ts.map +1 -0
  6. package/dist/cjs/api/fill-series.js +89 -0
  7. package/dist/cjs/api/go-to-special.d.ts +32 -0
  8. package/dist/cjs/api/go-to-special.d.ts.map +1 -0
  9. package/dist/cjs/api/go-to-special.js +111 -0
  10. package/dist/cjs/api/spreadsheet-api.d.ts +6 -2
  11. package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
  12. package/dist/cjs/api/spreadsheet-api.js +9 -3
  13. package/dist/cjs/api/validation-tooltip.d.ts +17 -0
  14. package/dist/cjs/api/validation-tooltip.d.ts.map +1 -0
  15. package/dist/cjs/api/validation-tooltip.js +42 -0
  16. package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts +28 -0
  17. package/dist/cjs/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
  18. package/dist/cjs/atoms/advanced-filter-dialog.atom.js +32 -0
  19. package/dist/cjs/atoms/fill-options.atom.d.ts +36 -0
  20. package/dist/cjs/atoms/fill-options.atom.d.ts.map +1 -0
  21. package/dist/cjs/atoms/fill-options.atom.js +11 -0
  22. package/dist/cjs/atoms/fill-series-dialog.atom.d.ts +26 -0
  23. package/dist/cjs/atoms/fill-series-dialog.atom.d.ts.map +1 -0
  24. package/dist/cjs/atoms/fill-series-dialog.atom.js +14 -0
  25. package/dist/cjs/atoms/go-to-dialog.atom.d.ts +11 -1
  26. package/dist/cjs/atoms/go-to-dialog.atom.d.ts.map +1 -1
  27. package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts +29 -0
  28. package/dist/cjs/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/goal-seek-dialog.atom.js +30 -0
  30. package/dist/cjs/atoms/index.d.ts +3 -0
  31. package/dist/cjs/atoms/index.d.ts.map +1 -1
  32. package/dist/cjs/atoms/index.js +3 -0
  33. package/dist/cjs/atoms/subtotal-dialog.atom.d.ts +39 -0
  34. package/dist/cjs/atoms/subtotal-dialog.atom.d.ts.map +1 -0
  35. package/dist/cjs/atoms/subtotal-dialog.atom.js +30 -0
  36. package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts +34 -0
  37. package/dist/cjs/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
  38. package/dist/cjs/atoms/text-to-columns-dialog.atom.js +36 -0
  39. package/dist/cjs/atoms/watch-window.atom.d.ts +37 -0
  40. package/dist/cjs/atoms/watch-window.atom.d.ts.map +1 -0
  41. package/dist/cjs/atoms/watch-window.atom.js +61 -0
  42. package/dist/cjs/components/advanced-filter-dialog/index.d.ts +28 -0
  43. package/dist/cjs/components/advanced-filter-dialog/index.d.ts.map +1 -0
  44. package/dist/cjs/components/advanced-filter-dialog/index.js +134 -0
  45. package/dist/cjs/components/calculation-options-dialog/index.d.ts +33 -0
  46. package/dist/cjs/components/calculation-options-dialog/index.d.ts.map +1 -0
  47. package/dist/cjs/components/calculation-options-dialog/index.js +69 -0
  48. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  49. package/dist/cjs/components/canvas-grid/index.js +328 -71
  50. package/dist/cjs/components/canvas-grid/typings.d.ts +31 -5
  51. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  52. package/dist/cjs/components/cell/alignment.d.ts +30 -0
  53. package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
  54. package/dist/cjs/components/cell/alignment.js +56 -1
  55. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  56. package/dist/cjs/components/cell/index.js +15 -7
  57. package/dist/cjs/components/cell-diff/index.d.ts +3 -2
  58. package/dist/cjs/components/cell-diff/index.d.ts.map +1 -1
  59. package/dist/cjs/components/cell-editor/helpers.d.ts +9 -0
  60. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  61. package/dist/cjs/components/cell-editor/helpers.js +8 -1
  62. package/dist/cjs/components/cell-editor/helpers.spec.js +14 -0
  63. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  64. package/dist/cjs/components/cell-editor/index.js +7 -3
  65. package/dist/cjs/components/context-menu/index.d.ts +6 -1
  66. package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
  67. package/dist/cjs/components/context-menu/index.js +146 -3
  68. package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -1
  69. package/dist/cjs/components/embeds/embed-component.js +16 -1
  70. package/dist/cjs/components/fill-series-dialog/index.d.ts +29 -0
  71. package/dist/cjs/components/fill-series-dialog/index.d.ts.map +1 -0
  72. package/dist/cjs/components/fill-series-dialog/index.js +156 -0
  73. package/dist/cjs/components/go-to-dialog/index.d.ts +11 -1
  74. package/dist/cjs/components/go-to-dialog/index.d.ts.map +1 -1
  75. package/dist/cjs/components/go-to-dialog/index.js +67 -24
  76. package/dist/cjs/components/goal-seek-dialog/index.d.ts +32 -0
  77. package/dist/cjs/components/goal-seek-dialog/index.d.ts.map +1 -0
  78. package/dist/cjs/components/goal-seek-dialog/index.js +149 -0
  79. package/dist/cjs/components/selection/fill-options-menu.d.ts +32 -0
  80. package/dist/cjs/components/selection/fill-options-menu.d.ts.map +1 -0
  81. package/dist/cjs/components/selection/fill-options-menu.js +65 -0
  82. package/dist/cjs/components/selection/index.d.ts +1 -1
  83. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  84. package/dist/cjs/components/selection/index.js +4 -2
  85. package/dist/cjs/components/selection/types.d.ts +11 -1
  86. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  87. package/dist/cjs/components/subtotal-dialog/index.d.ts +30 -0
  88. package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -0
  89. package/dist/cjs/components/subtotal-dialog/index.js +126 -0
  90. package/dist/cjs/components/text-to-columns-dialog/index.d.ts +37 -0
  91. package/dist/cjs/components/text-to-columns-dialog/index.d.ts.map +1 -0
  92. package/dist/cjs/components/text-to-columns-dialog/index.js +166 -0
  93. package/dist/cjs/components/toolbar/background-color-selector.d.ts +13 -1
  94. package/dist/cjs/components/toolbar/background-color-selector.d.ts.map +1 -1
  95. package/dist/cjs/components/toolbar/background-color-selector.js +57 -11
  96. package/dist/cjs/components/toolbar/cell-style-selector.d.ts +15 -2
  97. package/dist/cjs/components/toolbar/cell-style-selector.d.ts.map +1 -1
  98. package/dist/cjs/components/toolbar/cell-style-selector.js +56 -3
  99. package/dist/cjs/components/toolbar/fill-selectors.d.ts +49 -0
  100. package/dist/cjs/components/toolbar/fill-selectors.d.ts.map +1 -0
  101. package/dist/cjs/components/toolbar/fill-selectors.js +196 -0
  102. package/dist/cjs/components/toolbar/index.d.ts +1 -0
  103. package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
  104. package/dist/cjs/components/toolbar/index.js +1 -0
  105. package/dist/cjs/components/toolbar/text-format-selector.d.ts +9 -0
  106. package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -1
  107. package/dist/cjs/components/toolbar/text-format-selector.js +15 -3
  108. package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
  109. package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
  110. package/dist/cjs/components/toolbar/text-horizontal-align-selector.js +23 -4
  111. package/dist/cjs/components/watch-window/index.d.ts +25 -0
  112. package/dist/cjs/components/watch-window/index.d.ts.map +1 -0
  113. package/dist/cjs/components/watch-window/index.js +63 -0
  114. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  115. package/dist/cjs/hooks/use-cell-renderer.js +17 -6
  116. package/dist/cjs/hooks/use-editable.d.ts +11 -2
  117. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  118. package/dist/cjs/hooks/use-editable.js +8 -0
  119. package/dist/cjs/hooks/use-editor-submit.d.ts +32 -3
  120. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  121. package/dist/cjs/hooks/use-editor-submit.js +111 -2
  122. package/dist/cjs/hooks/use-get-tooltip.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-get-tooltip.js +7 -2
  124. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  125. package/dist/cjs/hooks/use-keyboard-handler.js +27 -14
  126. package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -2
  127. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  128. package/dist/cjs/hooks/use-selection-renderer.js +21 -4
  129. package/dist/cjs/hooks/use-selection.d.ts +54 -4
  130. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  131. package/dist/cjs/hooks/use-selection.js +232 -37
  132. package/dist/cjs/index.d.ts +12 -0
  133. package/dist/cjs/index.d.ts.map +1 -1
  134. package/dist/cjs/index.js +11 -0
  135. package/dist/cjs/release-date.js +1 -1
  136. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  137. package/dist/cjs/types.d.ts +156 -5
  138. package/dist/cjs/types.d.ts.map +1 -1
  139. package/dist/cjs/types.js +19 -1
  140. package/dist/esm/api/excel-validation-kinds.d.ts +71 -0
  141. package/dist/esm/api/excel-validation-kinds.d.ts.map +1 -0
  142. package/dist/esm/api/excel-validation-kinds.js +287 -0
  143. package/dist/esm/api/fill-series.d.ts +38 -0
  144. package/dist/esm/api/fill-series.d.ts.map +1 -0
  145. package/dist/esm/api/fill-series.js +78 -0
  146. package/dist/esm/api/go-to-special.d.ts +32 -0
  147. package/dist/esm/api/go-to-special.d.ts.map +1 -0
  148. package/dist/esm/api/go-to-special.js +96 -0
  149. package/dist/esm/api/spreadsheet-api.d.ts +6 -2
  150. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
  151. package/dist/esm/api/spreadsheet-api.js +8 -3
  152. package/dist/esm/api/validation-tooltip.d.ts +17 -0
  153. package/dist/esm/api/validation-tooltip.d.ts.map +1 -0
  154. package/dist/esm/api/validation-tooltip.js +34 -0
  155. package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts +28 -0
  156. package/dist/esm/atoms/advanced-filter-dialog.atom.d.ts.map +1 -0
  157. package/dist/esm/atoms/advanced-filter-dialog.atom.js +21 -0
  158. package/dist/esm/atoms/fill-options.atom.d.ts +36 -0
  159. package/dist/esm/atoms/fill-options.atom.d.ts.map +1 -0
  160. package/dist/esm/atoms/fill-options.atom.js +5 -0
  161. package/dist/esm/atoms/fill-series-dialog.atom.d.ts +26 -0
  162. package/dist/esm/atoms/fill-series-dialog.atom.d.ts.map +1 -0
  163. package/dist/esm/atoms/fill-series-dialog.atom.js +9 -0
  164. package/dist/esm/atoms/go-to-dialog.atom.d.ts +11 -1
  165. package/dist/esm/atoms/go-to-dialog.atom.d.ts.map +1 -1
  166. package/dist/esm/atoms/goal-seek-dialog.atom.d.ts +29 -0
  167. package/dist/esm/atoms/goal-seek-dialog.atom.d.ts.map +1 -0
  168. package/dist/esm/atoms/goal-seek-dialog.atom.js +21 -0
  169. package/dist/esm/atoms/index.d.ts +3 -0
  170. package/dist/esm/atoms/index.d.ts.map +1 -1
  171. package/dist/esm/atoms/index.js +3 -0
  172. package/dist/esm/atoms/subtotal-dialog.atom.d.ts +39 -0
  173. package/dist/esm/atoms/subtotal-dialog.atom.d.ts.map +1 -0
  174. package/dist/esm/atoms/subtotal-dialog.atom.js +21 -0
  175. package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts +34 -0
  176. package/dist/esm/atoms/text-to-columns-dialog.atom.d.ts.map +1 -0
  177. package/dist/esm/atoms/text-to-columns-dialog.atom.js +25 -0
  178. package/dist/esm/atoms/watch-window.atom.d.ts +37 -0
  179. package/dist/esm/atoms/watch-window.atom.d.ts.map +1 -0
  180. package/dist/esm/atoms/watch-window.atom.js +37 -0
  181. package/dist/esm/components/advanced-filter-dialog/index.d.ts +28 -0
  182. package/dist/esm/components/advanced-filter-dialog/index.d.ts.map +1 -0
  183. package/dist/esm/components/advanced-filter-dialog/index.js +125 -0
  184. package/dist/esm/components/calculation-options-dialog/index.d.ts +33 -0
  185. package/dist/esm/components/calculation-options-dialog/index.d.ts.map +1 -0
  186. package/dist/esm/components/calculation-options-dialog/index.js +61 -0
  187. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  188. package/dist/esm/components/canvas-grid/index.js +266 -26
  189. package/dist/esm/components/canvas-grid/typings.d.ts +31 -5
  190. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  191. package/dist/esm/components/cell/alignment.d.ts +30 -0
  192. package/dist/esm/components/cell/alignment.d.ts.map +1 -1
  193. package/dist/esm/components/cell/alignment.js +51 -0
  194. package/dist/esm/components/cell/index.d.ts.map +1 -1
  195. package/dist/esm/components/cell/index.js +16 -8
  196. package/dist/esm/components/cell-diff/index.d.ts +3 -2
  197. package/dist/esm/components/cell-diff/index.d.ts.map +1 -1
  198. package/dist/esm/components/cell-editor/helpers.d.ts +9 -0
  199. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  200. package/dist/esm/components/cell-editor/helpers.js +6 -0
  201. package/dist/esm/components/cell-editor/helpers.spec.js +15 -1
  202. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  203. package/dist/esm/components/cell-editor/index.js +8 -4
  204. package/dist/esm/components/context-menu/index.d.ts +6 -1
  205. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  206. package/dist/esm/components/context-menu/index.js +139 -4
  207. package/dist/esm/components/embeds/embed-component.d.ts.map +1 -1
  208. package/dist/esm/components/embeds/embed-component.js +17 -1
  209. package/dist/esm/components/fill-series-dialog/index.d.ts +29 -0
  210. package/dist/esm/components/fill-series-dialog/index.d.ts.map +1 -0
  211. package/dist/esm/components/fill-series-dialog/index.js +151 -0
  212. package/dist/esm/components/go-to-dialog/index.d.ts +11 -1
  213. package/dist/esm/components/go-to-dialog/index.d.ts.map +1 -1
  214. package/dist/esm/components/go-to-dialog/index.js +63 -23
  215. package/dist/esm/components/goal-seek-dialog/index.d.ts +32 -0
  216. package/dist/esm/components/goal-seek-dialog/index.d.ts.map +1 -0
  217. package/dist/esm/components/goal-seek-dialog/index.js +125 -0
  218. package/dist/esm/components/selection/fill-options-menu.d.ts +32 -0
  219. package/dist/esm/components/selection/fill-options-menu.d.ts.map +1 -0
  220. package/dist/esm/components/selection/fill-options-menu.js +63 -0
  221. package/dist/esm/components/selection/index.d.ts +1 -1
  222. package/dist/esm/components/selection/index.d.ts.map +1 -1
  223. package/dist/esm/components/selection/index.js +4 -2
  224. package/dist/esm/components/selection/types.d.ts +11 -1
  225. package/dist/esm/components/selection/types.d.ts.map +1 -1
  226. package/dist/esm/components/subtotal-dialog/index.d.ts +30 -0
  227. package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -0
  228. package/dist/esm/components/subtotal-dialog/index.js +115 -0
  229. package/dist/esm/components/text-to-columns-dialog/index.d.ts +37 -0
  230. package/dist/esm/components/text-to-columns-dialog/index.d.ts.map +1 -0
  231. package/dist/esm/components/text-to-columns-dialog/index.js +147 -0
  232. package/dist/esm/components/toolbar/background-color-selector.d.ts +13 -1
  233. package/dist/esm/components/toolbar/background-color-selector.d.ts.map +1 -1
  234. package/dist/esm/components/toolbar/background-color-selector.js +61 -11
  235. package/dist/esm/components/toolbar/cell-style-selector.d.ts +15 -2
  236. package/dist/esm/components/toolbar/cell-style-selector.d.ts.map +1 -1
  237. package/dist/esm/components/toolbar/cell-style-selector.js +46 -2
  238. package/dist/esm/components/toolbar/fill-selectors.d.ts +49 -0
  239. package/dist/esm/components/toolbar/fill-selectors.d.ts.map +1 -0
  240. package/dist/esm/components/toolbar/fill-selectors.js +162 -0
  241. package/dist/esm/components/toolbar/index.d.ts +1 -0
  242. package/dist/esm/components/toolbar/index.d.ts.map +1 -1
  243. package/dist/esm/components/toolbar/index.js +1 -0
  244. package/dist/esm/components/toolbar/text-format-selector.d.ts +9 -0
  245. package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -1
  246. package/dist/esm/components/toolbar/text-format-selector.js +14 -2
  247. package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts +8 -0
  248. package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -1
  249. package/dist/esm/components/toolbar/text-horizontal-align-selector.js +21 -5
  250. package/dist/esm/components/watch-window/index.d.ts +25 -0
  251. package/dist/esm/components/watch-window/index.d.ts.map +1 -0
  252. package/dist/esm/components/watch-window/index.js +54 -0
  253. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  254. package/dist/esm/hooks/use-cell-renderer.js +17 -6
  255. package/dist/esm/hooks/use-editable.d.ts +11 -2
  256. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  257. package/dist/esm/hooks/use-editable.js +8 -0
  258. package/dist/esm/hooks/use-editor-submit.d.ts +32 -3
  259. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  260. package/dist/esm/hooks/use-editor-submit.js +82 -3
  261. package/dist/esm/hooks/use-get-tooltip.d.ts.map +1 -1
  262. package/dist/esm/hooks/use-get-tooltip.js +7 -2
  263. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  264. package/dist/esm/hooks/use-keyboard-handler.js +27 -14
  265. package/dist/esm/hooks/use-selection-renderer.d.ts +13 -2
  266. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  267. package/dist/esm/hooks/use-selection-renderer.js +22 -5
  268. package/dist/esm/hooks/use-selection.d.ts +54 -4
  269. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  270. package/dist/esm/hooks/use-selection.js +220 -36
  271. package/dist/esm/index.d.ts +12 -0
  272. package/dist/esm/index.d.ts.map +1 -1
  273. package/dist/esm/index.js +11 -0
  274. package/dist/esm/release-date.js +1 -1
  275. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  276. package/dist/esm/types.d.ts +156 -5
  277. package/dist/esm/types.d.ts.map +1 -1
  278. package/dist/esm/types.js +18 -0
  279. package/dist/spreadsheet.min.css +1 -1
  280. package/package.json +7 -7
@@ -7,6 +7,9 @@ import { scheduleImmediatePriorityCallback, scheduleNormalPriorityCallback, } fr
7
7
  import { DEFAULT_ARRAY } from "../config";
8
8
  import { isMac } from "../helpers";
9
9
  import { useCallbackRef } from "./use-callback-ref";
10
+ /** Ctrl on every platform; Cmd is accepted as an alias on macOS (Excel for Mac uses Ctrl). */
11
+ const isFillToggleModifier = (e) => e.ctrlKey || e.metaKey;
12
+ const fillGestureOptions = (e) => e.ctrlKey || e.metaKey ? { modifier: "toggle" } : undefined;
10
13
  const defaultIsHidden = () => false;
11
14
  const defaultSelectionSpan = () => true;
12
15
  const getPossibleActiveCellFromSelections = (selections) => {
@@ -41,16 +44,81 @@ const boundsSubsetOfSelection = (range, selection) => {
41
44
  range.startColumnIndex >= selection.startColumnIndex &&
42
45
  range.endColumnIndex <= selection.endColumnIndex);
43
46
  };
47
+ const cellInRange = (cell, range) => cell.rowIndex >= range.startRowIndex &&
48
+ cell.rowIndex <= range.endRowIndex &&
49
+ cell.columnIndex >= range.startColumnIndex &&
50
+ cell.columnIndex <= range.endColumnIndex;
51
+ /**
52
+ * Resolve a fill-handle drag to a shrink of `selection` (Excel "drag back inside the selection").
53
+ * `coords` is the cell under the pointer. A shrink needs a multi-cell selection and a pointer that
54
+ * is inside it but short of its bottom-right corner along at least one axis; the axis with the
55
+ * larger travel wins (rows first on a tie), mirroring how a fill picks its direction. Returns
56
+ * `undefined` when the drag is not a shrink (outside the selection, single cell, or still at the
57
+ * corner) — the caller then treats it as a regular fill.
58
+ */
59
+ const fillShrinkFor = (selection, coords) => {
60
+ const isSingleCell = selection.startRowIndex === selection.endRowIndex &&
61
+ selection.startColumnIndex === selection.endColumnIndex;
62
+ if (isSingleCell || !cellInRange(coords, selection))
63
+ return undefined;
64
+ const rowsExcluded = selection.endRowIndex - coords.rowIndex;
65
+ const colsExcluded = selection.endColumnIndex - coords.columnIndex;
66
+ if (rowsExcluded <= 0 && colsExcluded <= 0)
67
+ return undefined;
68
+ if (rowsExcluded >= colsExcluded) {
69
+ return {
70
+ clearRange: { ...selection, startRowIndex: coords.rowIndex + 1 },
71
+ remaining: { ...selection, endRowIndex: coords.rowIndex },
72
+ };
73
+ }
74
+ return {
75
+ clearRange: { ...selection, startColumnIndex: coords.columnIndex + 1 },
76
+ remaining: { ...selection, endColumnIndex: coords.columnIndex },
77
+ };
78
+ };
44
79
  /**
45
80
  * Hook to enable selection in datagrid
46
81
  * @param initialSelection
47
82
  */
48
- export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount = 0, rowCount = 0, selectionPolicy = "multiple", newSelectionMode = "clear", allowDeselectSelection = true, onFill, isHiddenRow = defaultIsHidden, isHiddenColumn = defaultIsHidden, alwaysScrollToActiveCell = true, selectionTopBound = 0, selectionBottomBound = rowCount, selectionLeftBound = 0, selectionRightBound = columnCount, mouseDownInterceptor, mouseMoveInterceptor, mergedCells = DEFAULT_ARRAY, canSelectionSpanMergedCells = defaultSelectionSpan, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation = false, }) => {
83
+ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selections, onChangeSelections, columnCount = 0, rowCount = 0, selectionPolicy = "multiple", newSelectionMode = "clear", allowDeselectSelection = true, onFill, onFillHandleRelease, onFillShrink, isHiddenRow = defaultIsHidden, isHiddenColumn = defaultIsHidden, alwaysScrollToActiveCell = true, selectionTopBound = 0, selectionBottomBound = rowCount, selectionLeftBound = 0, selectionRightBound = columnCount, mouseDownInterceptor, mouseMoveInterceptor, mergedCells = DEFAULT_ARRAY, canSelectionSpanMergedCells = defaultSelectionSpan, getValue, onMoveSelection, getCellCoordsFromOffset, getCellBounds, getViewPort, focus, scrollToCell, isMergedCell, enableSelectOnEnterKey, formulaMode, isTouchDevice, getDataRowCount, isRowHeader, isColumnHeader, enableDataBoundaryNavigation = false, }) => {
49
84
  const [fillSelection, setFillSelection] = useState();
85
+ const [fillShrink, setFillShrink] = useState();
86
+ const fillShrinkRef = useRef(undefined);
87
+ // Ctrl/Cmd state of the fill-handle drag, sampled on every mousemove (mouseup carries the
88
+ // modifier too, but a key released mid-drag should still count — Excel reads it at drop time,
89
+ // and the last move before the drop is the closest we get to that without a keyup listener).
90
+ const fillModifierRef = useRef(undefined);
50
91
  const selectionStart = useRef(null);
51
92
  const selectionEnd = useRef(null);
52
93
  const isSelecting = useRef(false);
53
94
  const isFilling = useRef(false);
95
+ /** Mouse button that grabbed the fill handle (a right-button drag opens the fill menu). */
96
+ const fillButtonRef = useRef("left");
97
+ /**
98
+ * One-shot, capture-phase `contextmenu` suppressor for a fill-handle
99
+ * gesture. Ctrl+click is the macOS context-menu gesture and a right-button
100
+ * release always fires `contextmenu`; neither may reach the grid's cell
101
+ * context menu while the user is dragging the fill handle.
102
+ */
103
+ const contextMenuSuppressorRef = useRef(null);
104
+ const releaseContextMenuSuppressor = useCallback(() => {
105
+ const handler = contextMenuSuppressorRef.current;
106
+ if (!handler)
107
+ return;
108
+ contextMenuSuppressorRef.current = null;
109
+ document.removeEventListener("contextmenu", handler, true);
110
+ }, []);
111
+ const suppressNextContextMenu = useCallback(() => {
112
+ if (contextMenuSuppressorRef.current)
113
+ return;
114
+ const handler = (e) => {
115
+ e.preventDefault();
116
+ e.stopPropagation();
117
+ releaseContextMenuSuppressor();
118
+ };
119
+ contextMenuSuppressorRef.current = handler;
120
+ document.addEventListener("contextmenu", handler, true);
121
+ }, [releaseContextMenuSuppressor]);
54
122
  const selectionsRef = useRef([]);
55
123
  const fillSelectionRef = useRef(undefined);
56
124
  const onChangeSelectionsRef = useCallbackRef(onChangeSelections);
@@ -81,6 +149,9 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
81
149
  useIsomorphicLayoutEffect(() => {
82
150
  fillSelectionRef.current = fillSelection;
83
151
  }, [fillSelection]);
152
+ useIsomorphicLayoutEffect(() => {
153
+ fillShrinkRef.current = fillShrink;
154
+ }, [fillShrink]);
84
155
  /* Check if cell is out of bounds */
85
156
  const isCellOutOfBounds = useCallback((cell) => {
86
157
  return cell.rowIndex < 0 || cell.columnIndex < 0;
@@ -1083,6 +1154,7 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1083
1154
  const coords = getCellCoordsFromOffset(e.clientX, e.clientY, false);
1084
1155
  if (!coords)
1085
1156
  return;
1157
+ fillModifierRef.current = fillGestureOptions(e);
1086
1158
  const selections = selectionsRef.current;
1087
1159
  let range = selectionFromStartEnd(activeCellRef.current, coords);
1088
1160
  const hasSelections = selections.length > 0;
@@ -1091,6 +1163,22 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1091
1163
  : getCellBounds(activeCellRef.current);
1092
1164
  if (!range)
1093
1165
  return;
1166
+ /**
1167
+ * Drag-back shrink (Excel): the handle sits at the selection's bottom-right corner; dragging
1168
+ * it up or left while staying INSIDE a multi-cell selection excludes the dragged-over rows
1169
+ * (or columns). Those cells are greyed now and cleared on release; the selection shrinks to
1170
+ * the rest. Dragging PAST the first row/column is an ordinary fill in that direction.
1171
+ */
1172
+ const shrink = hasSelections
1173
+ ? fillShrinkFor(activeCellBounds, coords)
1174
+ : undefined;
1175
+ if (shrink) {
1176
+ setFillSelection(undefined);
1177
+ setFillShrink(shrink);
1178
+ scrollToCell(coords);
1179
+ return;
1180
+ }
1181
+ setFillShrink(undefined);
1094
1182
  const direction = range.startRowIndex < activeCellBounds.startRowIndex
1095
1183
  ? Direction.Up
1096
1184
  : range.endRowIndex > activeCellBounds.endRowIndex
@@ -1144,24 +1232,56 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1144
1232
  selectionTopBound,
1145
1233
  ]);
1146
1234
  /**
1147
- * When user releases mouse on the fill handle
1235
+ * When user releases mouse on the fill handle. Excel reads the Ctrl toggle
1236
+ * at RELEASE (the user can press/let go of Ctrl mid-drag), so the modifier
1237
+ * comes from the mouseup event, not the mousedown.
1148
1238
  */
1149
- const handleFillMouseUp = useCallback(() => {
1239
+ const handleFillMouseUp = useCallback((e) => {
1150
1240
  isFilling.current = false;
1241
+ const toggle = isFillToggleModifier(e);
1242
+ const button = fillButtonRef.current;
1151
1243
  /* Remove listener */
1152
1244
  document.removeEventListener("mousemove", handleFillMouseMove);
1153
1245
  document.removeEventListener("mouseup", handleFillMouseUp);
1246
+ // The right-button (or macOS Ctrl+click) `contextmenu` event follows this
1247
+ // mouseup; keep swallowing it for one tick, then drop the suppressor so a
1248
+ // later, unrelated right-click still opens the cell context menu.
1249
+ setTimeout(releaseContextMenuSuppressor, 0);
1154
1250
  /* Exit early */
1155
1251
  if (!activeCellRef.current) {
1156
1252
  return;
1157
1253
  }
1158
1254
  // Active fill selection
1159
1255
  const fillSelection = fillSelectionRef.current;
1256
+ const shrink = fillShrinkRef.current;
1257
+ // Modifier for a drag-back shrink: the last move's state, else the release's.
1258
+ const gestureOptions = fillModifierRef.current ?? (toggle ? { modifier: "toggle" } : undefined);
1259
+ fillModifierRef.current = undefined;
1160
1260
  /* Update last selection */
1161
1261
  setFillSelection(undefined);
1262
+ setFillShrink(undefined);
1162
1263
  /* Use ref, as we are binding to document */
1163
1264
  const selections = selectionsRef.current;
1164
1265
  const activeCell = activeCellRef.current;
1266
+ /* Drag-back inside the selection: clear the excluded cells, keep the rest selected */
1267
+ if (activeCell && shrink) {
1268
+ focus();
1269
+ onFillShrink?.(sheetId, activeCell, shrink.clearRange, gestureOptions);
1270
+ const len = selections.length;
1271
+ const shrunkSelections = len
1272
+ ? selections.map((sel, i) => len - 1 === i ? { ...sel, range: shrink.remaining } : sel)
1273
+ : [{ range: shrink.remaining }];
1274
+ onChangeSelections?.(shrunkSelections);
1275
+ // The active cell normally anchors the surviving corner; if it fell in the cleared band,
1276
+ // move it to the remaining range's top-left so it never points at a deselected cell.
1277
+ if (!cellInRange(activeCell, shrink.remaining)) {
1278
+ onChangeActiveCell?.(sheetId, {
1279
+ rowIndex: shrink.remaining.startRowIndex,
1280
+ columnIndex: shrink.remaining.startColumnIndex,
1281
+ });
1282
+ }
1283
+ return;
1284
+ }
1165
1285
  if (!activeCell || !fillSelection) {
1166
1286
  return;
1167
1287
  }
@@ -1174,8 +1294,11 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1174
1294
  }
1175
1295
  /* Focus on the grid */
1176
1296
  focus();
1177
- /* Callback */
1178
- onFill?.(sheetId, activeCell, fillSelection, selections);
1297
+ /* Callback — a right-button drag fills nothing yet: the grid opens the
1298
+ * fill menu and issues `onFill` with the entry the user picks. */
1299
+ if (button === "left") {
1300
+ onFill?.(sheetId, activeCell, fillSelection, selections, undefined, undefined, toggle ? { modifier: "toggle" } : undefined);
1301
+ }
1179
1302
  /* Modify last selection */
1180
1303
  const curSelections = selectionsRef.current;
1181
1304
  const len = curSelections.length;
@@ -1191,14 +1314,40 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1191
1314
  })
1192
1315
  : [{ range: newBounds }];
1193
1316
  onChangeSelections?.(newSelections);
1194
- }, [focus, handleFillMouseMove, onChangeSelections, onFill, sheetId]);
1317
+ onFillHandleRelease?.({
1318
+ sheetId,
1319
+ activeCell,
1320
+ fillSelection,
1321
+ selections,
1322
+ toggle,
1323
+ button,
1324
+ });
1325
+ }, [
1326
+ focus,
1327
+ handleFillMouseMove,
1328
+ onChangeSelections,
1329
+ onChangeActiveCell,
1330
+ onFill,
1331
+ onFillHandleRelease,
1332
+ onFillShrink,
1333
+ releaseContextMenuSuppressor,
1334
+ sheetId,
1335
+ ]);
1195
1336
  const handleFillMouseDown = useCallback((e) => {
1196
1337
  e.stopPropagation();
1197
1338
  e.preventDefault();
1339
+ const isRightButton = e.button === MouseButtonCodes.right;
1340
+ fillButtonRef.current = isRightButton ? "right" : "left";
1341
+ // Ctrl+drag on the handle must never become the macOS Ctrl+click
1342
+ // context-menu gesture, and a right-button drag must not open the cell
1343
+ // context menu on release — swallow that gesture's `contextmenu`.
1344
+ if (isRightButton || isFillToggleModifier(e)) {
1345
+ suppressNextContextMenu();
1346
+ }
1198
1347
  isFilling.current = true;
1199
1348
  document.addEventListener("mousemove", handleFillMouseMove);
1200
1349
  document.addEventListener("mouseup", handleFillMouseUp);
1201
- }, [handleFillMouseMove, handleFillMouseUp]);
1350
+ }, [handleFillMouseMove, handleFillMouseUp, suppressNextContextMenu]);
1202
1351
  /**
1203
1352
  * Remove the last selection from state
1204
1353
  */
@@ -1444,10 +1593,17 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1444
1593
  // Add a ref. makeEditable renders way too often
1445
1594
  const handleKeyDownRef = useCallbackRef(handleKeyDown);
1446
1595
  /**
1447
- * Double-click fill handle - Excel standard behavior:
1448
- * 1. Look at adjacent column (left first, then right if empty)
1449
- * 2. Find last row with contiguous data in that column
1450
- * 3. Fill down to match that extent
1596
+ * Double-click fill handle Excel's AutoFill rules:
1597
+ * 1. Pick the adjacent column: the one LEFT of the selection when its cell on the selection's top
1598
+ * row is non-blank, else the one on the RIGHT; neither → nothing happens.
1599
+ * 2. Extent = that column's contiguous data block below the selection (End+Down semantics: a
1600
+ * blank ends the block; only a blank in the very first row below the selection is skipped,
1601
+ * and only when the row after it is non-blank).
1602
+ * 3. Never overwrite: the fill halts before the first pre-existing non-blank cell in the fill
1603
+ * column(s) themselves.
1604
+ * 4. Ctrl (Cmd on Mac) held → the same copy↔series inversion as a Ctrl+drag (`options.modifier`).
1605
+ * Scans are row-by-row through `getValue` and bounded by the sheet's data extent, so the cost is
1606
+ * O(rows of the adjacent block), never O(sheet).
1451
1607
  */
1452
1608
  const handleFillDoubleClick = useCallback((e) => {
1453
1609
  e.stopPropagation();
@@ -1465,33 +1621,58 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1465
1621
  const endRow = currentBounds.endRowIndex;
1466
1622
  const leftCol = currentBounds.startColumnIndex;
1467
1623
  const rightCol = currentBounds.endColumnIndex;
1468
- // Excel behavior:
1469
- // 1. Check if there's any data in adjacent columns (left or right)
1470
- // 2. If yes, fill down to the sheet's overall data extent (last row with any data)
1471
- let hasAdjacentData = false;
1472
- // Check for data in left adjacent column
1473
- if (leftCol > selectionLeftBound) {
1474
- const leftValue = getValue(sheetId, startRow, leftCol - 1);
1475
- if (!isNull(leftValue)) {
1476
- hasAdjacentData = true;
1477
- }
1624
+ const hasValue = (rowIndex, columnIndex) => !isNull(getValue(sheetId, rowIndex, columnIndex));
1625
+ // 1. Adjacent column: left first, then right judged on the selection's top row.
1626
+ let adjacentColumn;
1627
+ if (leftCol > selectionLeftBound && hasValue(startRow, leftCol - 1)) {
1628
+ adjacentColumn = leftCol - 1;
1478
1629
  }
1479
- // Check for data in right adjacent column
1480
- if (!hasAdjacentData && rightCol < selectionRightBound) {
1481
- const rightValue = getValue(sheetId, startRow, rightCol + 1);
1482
- if (!isNull(rightValue)) {
1483
- hasAdjacentData = true;
1484
- }
1630
+ else if (rightCol < selectionRightBound &&
1631
+ hasValue(startRow, rightCol + 1)) {
1632
+ adjacentColumn = rightCol + 1;
1485
1633
  }
1486
- // No adjacent data to reference
1487
- if (!hasAdjacentData)
1634
+ if (adjacentColumn === undefined)
1488
1635
  return;
1489
- // Use the sheet's data extent as the target row
1490
- // This matches Excel behavior where it fills to the last row with any data
1636
+ // The last row that can hold data bounds every scan below. `getDataRowCount` is the legacy
1637
+ // `sheetData.length` contract (rows are 1-based, so the count is lastDataRow + 1); the rnc
1638
+ // engine's windowed path answers with the same shape (its 1-based `sheet_extents` max_row + 1).
1491
1639
  const dataRowCount = getDataRowCount?.(sheetId);
1492
- const targetRow = dataRowCount !== undefined
1493
- ? Math.min(dataRowCount - 1, selectionBottomBound)
1494
- : endRow;
1640
+ const lastDataRow = Math.min(selectionBottomBound, dataRowCount !== undefined ? dataRowCount - 1 : selectionBottomBound);
1641
+ if (lastDataRow <= endRow)
1642
+ return;
1643
+ // 2. Walk the adjacent column's contiguous block below the selection.
1644
+ let adjacentEnd = endRow;
1645
+ let row = endRow + 1;
1646
+ if (!hasValue(row, adjacentColumn)) {
1647
+ // End+Down: skip exactly one blank directly below the selection when data resumes after it.
1648
+ if (row + 1 <= lastDataRow && hasValue(row + 1, adjacentColumn)) {
1649
+ row += 1;
1650
+ }
1651
+ else {
1652
+ return;
1653
+ }
1654
+ }
1655
+ while (row <= lastDataRow && hasValue(row, adjacentColumn)) {
1656
+ adjacentEnd = row;
1657
+ row += 1;
1658
+ }
1659
+ if (adjacentEnd <= endRow)
1660
+ return;
1661
+ // 3. Stop before the first pre-existing value in the fill column(s) — existing data is kept.
1662
+ let targetRow = adjacentEnd;
1663
+ for (let r = endRow + 1; r <= adjacentEnd; r++) {
1664
+ let occupied = false;
1665
+ for (let c = leftCol; c <= rightCol; c++) {
1666
+ if (hasValue(r, c)) {
1667
+ occupied = true;
1668
+ break;
1669
+ }
1670
+ }
1671
+ if (occupied) {
1672
+ targetRow = r - 1;
1673
+ break;
1674
+ }
1675
+ }
1495
1676
  // No additional rows to fill
1496
1677
  if (targetRow <= endRow)
1497
1678
  return;
@@ -1505,8 +1686,10 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1505
1686
  const newFillSelection = { range: fillRange };
1506
1687
  // Focus on the grid
1507
1688
  focus();
1508
- // Callback to perform the fill
1509
- onFill?.(sheetId, activeCell, newFillSelection, selections);
1689
+ // 4. Callback to perform the fill (Ctrl/Cmd on the double-click toggles
1690
+ // copy↔series exactly like a Ctrl+drag)
1691
+ const toggle = isFillToggleModifier(e);
1692
+ onFill?.(sheetId, activeCell, newFillSelection, selections, undefined, undefined, toggle ? { modifier: "toggle" } : undefined);
1510
1693
  // Update selection to the new range
1511
1694
  const curSelections = selectionsRef.current;
1512
1695
  const len = curSelections.length;
@@ -1548,6 +1731,7 @@ export const useSelection = ({ sheetId, activeCell, onChangeActiveCell, selectio
1548
1731
  onFillHandleMouseDown: handleFillMouseDown,
1549
1732
  onFillHandleDoubleClick: handleFillDoubleClick,
1550
1733
  fillSelection,
1734
+ fillShrink,
1551
1735
  clearLastSelection: handleClearLastSelection,
1552
1736
  modifySelection,
1553
1737
  selectAll,
@@ -8,11 +8,23 @@ export * from "./components/sheet-status";
8
8
  export * from "./components/cell-tooltip";
9
9
  export * from "./components/insert-function-dialog";
10
10
  export * from "./components/sort-range-dialog";
11
+ export * from "./components/fill-series-dialog";
12
+ export * from "./components/selection/fill-options-menu";
13
+ export * from "./api/fill-series";
14
+ export { type FillHandleRelease } from "./hooks/use-selection";
11
15
  export * from "./components/paste-special-dialog";
12
16
  export * from "./components/go-to-dialog";
13
17
  export * from "./components/evaluate-formula-dialog";
18
+ export * from "./components/watch-window";
19
+ export * from "./components/calculation-options-dialog";
14
20
  export { resolveGoToReference, type GoToResolverContext } from "./api/go-to";
21
+ export * from "./api/go-to-special";
22
+ export * from "./api/excel-validation-kinds";
15
23
  export * from "./components/remove-duplicates-dialog";
24
+ export * from "./components/text-to-columns-dialog";
25
+ export * from "./components/subtotal-dialog";
26
+ export * from "./components/goal-seek-dialog";
27
+ export * from "./components/advanced-filter-dialog";
16
28
  export * from "./components/validation-alert-dialog";
17
29
  export * from "./components/cell-input";
18
30
  export * from "./components/formula-bar";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.tsx"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.tsx"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0CAA0C,CAAC;AACzD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7E,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,sBAAsB,CAAC"}
package/dist/esm/index.js CHANGED
@@ -8,11 +8,22 @@ export * from "./components/sheet-status";
8
8
  export * from "./components/cell-tooltip";
9
9
  export * from "./components/insert-function-dialog";
10
10
  export * from "./components/sort-range-dialog";
11
+ export * from "./components/fill-series-dialog";
12
+ export * from "./components/selection/fill-options-menu";
13
+ export * from "./api/fill-series";
11
14
  export * from "./components/paste-special-dialog";
12
15
  export * from "./components/go-to-dialog";
13
16
  export * from "./components/evaluate-formula-dialog";
17
+ export * from "./components/watch-window";
18
+ export * from "./components/calculation-options-dialog";
14
19
  export { resolveGoToReference } from "./api/go-to";
20
+ export * from "./api/go-to-special";
21
+ export * from "./api/excel-validation-kinds";
15
22
  export * from "./components/remove-duplicates-dialog";
23
+ export * from "./components/text-to-columns-dialog";
24
+ export * from "./components/subtotal-dialog";
25
+ export * from "./components/goal-seek-dialog";
26
+ export * from "./components/advanced-filter-dialog";
16
27
  export * from "./components/validation-alert-dialog";
17
28
  export * from "./components/cell-input";
18
29
  export * from "./components/formula-bar";
@@ -1,3 +1,3 @@
1
1
  export const releaseDate =
2
2
  // @ts-ignore
3
- new Date("2026-09-16") ?? new Date("2025-06-18");
3
+ new Date("2026-09-17") ?? new Date("2025-06-18");
@@ -1 +1 @@
1
- {"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/fill-patterns.ts","../../api/font-loader.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table.ts","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/index.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/validation-alert.atom.ts","../../components/bottom-bar/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.spec.ts","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-function-dialog/index.tsx","../../components/loading-indicator/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/maybe.ts"],"version":"5.8.3"}
1
+ {"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/excel-validation-kinds.ts","../../api/fill-patterns.ts","../../api/fill-series.ts","../../api/font-loader.ts","../../api/go-to-special.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table.ts","../../api/validation-tooltip.tsx","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/advanced-filter-dialog.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/fill-options.atom.ts","../../atoms/fill-series-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/goal-seek-dialog.atom.ts","../../atoms/index.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/subtotal-dialog.atom.ts","../../atoms/text-to-columns-dialog.atom.ts","../../atoms/validation-alert.atom.ts","../../atoms/watch-window.atom.ts","../../components/advanced-filter-dialog/index.tsx","../../components/bottom-bar/index.tsx","../../components/calculation-options-dialog/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.spec.ts","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/fill-series-dialog/index.tsx","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/goal-seek-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-function-dialog/index.tsx","../../components/loading-indicator/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/fill-options-menu.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/subtotal-dialog/index.tsx","../../components/text-to-columns-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/fill-selectors.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../components/watch-window/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/maybe.ts"],"version":"5.8.3"}