@ishibashi0112/spreadsheet-grid-core 0.39.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 (305) hide show
  1. package/LICENSE +21 -0
  2. package/dist/controllers/autoHeightMeasurer.cjs +1 -0
  3. package/dist/controllers/autoHeightMeasurer.d.ts +30 -0
  4. package/dist/controllers/autoHeightMeasurer.js +74 -0
  5. package/dist/controllers/clipboardController.cjs +2 -0
  6. package/dist/controllers/clipboardController.d.ts +31 -0
  7. package/dist/controllers/clipboardController.js +88 -0
  8. package/dist/controllers/columnAutosizeRunner.cjs +1 -0
  9. package/dist/controllers/columnAutosizeRunner.d.ts +31 -0
  10. package/dist/controllers/columnAutosizeRunner.js +61 -0
  11. package/dist/controllers/columnHeaderDragController.cjs +1 -0
  12. package/dist/controllers/columnHeaderDragController.d.ts +44 -0
  13. package/dist/controllers/columnHeaderDragController.js +256 -0
  14. package/dist/controllers/columnMenuController.cjs +1 -0
  15. package/dist/controllers/columnMenuController.d.ts +49 -0
  16. package/dist/controllers/columnMenuController.js +110 -0
  17. package/dist/controllers/contextMenuController.cjs +1 -0
  18. package/dist/controllers/contextMenuController.d.ts +30 -0
  19. package/dist/controllers/contextMenuController.js +65 -0
  20. package/dist/controllers/debouncedValueStore.cjs +1 -0
  21. package/dist/controllers/debouncedValueStore.d.ts +11 -0
  22. package/dist/controllers/debouncedValueStore.js +22 -0
  23. package/dist/controllers/editController.cjs +1 -0
  24. package/dist/controllers/editController.d.ts +27 -0
  25. package/dist/controllers/editController.js +76 -0
  26. package/dist/controllers/filterPopoverController.cjs +1 -0
  27. package/dist/controllers/filterPopoverController.d.ts +53 -0
  28. package/dist/controllers/filterPopoverController.js +146 -0
  29. package/dist/controllers/globalFilteredOrder.cjs +1 -0
  30. package/dist/controllers/globalFilteredOrder.d.ts +38 -0
  31. package/dist/controllers/globalFilteredOrder.js +78 -0
  32. package/dist/controllers/historyController.cjs +1 -0
  33. package/dist/controllers/historyController.d.ts +28 -0
  34. package/dist/controllers/historyController.js +52 -0
  35. package/dist/controllers/keyboardController.cjs +1 -0
  36. package/dist/controllers/keyboardController.d.ts +36 -0
  37. package/dist/controllers/keyboardController.js +111 -0
  38. package/dist/controllers/panelHeaderDragController.cjs +1 -0
  39. package/dist/controllers/panelHeaderDragController.d.ts +21 -0
  40. package/dist/controllers/panelHeaderDragController.js +32 -0
  41. package/dist/controllers/pointerInteractionsController.cjs +1 -0
  42. package/dist/controllers/pointerInteractionsController.d.ts +74 -0
  43. package/dist/controllers/pointerInteractionsController.js +262 -0
  44. package/dist/controllers/popoverSupport.cjs +1 -0
  45. package/dist/controllers/popoverSupport.d.ts +18 -0
  46. package/dist/controllers/popoverSupport.js +25 -0
  47. package/dist/controllers/rowDragController.cjs +1 -0
  48. package/dist/controllers/rowDragController.d.ts +40 -0
  49. package/dist/controllers/rowDragController.js +192 -0
  50. package/dist/controllers/scrollSyncController.cjs +1 -0
  51. package/dist/controllers/scrollSyncController.d.ts +17 -0
  52. package/dist/controllers/scrollSyncController.js +51 -0
  53. package/dist/controllers/selectOptionsCollector.cjs +1 -0
  54. package/dist/controllers/selectOptionsCollector.d.ts +31 -0
  55. package/dist/controllers/selectOptionsCollector.js +88 -0
  56. package/dist/controllers/serverSideRowModel.cjs +1 -0
  57. package/dist/controllers/serverSideRowModel.d.ts +36 -0
  58. package/dist/controllers/serverSideRowModel.js +153 -0
  59. package/dist/controllers/systemColorSchemeStore.cjs +1 -0
  60. package/dist/controllers/systemColorSchemeStore.d.ts +5 -0
  61. package/dist/controllers/systemColorSchemeStore.js +18 -0
  62. package/dist/controllers/toolPanelController.cjs +1 -0
  63. package/dist/controllers/toolPanelController.d.ts +36 -0
  64. package/dist/controllers/toolPanelController.js +112 -0
  65. package/dist/controllers/tooltipController.cjs +1 -0
  66. package/dist/controllers/tooltipController.d.ts +6 -0
  67. package/dist/controllers/tooltipController.js +75 -0
  68. package/dist/controllers/viewportSyncController.cjs +1 -0
  69. package/dist/controllers/viewportSyncController.d.ts +30 -0
  70. package/dist/controllers/viewportSyncController.js +40 -0
  71. package/dist/engine/columnCommands.cjs +1 -0
  72. package/dist/engine/columnCommands.d.ts +56 -0
  73. package/dist/engine/columnCommands.js +199 -0
  74. package/dist/engine/columnLayout.cjs +1 -0
  75. package/dist/engine/columnLayout.d.ts +43 -0
  76. package/dist/engine/columnLayout.js +91 -0
  77. package/dist/engine/createGridEngine.cjs +1 -0
  78. package/dist/engine/createGridEngine.d.ts +46 -0
  79. package/dist/engine/createGridEngine.js +52 -0
  80. package/dist/engine/filterPopoverCommands.cjs +1 -0
  81. package/dist/engine/filterPopoverCommands.d.ts +56 -0
  82. package/dist/engine/filterPopoverCommands.js +303 -0
  83. package/dist/engine/gridApi.cjs +1 -0
  84. package/dist/engine/gridApi.d.ts +61 -0
  85. package/dist/engine/gridApi.js +389 -0
  86. package/dist/engine/memo.cjs +1 -0
  87. package/dist/engine/memo.d.ts +2 -0
  88. package/dist/engine/memo.js +18 -0
  89. package/dist/engine/notifiers.cjs +1 -0
  90. package/dist/engine/notifiers.d.ts +35 -0
  91. package/dist/engine/notifiers.js +34 -0
  92. package/dist/engine/rowPipeline.cjs +1 -0
  93. package/dist/engine/rowPipeline.d.ts +50 -0
  94. package/dist/engine/rowPipeline.js +84 -0
  95. package/dist/engine/rowSelectionCommands.cjs +1 -0
  96. package/dist/engine/rowSelectionCommands.d.ts +21 -0
  97. package/dist/engine/rowSelectionCommands.js +57 -0
  98. package/dist/engine/verticalLayout.cjs +1 -0
  99. package/dist/engine/verticalLayout.d.ts +52 -0
  100. package/dist/engine/verticalLayout.js +60 -0
  101. package/dist/index.cjs +1 -0
  102. package/dist/index.d.ts +8 -0
  103. package/dist/index.js +5 -0
  104. package/dist/logic/aggregation.cjs +1 -0
  105. package/dist/logic/aggregation.d.ts +13 -0
  106. package/dist/logic/aggregation.js +28 -0
  107. package/dist/logic/autoScrollGeometry.cjs +1 -0
  108. package/dist/logic/autoScrollGeometry.d.ts +27 -0
  109. package/dist/logic/autoScrollGeometry.js +19 -0
  110. package/dist/logic/autoSizeOnData.cjs +1 -0
  111. package/dist/logic/autoSizeOnData.d.ts +10 -0
  112. package/dist/logic/autoSizeOnData.js +19 -0
  113. package/dist/logic/cellOverflowTooltip.cjs +1 -0
  114. package/dist/logic/cellOverflowTooltip.d.ts +5 -0
  115. package/dist/logic/cellOverflowTooltip.js +4 -0
  116. package/dist/logic/checkboxEditor.cjs +1 -0
  117. package/dist/logic/checkboxEditor.d.ts +12 -0
  118. package/dist/logic/checkboxEditor.js +17 -0
  119. package/dist/logic/chunkedLoop.cjs +1 -0
  120. package/dist/logic/chunkedLoop.d.ts +8 -0
  121. package/dist/logic/chunkedLoop.js +18 -0
  122. package/dist/logic/clearCells.cjs +1 -0
  123. package/dist/logic/clearCells.d.ts +31 -0
  124. package/dist/logic/clearCells.js +91 -0
  125. package/dist/logic/columnAutosize.cjs +1 -0
  126. package/dist/logic/columnAutosize.d.ts +18 -0
  127. package/dist/logic/columnAutosize.js +150 -0
  128. package/dist/logic/columnFlex.cjs +1 -0
  129. package/dist/logic/columnFlex.d.ts +4 -0
  130. package/dist/logic/columnFlex.js +60 -0
  131. package/dist/logic/columnReset.cjs +1 -0
  132. package/dist/logic/columnReset.d.ts +7 -0
  133. package/dist/logic/columnReset.js +25 -0
  134. package/dist/logic/contextMenuTarget.cjs +1 -0
  135. package/dist/logic/contextMenuTarget.d.ts +4 -0
  136. package/dist/logic/contextMenuTarget.js +18 -0
  137. package/dist/logic/cx.cjs +1 -0
  138. package/dist/logic/cx.d.ts +1 -0
  139. package/dist/logic/cx.js +6 -0
  140. package/dist/logic/dateFilterCondition.cjs +1 -0
  141. package/dist/logic/dateFilterCondition.d.ts +26 -0
  142. package/dist/logic/dateFilterCondition.js +110 -0
  143. package/dist/logic/dateFilterPresets.cjs +1 -0
  144. package/dist/logic/dateFilterPresets.d.ts +13 -0
  145. package/dist/logic/dateFilterPresets.js +30 -0
  146. package/dist/logic/dateFilterTree.cjs +1 -0
  147. package/dist/logic/dateFilterTree.d.ts +17 -0
  148. package/dist/logic/dateFilterTree.js +75 -0
  149. package/dist/logic/datePickerCalendar.cjs +1 -0
  150. package/dist/logic/datePickerCalendar.d.ts +12 -0
  151. package/dist/logic/datePickerCalendar.js +41 -0
  152. package/dist/logic/detailRow.cjs +1 -0
  153. package/dist/logic/detailRow.d.ts +38 -0
  154. package/dist/logic/detailRow.js +78 -0
  155. package/dist/logic/domGuards.cjs +1 -0
  156. package/dist/logic/domGuards.d.ts +7 -0
  157. package/dist/logic/domGuards.js +4 -0
  158. package/dist/logic/editorValues.cjs +1 -0
  159. package/dist/logic/editorValues.d.ts +5 -0
  160. package/dist/logic/editorValues.js +32 -0
  161. package/dist/logic/exportCsv.cjs +3 -0
  162. package/dist/logic/exportCsv.d.ts +12 -0
  163. package/dist/logic/exportCsv.js +19 -0
  164. package/dist/logic/exportData.cjs +1 -0
  165. package/dist/logic/exportData.d.ts +9 -0
  166. package/dist/logic/exportData.js +24 -0
  167. package/dist/logic/exportScope.cjs +1 -0
  168. package/dist/logic/exportScope.d.ts +3 -0
  169. package/dist/logic/exportScope.js +4 -0
  170. package/dist/logic/filterPopoverLayout.cjs +1 -0
  171. package/dist/logic/filterPopoverLayout.d.ts +17 -0
  172. package/dist/logic/filterPopoverLayout.js +13 -0
  173. package/dist/logic/filterPopoverOutsideClick.cjs +1 -0
  174. package/dist/logic/filterPopoverOutsideClick.d.ts +2 -0
  175. package/dist/logic/filterPopoverOutsideClick.js +4 -0
  176. package/dist/logic/filterSummary.cjs +1 -0
  177. package/dist/logic/filterSummary.d.ts +3 -0
  178. package/dist/logic/filterSummary.js +22 -0
  179. package/dist/logic/filtering.cjs +1 -0
  180. package/dist/logic/filtering.d.ts +33 -0
  181. package/dist/logic/filtering.js +313 -0
  182. package/dist/logic/geometry.cjs +1 -0
  183. package/dist/logic/geometry.d.ts +72 -0
  184. package/dist/logic/geometry.js +161 -0
  185. package/dist/logic/gridState.cjs +1 -0
  186. package/dist/logic/gridState.d.ts +13 -0
  187. package/dist/logic/gridState.js +165 -0
  188. package/dist/logic/grouping.cjs +1 -0
  189. package/dist/logic/grouping.d.ts +34 -0
  190. package/dist/logic/grouping.js +93 -0
  191. package/dist/logic/history.cjs +1 -0
  192. package/dist/logic/history.d.ts +16 -0
  193. package/dist/logic/history.js +34 -0
  194. package/dist/logic/inferFilterType.cjs +1 -0
  195. package/dist/logic/inferFilterType.d.ts +19 -0
  196. package/dist/logic/inferFilterType.js +54 -0
  197. package/dist/logic/numberFilterCondition.cjs +1 -0
  198. package/dist/logic/numberFilterCondition.d.ts +21 -0
  199. package/dist/logic/numberFilterCondition.js +130 -0
  200. package/dist/logic/panelDragGeometry.cjs +1 -0
  201. package/dist/logic/panelDragGeometry.d.ts +13 -0
  202. package/dist/logic/panelDragGeometry.js +10 -0
  203. package/dist/logic/rowHeightStore.cjs +1 -0
  204. package/dist/logic/rowHeightStore.d.ts +13 -0
  205. package/dist/logic/rowHeightStore.js +41 -0
  206. package/dist/logic/rowReorder.cjs +1 -0
  207. package/dist/logic/rowReorder.d.ts +18 -0
  208. package/dist/logic/rowReorder.js +22 -0
  209. package/dist/logic/rowSelection.cjs +1 -0
  210. package/dist/logic/rowSelection.d.ts +16 -0
  211. package/dist/logic/rowSelection.js +49 -0
  212. package/dist/logic/scrollHint.cjs +1 -0
  213. package/dist/logic/scrollHint.d.ts +41 -0
  214. package/dist/logic/scrollHint.js +66 -0
  215. package/dist/logic/scrollTargets.cjs +1 -0
  216. package/dist/logic/scrollTargets.d.ts +22 -0
  217. package/dist/logic/scrollTargets.js +24 -0
  218. package/dist/logic/selectEditorState.cjs +1 -0
  219. package/dist/logic/selectEditorState.d.ts +28 -0
  220. package/dist/logic/selectEditorState.js +31 -0
  221. package/dist/logic/selectOptions.cjs +1 -0
  222. package/dist/logic/selectOptions.d.ts +9 -0
  223. package/dist/logic/selectOptions.js +23 -0
  224. package/dist/logic/serverSideBlocks.cjs +1 -0
  225. package/dist/logic/serverSideBlocks.d.ts +2 -0
  226. package/dist/logic/serverSideBlocks.js +14 -0
  227. package/dist/logic/serverSideCache.cjs +1 -0
  228. package/dist/logic/serverSideCache.d.ts +14 -0
  229. package/dist/logic/serverSideCache.js +42 -0
  230. package/dist/logic/serverSideEdits.cjs +1 -0
  231. package/dist/logic/serverSideEdits.d.ts +16 -0
  232. package/dist/logic/serverSideEdits.js +47 -0
  233. package/dist/logic/serverSideQuery.cjs +1 -0
  234. package/dist/logic/serverSideQuery.d.ts +7 -0
  235. package/dist/logic/serverSideQuery.js +21 -0
  236. package/dist/logic/setFilterSearch.cjs +1 -0
  237. package/dist/logic/setFilterSearch.d.ts +14 -0
  238. package/dist/logic/setFilterSearch.js +14 -0
  239. package/dist/logic/setFilterSelection.cjs +1 -0
  240. package/dist/logic/setFilterSelection.d.ts +5 -0
  241. package/dist/logic/setFilterSelection.js +4 -0
  242. package/dist/logic/slotDom.cjs +1 -0
  243. package/dist/logic/slotDom.d.ts +8 -0
  244. package/dist/logic/slotDom.js +22 -0
  245. package/dist/logic/slotProps.cjs +1 -0
  246. package/dist/logic/slotProps.d.ts +18 -0
  247. package/dist/logic/slotProps.js +63 -0
  248. package/dist/logic/sorting.cjs +1 -0
  249. package/dist/logic/sorting.d.ts +11 -0
  250. package/dist/logic/sorting.js +96 -0
  251. package/dist/logic/textFilterCondition.cjs +1 -0
  252. package/dist/logic/textFilterCondition.d.ts +18 -0
  253. package/dist/logic/textFilterCondition.js +55 -0
  254. package/dist/logic/theme.cjs +1 -0
  255. package/dist/logic/theme.d.ts +3 -0
  256. package/dist/logic/theme.js +4 -0
  257. package/dist/logic/tooltipGeometry.cjs +1 -0
  258. package/dist/logic/tooltipGeometry.d.ts +19 -0
  259. package/dist/logic/tooltipGeometry.js +16 -0
  260. package/dist/logic/validation.cjs +1 -0
  261. package/dist/logic/validation.d.ts +14 -0
  262. package/dist/logic/validation.js +47 -0
  263. package/dist/logic/valueFormatters.cjs +1 -0
  264. package/dist/logic/valueFormatters.d.ts +9 -0
  265. package/dist/logic/valueFormatters.js +17 -0
  266. package/dist/logic/valueStore.cjs +1 -0
  267. package/dist/logic/valueStore.d.ts +6 -0
  268. package/dist/logic/valueStore.js +18 -0
  269. package/dist/logic/verticalGeometry.cjs +1 -0
  270. package/dist/logic/verticalGeometry.d.ts +58 -0
  271. package/dist/logic/verticalGeometry.js +90 -0
  272. package/dist/model/gridActions.cjs +1 -0
  273. package/dist/model/gridActions.d.ts +125 -0
  274. package/dist/model/gridActions.js +114 -0
  275. package/dist/model/gridReducer.cjs +1 -0
  276. package/dist/model/gridReducer.d.ts +4 -0
  277. package/dist/model/gridReducer.js +247 -0
  278. package/dist/model/gridSelectors.cjs +1 -0
  279. package/dist/model/gridSelectors.d.ts +40 -0
  280. package/dist/model/gridSelectors.js +68 -0
  281. package/dist/model/gridStore.cjs +1 -0
  282. package/dist/model/gridStore.d.ts +24 -0
  283. package/dist/model/gridStore.js +38 -0
  284. package/dist/model/gridTypes.core.cjs +1 -0
  285. package/dist/model/gridTypes.core.d.ts +797 -0
  286. package/dist/model/gridTypes.core.js +0 -0
  287. package/dist/model/gridTypes.unbound.cjs +1 -0
  288. package/dist/model/gridTypes.unbound.d.ts +31 -0
  289. package/dist/model/gridTypes.unbound.js +0 -0
  290. package/dist/testing/index.cjs +1 -0
  291. package/dist/testing/index.d.ts +5 -0
  292. package/dist/testing/index.js +51 -0
  293. package/dist/utils/clipboard.cjs +7 -0
  294. package/dist/utils/clipboard.d.ts +29 -0
  295. package/dist/utils/clipboard.js +110 -0
  296. package/dist/utils/excelColumnName.cjs +1 -0
  297. package/dist/utils/excelColumnName.d.ts +1 -0
  298. package/dist/utils/excelColumnName.js +9 -0
  299. package/dist/utils/permissions.cjs +1 -0
  300. package/dist/utils/permissions.d.ts +4 -0
  301. package/dist/utils/permissions.js +7 -0
  302. package/dist/utils/scheduler.cjs +1 -0
  303. package/dist/utils/scheduler.d.ts +1 -0
  304. package/dist/utils/scheduler.js +13 -0
  305. package/package.json +58 -0
@@ -0,0 +1,90 @@
1
+ //#region src/logic/verticalGeometry.ts
2
+ var e = 15e6, t = 5e4, n = (e, t, n, r) => e && t && n > 0 && n <= r, r = 1 << 20, i = (e, t) => ({
3
+ rowCount: e,
4
+ rowTop: (e) => e * t,
5
+ rowsHeight: (e, n) => (n - e + 1) * t,
6
+ totalBodyHeight: e * t,
7
+ rowAtContentY: (n) => Math.min(Math.max(Math.floor(n / t), 0), Math.max(e - 1, 0)),
8
+ cellHeight: () => t,
9
+ detailHeight: () => 0
10
+ }), a = (e, t) => {
11
+ let n = t.filter((t) => t.height > 0 && t.index >= 0 && t.index < e.rowCount).sort((e, t) => e.index - t.index), r = n.length, i = new Float64Array(r), a = new Float64Array(r + 1);
12
+ for (let e = 0; e < r; e += 1) i[e] = n[e].index, a[e + 1] = a[e] + n[e].height;
13
+ let o = a[r], { rowCount: s } = e, c = (e) => {
14
+ let t = 0, n = r;
15
+ for (; t < n;) {
16
+ let r = t + n >>> 1;
17
+ i[r] < e ? t = r + 1 : n = r;
18
+ }
19
+ return t;
20
+ }, l = (t) => {
21
+ let n = Math.min(Math.max(t, 0), s);
22
+ return (n === s ? e.totalBodyHeight : e.rowTop(n)) + a[c(n)];
23
+ };
24
+ return {
25
+ rowCount: s,
26
+ rowTop: l,
27
+ rowsHeight: (e, t) => l(t + 1) - l(e),
28
+ totalBodyHeight: e.totalBodyHeight + o,
29
+ rowAtContentY: (e) => {
30
+ if (s <= 0 || e <= 0) return 0;
31
+ let t = 0, n = s - 1;
32
+ for (; t < n;) {
33
+ let r = t + n + 1 >>> 1;
34
+ l(r) <= e ? t = r : n = r - 1;
35
+ }
36
+ return t;
37
+ },
38
+ cellHeight: (t) => e.cellHeight(t),
39
+ detailHeight: (e) => {
40
+ let t = c(e);
41
+ return t < r && i[t] === e ? a[t + 1] - a[t] : 0;
42
+ }
43
+ };
44
+ }, o = (e, t, n, r) => {
45
+ if (r < n) return null;
46
+ let i = Math.max(e, n), a = Math.min(t, r);
47
+ return i > a ? null : {
48
+ start: i,
49
+ end: a
50
+ };
51
+ }, s = (e, t) => e * t, c = (e, t) => t === 1 ? e : e / t, l = (e, t, n, r) => {
52
+ let i = t * (1 - n);
53
+ return r.rowAtContentY(e - i);
54
+ }, u = ({ rowCount: e, rowHeight: t, headerHeight: n, viewportHeight: i, scrollTop: a, overscan: o, maxBodyPx: s }) => {
55
+ let c = e * t, l = Math.min(c, s), u = Math.max(n + c - i, 0), d = Math.max(n + l - i, 0), f = d > 0 && c > l ? u / d : 1, p = Math.min(Math.max(a, 0), d), m = p * f, h = Math.ceil(i / t) + 1, g = Math.floor(m / t), _ = Math.max(g - o, 0), v = Math.min(g + h + o, e), y = f === 1 ? 0 : Math.floor(_ * t / r) * r, b = p - m + y, x = [], S = /* @__PURE__ */ new Set();
56
+ for (let e = _; e < v; e += 1) x.push({
57
+ index: e,
58
+ start: n + e * t - y
59
+ }), S.add(e);
60
+ return {
61
+ physicalBodyHeight: l,
62
+ logicalBodyHeight: c,
63
+ scaleFactor: f,
64
+ translateY: b,
65
+ windowBaseOffsetPx: y,
66
+ rows: x,
67
+ rowIndexSet: S
68
+ };
69
+ }, d = ({ headerHeight: e, viewportHeight: t, scrollTop: n, overscan: r }, i) => {
70
+ let a = i.rowCount, o = i.totalBodyHeight, s = o, c = Math.max(e + o - t, 0), l = Math.min(Math.max(n, 0), c), u = i.rowAtContentY(l), d = i.rowAtContentY(l + t), f = Math.max(u - r, 0), p = Math.min(d + r + 1, a), m = [], h = /* @__PURE__ */ new Set();
71
+ for (let t = f; t < p; t += 1) {
72
+ let n = {
73
+ index: t,
74
+ start: e + i.rowTop(t),
75
+ size: i.cellHeight(t)
76
+ }, r = i.detailHeight(t);
77
+ r > 0 && (n.detailSize = r), m.push(n), h.add(t);
78
+ }
79
+ return {
80
+ physicalBodyHeight: s,
81
+ logicalBodyHeight: o,
82
+ scaleFactor: 1,
83
+ translateY: 0,
84
+ windowBaseOffsetPx: 0,
85
+ rows: m,
86
+ rowIndexSet: h
87
+ };
88
+ };
89
+ //#endregion
90
+ export { t as AUTO_HEIGHT_MAX_ROWS, e as MAX_BODY_PX, r as WINDOW_BASE_CHUNK_PX, l as clientYToRowIndex, o as clipRowRangeToWindow, d as computeAutoHeightVerticalGeometry, u as computeVerticalGeometry, a as createDetailRowMetrics, i as createUniformRowMetrics, c as logicalToPhysicalScrollTop, s as physicalToLogicalScrollTop, n as shouldUseAutoHeight };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={activateCell:e=>({type:`cell/activate`,cell:e}),startSelection:e=>({type:`selection/start`,cell:e}),updateSelection:e=>({type:`selection/update`,cell:e}),startRowSelection:e=>({type:`rowSelection/start`,row:e}),updateRowSelection:e=>({type:`rowSelection/update`,row:e}),startColumnSelection:e=>({type:`columnSelection/start`,col:e}),updateColumnSelection:e=>({type:`columnSelection/update`,col:e}),endSelection:()=>({type:`selection/end`}),clearSelection:()=>({type:`selection/clear`}),startEdit:e=>({type:`edit/start`,cell:e}),stopEdit:()=>({type:`edit/stop`}),startColumnResize:(e,t,n,r,i)=>({type:`column/resizeStart`,columnKey:e,startX:t,startWidth:n,minWidth:r,maxWidth:i}),updateColumnResize:e=>({type:`column/resizeUpdate`,clientX:e}),endColumnResize:()=>({type:`column/resizeEnd`}),syncColumnWidths:e=>({type:`columnWidths/sync`,widths:e}),resetColumnWidths:e=>({type:`columnWidths/reset`,widths:e}),setGlobalFilter:e=>({type:`filter/setGlobal`,value:e}),setColumnFilter:(e,t)=>({type:`filter/setColumn`,columnKey:e,value:t}),clearColumnFilter:e=>({type:`filter/clearColumn`,columnKey:e}),resetAllFilters:()=>({type:`filter/resetAll`}),setAllFilters:e=>({type:`filter/setAll`,filters:e}),setSort:e=>({type:`sort/set`,entries:e}),clearSort:()=>({type:`sort/clear`}),setRowSelectionState:e=>({type:`rowSelect/set`,state:e}),toggleGroupCollapsed:e=>({type:`group/toggleCollapsed`,groupKey:e}),setGroupCollapsed:(e,t)=>({type:`group/setCollapsed`,groupKey:e,collapsed:t}),setCollapsedGroupKeys:e=>({type:`group/setCollapsedKeys`,keys:e}),toggleDetailRow:e=>({type:`detail/toggle`,rowKey:e}),setDetailRowExpanded:(e,t)=>({type:`detail/setExpanded`,rowKey:e,expanded:t}),setExpandedDetailRowKeys:e=>({type:`detail/setKeys`,keys:e})};exports.gridActions=e;
@@ -0,0 +1,125 @@
1
+ import type { CellCoord, ColumnFilterValue, GridFilterState, GridRowKey, GridSortEntry, RowSelectionState } from './gridTypes.unbound';
2
+ export type GridUiAction = {
3
+ type: 'cell/activate';
4
+ cell: CellCoord | null;
5
+ } | {
6
+ type: 'selection/start';
7
+ cell: CellCoord;
8
+ } | {
9
+ type: 'selection/update';
10
+ cell: CellCoord;
11
+ } | {
12
+ type: 'rowSelection/start';
13
+ row: number;
14
+ } | {
15
+ type: 'rowSelection/update';
16
+ row: number;
17
+ } | {
18
+ type: 'columnSelection/start';
19
+ col: number;
20
+ } | {
21
+ type: 'columnSelection/update';
22
+ col: number;
23
+ } | {
24
+ type: 'selection/end';
25
+ } | {
26
+ type: 'selection/clear';
27
+ } | {
28
+ type: 'edit/start';
29
+ cell: CellCoord;
30
+ } | {
31
+ type: 'edit/stop';
32
+ } | {
33
+ type: 'column/resizeStart';
34
+ columnKey: string;
35
+ startX: number;
36
+ startWidth: number;
37
+ minWidth: number;
38
+ maxWidth?: number;
39
+ } | {
40
+ type: 'column/resizeUpdate';
41
+ clientX: number;
42
+ } | {
43
+ type: 'column/resizeEnd';
44
+ } | {
45
+ type: 'columnWidths/sync';
46
+ widths: Record<string, number>;
47
+ } | {
48
+ type: 'columnWidths/reset';
49
+ widths: Record<string, number>;
50
+ } | {
51
+ type: 'filter/setGlobal';
52
+ value: string;
53
+ } | {
54
+ type: 'filter/setColumn';
55
+ columnKey: string;
56
+ value: ColumnFilterValue;
57
+ } | {
58
+ type: 'filter/clearColumn';
59
+ columnKey: string;
60
+ } | {
61
+ type: 'filter/resetAll';
62
+ } | {
63
+ type: 'filter/setAll';
64
+ filters: GridFilterState;
65
+ } | {
66
+ type: 'sort/set';
67
+ entries: GridSortEntry[];
68
+ } | {
69
+ type: 'sort/clear';
70
+ } | {
71
+ type: 'rowSelect/set';
72
+ state: RowSelectionState;
73
+ } | {
74
+ type: 'group/toggleCollapsed';
75
+ groupKey: string;
76
+ } | {
77
+ type: 'group/setCollapsed';
78
+ groupKey: string;
79
+ collapsed: boolean;
80
+ } | {
81
+ type: 'group/setCollapsedKeys';
82
+ keys: ReadonlySet<string>;
83
+ } | {
84
+ type: 'detail/toggle';
85
+ rowKey: GridRowKey;
86
+ } | {
87
+ type: 'detail/setExpanded';
88
+ rowKey: GridRowKey;
89
+ expanded: boolean;
90
+ } | {
91
+ type: 'detail/setKeys';
92
+ keys: ReadonlySet<GridRowKey>;
93
+ };
94
+ export declare const gridActions: {
95
+ activateCell: (cell: CellCoord | null) => GridUiAction;
96
+ startSelection: (cell: CellCoord) => GridUiAction;
97
+ updateSelection: (cell: CellCoord) => GridUiAction;
98
+ startRowSelection: (row: number) => GridUiAction;
99
+ updateRowSelection: (row: number) => GridUiAction;
100
+ startColumnSelection: (col: number) => GridUiAction;
101
+ updateColumnSelection: (col: number) => GridUiAction;
102
+ endSelection: () => GridUiAction;
103
+ clearSelection: () => GridUiAction;
104
+ startEdit: (cell: CellCoord) => GridUiAction;
105
+ stopEdit: () => GridUiAction;
106
+ startColumnResize: (columnKey: string, startX: number, startWidth: number, minWidth: number, maxWidth?: number) => GridUiAction;
107
+ updateColumnResize: (clientX: number) => GridUiAction;
108
+ endColumnResize: () => GridUiAction;
109
+ syncColumnWidths: (widths: Record<string, number>) => GridUiAction;
110
+ resetColumnWidths: (widths: Record<string, number>) => GridUiAction;
111
+ setGlobalFilter: (value: string) => GridUiAction;
112
+ setColumnFilter: (columnKey: string, value: ColumnFilterValue) => GridUiAction;
113
+ clearColumnFilter: (columnKey: string) => GridUiAction;
114
+ resetAllFilters: () => GridUiAction;
115
+ setAllFilters: (filters: GridFilterState) => GridUiAction;
116
+ setSort: (entries: GridSortEntry[]) => GridUiAction;
117
+ clearSort: () => GridUiAction;
118
+ setRowSelectionState: (state: RowSelectionState) => GridUiAction;
119
+ toggleGroupCollapsed: (groupKey: string) => GridUiAction;
120
+ setGroupCollapsed: (groupKey: string, collapsed: boolean) => GridUiAction;
121
+ setCollapsedGroupKeys: (keys: ReadonlySet<string>) => GridUiAction;
122
+ toggleDetailRow: (rowKey: GridRowKey) => GridUiAction;
123
+ setDetailRowExpanded: (rowKey: GridRowKey, expanded: boolean) => GridUiAction;
124
+ setExpandedDetailRowKeys: (keys: ReadonlySet<GridRowKey>) => GridUiAction;
125
+ };
@@ -0,0 +1,114 @@
1
+ //#region src/model/gridActions.ts
2
+ var e = {
3
+ activateCell: (e) => ({
4
+ type: "cell/activate",
5
+ cell: e
6
+ }),
7
+ startSelection: (e) => ({
8
+ type: "selection/start",
9
+ cell: e
10
+ }),
11
+ updateSelection: (e) => ({
12
+ type: "selection/update",
13
+ cell: e
14
+ }),
15
+ startRowSelection: (e) => ({
16
+ type: "rowSelection/start",
17
+ row: e
18
+ }),
19
+ updateRowSelection: (e) => ({
20
+ type: "rowSelection/update",
21
+ row: e
22
+ }),
23
+ startColumnSelection: (e) => ({
24
+ type: "columnSelection/start",
25
+ col: e
26
+ }),
27
+ updateColumnSelection: (e) => ({
28
+ type: "columnSelection/update",
29
+ col: e
30
+ }),
31
+ endSelection: () => ({ type: "selection/end" }),
32
+ clearSelection: () => ({ type: "selection/clear" }),
33
+ startEdit: (e) => ({
34
+ type: "edit/start",
35
+ cell: e
36
+ }),
37
+ stopEdit: () => ({ type: "edit/stop" }),
38
+ startColumnResize: (e, t, n, r, i) => ({
39
+ type: "column/resizeStart",
40
+ columnKey: e,
41
+ startX: t,
42
+ startWidth: n,
43
+ minWidth: r,
44
+ maxWidth: i
45
+ }),
46
+ updateColumnResize: (e) => ({
47
+ type: "column/resizeUpdate",
48
+ clientX: e
49
+ }),
50
+ endColumnResize: () => ({ type: "column/resizeEnd" }),
51
+ syncColumnWidths: (e) => ({
52
+ type: "columnWidths/sync",
53
+ widths: e
54
+ }),
55
+ resetColumnWidths: (e) => ({
56
+ type: "columnWidths/reset",
57
+ widths: e
58
+ }),
59
+ setGlobalFilter: (e) => ({
60
+ type: "filter/setGlobal",
61
+ value: e
62
+ }),
63
+ setColumnFilter: (e, t) => ({
64
+ type: "filter/setColumn",
65
+ columnKey: e,
66
+ value: t
67
+ }),
68
+ clearColumnFilter: (e) => ({
69
+ type: "filter/clearColumn",
70
+ columnKey: e
71
+ }),
72
+ resetAllFilters: () => ({ type: "filter/resetAll" }),
73
+ setAllFilters: (e) => ({
74
+ type: "filter/setAll",
75
+ filters: e
76
+ }),
77
+ setSort: (e) => ({
78
+ type: "sort/set",
79
+ entries: e
80
+ }),
81
+ clearSort: () => ({ type: "sort/clear" }),
82
+ setRowSelectionState: (e) => ({
83
+ type: "rowSelect/set",
84
+ state: e
85
+ }),
86
+ toggleGroupCollapsed: (e) => ({
87
+ type: "group/toggleCollapsed",
88
+ groupKey: e
89
+ }),
90
+ setGroupCollapsed: (e, t) => ({
91
+ type: "group/setCollapsed",
92
+ groupKey: e,
93
+ collapsed: t
94
+ }),
95
+ setCollapsedGroupKeys: (e) => ({
96
+ type: "group/setCollapsedKeys",
97
+ keys: e
98
+ }),
99
+ toggleDetailRow: (e) => ({
100
+ type: "detail/toggle",
101
+ rowKey: e
102
+ }),
103
+ setDetailRowExpanded: (e, t) => ({
104
+ type: "detail/setExpanded",
105
+ rowKey: e,
106
+ expanded: t
107
+ }),
108
+ setExpandedDetailRowKeys: (e) => ({
109
+ type: "detail/setKeys",
110
+ keys: e
111
+ })
112
+ };
113
+ //#endregion
114
+ export { e as gridActions };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/columnFlex.cjs"),t=require("../logic/rowSelection.cjs");var n=60,r=(e,t,n)=>Math.min(Math.max(e,t),n),i=t=>t.reduce((t,n)=>(e.isFlexingColumn(n)||(t[n.key]=n.width),t),{}),a=e=>({activeCell:null,selection:null,rowSelection:t.createEmptyRowSelection(),editingCell:null,dragState:null,columnWidths:i(e),filters:{globalText:``,columnFilters:{}},sort:[],collapsedGroupKeys:new Set,expandedDetailRowKeys:new Set}),o=(e,i)=>{switch(i.type){case`cell/activate`:return{...e,activeCell:i.cell};case`selection/start`:return{...e,activeCell:i.cell,selection:{type:`cell`,range:{start:i.cell,end:i.cell}},dragState:{type:`selection`,selectionKind:`cell`,anchor:i.cell}};case`rowSelection/start`:return{...e,activeCell:{row:i.row,col:e.activeCell?.col??0},selection:{type:`row`,startRow:i.row,endRow:i.row},dragState:{type:`selection`,selectionKind:`row`,anchorRow:i.row}};case`rowSelection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`row`||e.selection?.type===`row`&&e.selection.endRow===i.row?e:{...e,selection:{type:`row`,startRow:e.dragState.anchorRow,endRow:i.row}};case`selection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`cell`||e.selection?.type===`cell`&&e.selection.range.end.row===i.cell.row&&e.selection.range.end.col===i.cell.col?e:{...e,selection:{type:`cell`,range:{start:e.dragState.anchor,end:i.cell}}};case`columnSelection/start`:return{...e,activeCell:{row:e.activeCell?.row??0,col:i.col},selection:{type:`col`,startCol:i.col,endCol:i.col},dragState:{type:`selection`,selectionKind:`col`,anchorCol:i.col}};case`columnSelection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`col`||e.selection?.type===`col`&&e.selection.endCol===i.col?e:{...e,selection:{type:`col`,startCol:e.dragState.anchorCol,endCol:i.col}};case`selection/end`:return e.dragState?.type===`selection`?{...e,dragState:null}:e;case`selection/clear`:return{...e,selection:null,dragState:null};case`edit/start`:return{...e,editingCell:i.cell,activeCell:i.cell};case`edit/stop`:return{...e,editingCell:null};case`column/resizeStart`:return{...e,dragState:{type:`columnResize`,columnKey:i.columnKey,startX:i.startX,startWidth:i.startWidth,minWidth:i.minWidth||n,maxWidth:i.maxWidth??1/0}};case`column/resizeUpdate`:{if(e.dragState?.type!==`columnResize`)return e;let t=r(e.dragState.startWidth+(i.clientX-e.dragState.startX),e.dragState.minWidth,e.dragState.maxWidth);return e.columnWidths[e.dragState.columnKey]===t?e:{...e,columnWidths:{...e.columnWidths,[e.dragState.columnKey]:t}}}case`column/resizeEnd`:return e.dragState?.type===`columnResize`?{...e,dragState:null}:e;case`columnWidths/sync`:return{...e,columnWidths:{...e.columnWidths,...i.widths}};case`columnWidths/reset`:return{...e,columnWidths:i.widths};case`filter/setGlobal`:return{...e,filters:{...e.filters,globalText:i.value}};case`filter/setColumn`:return{...e,filters:{...e.filters,columnFilters:{...e.filters.columnFilters,[i.columnKey]:i.value}}};case`filter/clearColumn`:{let t={...e.filters.columnFilters};return delete t[i.columnKey],{...e,filters:{...e.filters,columnFilters:t}}}case`filter/resetAll`:return{...e,filters:{globalText:``,columnFilters:{}}};case`filter/setAll`:return{...e,filters:i.filters};case`sort/set`:return{...e,sort:i.entries};case`sort/clear`:return{...e,sort:[]};case`rowSelect/set`:return t.rowSelectionStateEquals(e.rowSelection,i.state)?e:{...e,rowSelection:i.state};case`group/toggleCollapsed`:{let t=new Set(e.collapsedGroupKeys);return t.has(i.groupKey)?t.delete(i.groupKey):t.add(i.groupKey),{...e,collapsedGroupKeys:t}}case`group/setCollapsed`:{if(e.collapsedGroupKeys.has(i.groupKey)===i.collapsed)return e;let t=new Set(e.collapsedGroupKeys);return i.collapsed?t.add(i.groupKey):t.delete(i.groupKey),{...e,collapsedGroupKeys:t}}case`group/setCollapsedKeys`:return i.keys===e.collapsedGroupKeys||i.keys.size===0&&e.collapsedGroupKeys.size===0?e:{...e,collapsedGroupKeys:i.keys};case`detail/toggle`:{let t=new Set(e.expandedDetailRowKeys);return t.has(i.rowKey)?t.delete(i.rowKey):t.add(i.rowKey),{...e,expandedDetailRowKeys:t}}case`detail/setExpanded`:{if(e.expandedDetailRowKeys.has(i.rowKey)===i.expanded)return e;let t=new Set(e.expandedDetailRowKeys);return i.expanded?t.add(i.rowKey):t.delete(i.rowKey),{...e,expandedDetailRowKeys:t}}case`detail/setKeys`:return i.keys===e.expandedDetailRowKeys||i.keys.size===0&&e.expandedDetailRowKeys.size===0?e:{...e,expandedDetailRowKeys:i.keys};default:return e}};exports.createInitialGridUiState=a,exports.gridUiReducer=o;
@@ -0,0 +1,4 @@
1
+ import type { GridUiAction } from './gridActions';
2
+ import type { GridColumn, GridUiState } from './gridTypes.unbound';
3
+ export declare const createInitialGridUiState: <T>(columns: GridColumn<T>[]) => GridUiState;
4
+ export declare const gridUiReducer: (state: GridUiState, action: GridUiAction) => GridUiState;
@@ -0,0 +1,247 @@
1
+ import { isFlexingColumn as e } from "../logic/columnFlex.js";
2
+ import { createEmptyRowSelection as t, rowSelectionStateEquals as n } from "../logic/rowSelection.js";
3
+ //#region src/model/gridReducer.ts
4
+ var r = 60, i = (e, t, n) => Math.min(Math.max(e, t), n), a = (t) => t.reduce((t, n) => (e(n) || (t[n.key] = n.width), t), {}), o = (e) => ({
5
+ activeCell: null,
6
+ selection: null,
7
+ rowSelection: t(),
8
+ editingCell: null,
9
+ dragState: null,
10
+ columnWidths: a(e),
11
+ filters: {
12
+ globalText: "",
13
+ columnFilters: {}
14
+ },
15
+ sort: [],
16
+ collapsedGroupKeys: /* @__PURE__ */ new Set(),
17
+ expandedDetailRowKeys: /* @__PURE__ */ new Set()
18
+ }), s = (e, t) => {
19
+ switch (t.type) {
20
+ case "cell/activate": return {
21
+ ...e,
22
+ activeCell: t.cell
23
+ };
24
+ case "selection/start": return {
25
+ ...e,
26
+ activeCell: t.cell,
27
+ selection: {
28
+ type: "cell",
29
+ range: {
30
+ start: t.cell,
31
+ end: t.cell
32
+ }
33
+ },
34
+ dragState: {
35
+ type: "selection",
36
+ selectionKind: "cell",
37
+ anchor: t.cell
38
+ }
39
+ };
40
+ case "rowSelection/start": return {
41
+ ...e,
42
+ activeCell: {
43
+ row: t.row,
44
+ col: e.activeCell?.col ?? 0
45
+ },
46
+ selection: {
47
+ type: "row",
48
+ startRow: t.row,
49
+ endRow: t.row
50
+ },
51
+ dragState: {
52
+ type: "selection",
53
+ selectionKind: "row",
54
+ anchorRow: t.row
55
+ }
56
+ };
57
+ case "rowSelection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "row" || e.selection?.type === "row" && e.selection.endRow === t.row ? e : {
58
+ ...e,
59
+ selection: {
60
+ type: "row",
61
+ startRow: e.dragState.anchorRow,
62
+ endRow: t.row
63
+ }
64
+ };
65
+ case "selection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "cell" || e.selection?.type === "cell" && e.selection.range.end.row === t.cell.row && e.selection.range.end.col === t.cell.col ? e : {
66
+ ...e,
67
+ selection: {
68
+ type: "cell",
69
+ range: {
70
+ start: e.dragState.anchor,
71
+ end: t.cell
72
+ }
73
+ }
74
+ };
75
+ case "columnSelection/start": return {
76
+ ...e,
77
+ activeCell: {
78
+ row: e.activeCell?.row ?? 0,
79
+ col: t.col
80
+ },
81
+ selection: {
82
+ type: "col",
83
+ startCol: t.col,
84
+ endCol: t.col
85
+ },
86
+ dragState: {
87
+ type: "selection",
88
+ selectionKind: "col",
89
+ anchorCol: t.col
90
+ }
91
+ };
92
+ case "columnSelection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "col" || e.selection?.type === "col" && e.selection.endCol === t.col ? e : {
93
+ ...e,
94
+ selection: {
95
+ type: "col",
96
+ startCol: e.dragState.anchorCol,
97
+ endCol: t.col
98
+ }
99
+ };
100
+ case "selection/end": return e.dragState?.type === "selection" ? {
101
+ ...e,
102
+ dragState: null
103
+ } : e;
104
+ case "selection/clear": return {
105
+ ...e,
106
+ selection: null,
107
+ dragState: null
108
+ };
109
+ case "edit/start": return {
110
+ ...e,
111
+ editingCell: t.cell,
112
+ activeCell: t.cell
113
+ };
114
+ case "edit/stop": return {
115
+ ...e,
116
+ editingCell: null
117
+ };
118
+ case "column/resizeStart": return {
119
+ ...e,
120
+ dragState: {
121
+ type: "columnResize",
122
+ columnKey: t.columnKey,
123
+ startX: t.startX,
124
+ startWidth: t.startWidth,
125
+ minWidth: t.minWidth || r,
126
+ maxWidth: t.maxWidth ?? Infinity
127
+ }
128
+ };
129
+ case "column/resizeUpdate": {
130
+ if (e.dragState?.type !== "columnResize") return e;
131
+ let n = i(e.dragState.startWidth + (t.clientX - e.dragState.startX), e.dragState.minWidth, e.dragState.maxWidth);
132
+ return e.columnWidths[e.dragState.columnKey] === n ? e : {
133
+ ...e,
134
+ columnWidths: {
135
+ ...e.columnWidths,
136
+ [e.dragState.columnKey]: n
137
+ }
138
+ };
139
+ }
140
+ case "column/resizeEnd": return e.dragState?.type === "columnResize" ? {
141
+ ...e,
142
+ dragState: null
143
+ } : e;
144
+ case "columnWidths/sync": return {
145
+ ...e,
146
+ columnWidths: {
147
+ ...e.columnWidths,
148
+ ...t.widths
149
+ }
150
+ };
151
+ case "columnWidths/reset": return {
152
+ ...e,
153
+ columnWidths: t.widths
154
+ };
155
+ case "filter/setGlobal": return {
156
+ ...e,
157
+ filters: {
158
+ ...e.filters,
159
+ globalText: t.value
160
+ }
161
+ };
162
+ case "filter/setColumn": return {
163
+ ...e,
164
+ filters: {
165
+ ...e.filters,
166
+ columnFilters: {
167
+ ...e.filters.columnFilters,
168
+ [t.columnKey]: t.value
169
+ }
170
+ }
171
+ };
172
+ case "filter/clearColumn": {
173
+ let n = { ...e.filters.columnFilters };
174
+ return delete n[t.columnKey], {
175
+ ...e,
176
+ filters: {
177
+ ...e.filters,
178
+ columnFilters: n
179
+ }
180
+ };
181
+ }
182
+ case "filter/resetAll": return {
183
+ ...e,
184
+ filters: {
185
+ globalText: "",
186
+ columnFilters: {}
187
+ }
188
+ };
189
+ case "filter/setAll": return {
190
+ ...e,
191
+ filters: t.filters
192
+ };
193
+ case "sort/set": return {
194
+ ...e,
195
+ sort: t.entries
196
+ };
197
+ case "sort/clear": return {
198
+ ...e,
199
+ sort: []
200
+ };
201
+ case "rowSelect/set": return n(e.rowSelection, t.state) ? e : {
202
+ ...e,
203
+ rowSelection: t.state
204
+ };
205
+ case "group/toggleCollapsed": {
206
+ let n = new Set(e.collapsedGroupKeys);
207
+ return n.has(t.groupKey) ? n.delete(t.groupKey) : n.add(t.groupKey), {
208
+ ...e,
209
+ collapsedGroupKeys: n
210
+ };
211
+ }
212
+ case "group/setCollapsed": {
213
+ if (e.collapsedGroupKeys.has(t.groupKey) === t.collapsed) return e;
214
+ let n = new Set(e.collapsedGroupKeys);
215
+ return t.collapsed ? n.add(t.groupKey) : n.delete(t.groupKey), {
216
+ ...e,
217
+ collapsedGroupKeys: n
218
+ };
219
+ }
220
+ case "group/setCollapsedKeys": return t.keys === e.collapsedGroupKeys || t.keys.size === 0 && e.collapsedGroupKeys.size === 0 ? e : {
221
+ ...e,
222
+ collapsedGroupKeys: t.keys
223
+ };
224
+ case "detail/toggle": {
225
+ let n = new Set(e.expandedDetailRowKeys);
226
+ return n.has(t.rowKey) ? n.delete(t.rowKey) : n.add(t.rowKey), {
227
+ ...e,
228
+ expandedDetailRowKeys: n
229
+ };
230
+ }
231
+ case "detail/setExpanded": {
232
+ if (e.expandedDetailRowKeys.has(t.rowKey) === t.expanded) return e;
233
+ let n = new Set(e.expandedDetailRowKeys);
234
+ return t.expanded ? n.add(t.rowKey) : n.delete(t.rowKey), {
235
+ ...e,
236
+ expandedDetailRowKeys: n
237
+ };
238
+ }
239
+ case "detail/setKeys": return t.keys === e.expandedDetailRowKeys || t.keys.size === 0 && e.expandedDetailRowKeys.size === 0 ? e : {
240
+ ...e,
241
+ expandedDetailRowKeys: t.keys
242
+ };
243
+ default: return e;
244
+ }
245
+ };
246
+ //#endregion
247
+ export { o as createInitialGridUiState, s as gridUiReducer };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>({start:{row:Math.min(e.start.row,e.end.row),col:Math.min(e.start.col,e.end.col)},end:{row:Math.max(e.start.row,e.end.row),col:Math.max(e.start.col,e.end.col)}}),t=(e,t)=>({startRow:Math.min(e,t),endRow:Math.max(e,t)}),n=(e,t)=>({startCol:Math.min(e,t),endCol:Math.max(e,t)}),r=e=>e.activeCell,i=e=>e.selection,a=e=>e.editingCell,o=(e,t)=>e.columnWidths[t],s=e=>e.filters.globalText,c=(e,t)=>e.filters.columnFilters[t],l=(e,t,n)=>e.activeCell?.row===t&&e.activeCell?.col===n,u=(e,t,n)=>e.editingCell?.row===t&&e.editingCell?.col===n,d=(r,i,a)=>{if(!r.selection)return!1;if(r.selection.type===`cell`){let t=e(r.selection.range);return i>=t.start.row&&i<=t.end.row&&a>=t.start.col&&a<=t.end.col}if(r.selection.type===`row`){let e=t(r.selection.startRow,r.selection.endRow);return i>=e.startRow&&i<=e.endRow}if(r.selection.type===`col`){let e=n(r.selection.startCol,r.selection.endCol);return a>=e.startCol&&a<=e.endCol}return!1},f=(e,n)=>{if(e.selection?.type!==`row`)return!1;let r=t(e.selection.startRow,e.selection.endRow);return n>=r.startRow&&n<=r.endRow},p=(e,t)=>{if(e.selection?.type!==`col`)return!1;let r=n(e.selection.startCol,e.selection.endCol);return t>=r.startCol&&t<=r.endCol},m=r=>{if(!r)return{kind:`none`};if(r.type===`cell`){let t=e(r.range);return{kind:`cell`,startRow:t.start.row,endRow:t.end.row,startCol:t.start.col,endCol:t.end.col}}if(r.type===`row`){let e=t(r.startRow,r.endRow);return{kind:`row`,startRow:e.startRow,endRow:e.endRow}}let i=n(r.startCol,r.endCol);return{kind:`col`,startCol:i.startCol,endCol:i.endCol}},h=(e,t)=>!e||!t?!1:e.row===t.row&&e.col===t.col;exports.buildSelectionSnapshot=m,exports.isSameCellCoord=h,exports.normalizeCellRange=e,exports.normalizeColumnRange=n,exports.normalizeRowRange=t,exports.selectActiveCell=r,exports.selectColumnFilter=c,exports.selectColumnWidth=o,exports.selectEditingCell=a,exports.selectGlobalFilter=s,exports.selectIsActiveCell=l,exports.selectIsCellSelected=d,exports.selectIsColumnSelected=p,exports.selectIsEditingCell=u,exports.selectIsRowSelected=f,exports.selectSelection=i;
@@ -0,0 +1,40 @@
1
+ import type { CellCoord, CellRange, GridUiState } from './gridTypes.unbound';
2
+ export declare const normalizeCellRange: (range: CellRange) => CellRange;
3
+ export declare const normalizeRowRange: (startRow: number, endRow: number) => {
4
+ startRow: number;
5
+ endRow: number;
6
+ };
7
+ export declare const normalizeColumnRange: (startCol: number, endCol: number) => {
8
+ startCol: number;
9
+ endCol: number;
10
+ };
11
+ export declare const selectActiveCell: (state: GridUiState) => CellCoord | null;
12
+ export declare const selectSelection: (state: GridUiState) => import("./gridTypes.core").GridSelection;
13
+ export declare const selectEditingCell: (state: GridUiState) => CellCoord | null;
14
+ export declare const selectColumnWidth: (state: GridUiState, columnKey: string) => number;
15
+ export declare const selectGlobalFilter: (state: GridUiState) => string;
16
+ export declare const selectColumnFilter: (state: GridUiState, columnKey: string) => import("./gridTypes.core").ColumnFilterValue;
17
+ export declare const selectIsActiveCell: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
18
+ export declare const selectIsEditingCell: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
19
+ export declare const selectIsCellSelected: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
20
+ export declare const selectIsRowSelected: (state: GridUiState, rowIndex: number) => boolean;
21
+ export declare const selectIsColumnSelected: (state: GridUiState, colIndex: number) => boolean;
22
+ export type SelectionSnapshot = {
23
+ kind: 'none';
24
+ } | {
25
+ kind: 'cell';
26
+ startRow: number;
27
+ endRow: number;
28
+ startCol: number;
29
+ endCol: number;
30
+ } | {
31
+ kind: 'row';
32
+ startRow: number;
33
+ endRow: number;
34
+ } | {
35
+ kind: 'col';
36
+ startCol: number;
37
+ endCol: number;
38
+ };
39
+ export declare const buildSelectionSnapshot: (selection: GridUiState["selection"]) => SelectionSnapshot;
40
+ export declare const isSameCellCoord: (left: CellCoord | null, right: CellCoord | null) => boolean;