@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,313 @@
1
+ import { getCellValue as e } from "../utils/permissions.js";
2
+ import { isBuiltinDateFilterPreset as t, normalizeDateFilterPresets as n } from "./dateFilterPresets.js";
3
+ //#region src/logic/filtering.ts
4
+ var r = (e) => {
5
+ let t = new Int32Array(e);
6
+ for (let n = 0; n < e; n += 1) t[n] = n;
7
+ return t;
8
+ }, i = (e) => e?.kind === "set", a = (e) => e?.kind === "numberSet", o = (e) => e?.kind === "textSet", s = (e) => e?.kind === "dateSet", c = (e) => e == null || String(e).trim() === "", l = (e) => {
9
+ if (!e) return !1;
10
+ switch (e.kind) {
11
+ case "set":
12
+ case "number":
13
+ case "custom": return !0;
14
+ case "numberSet":
15
+ case "textSet":
16
+ case "dateSet": return e.condition !== null || e.set !== null;
17
+ case "select": return e.value.length > 0;
18
+ case "text":
19
+ case "date": return e.value.trim().length > 0;
20
+ }
21
+ }, u = (e) => e == null || typeof e == "string" && e.trim() === "" ? NaN : Number(e), d = (e, t) => {
22
+ if (e.mode === "blank" || e.mode === "notBlank") return c(t) === (e.mode === "blank");
23
+ let n = u(t);
24
+ if (!Number.isFinite(n)) return !1;
25
+ if (e.mode === "range") return n >= e.min && n <= e.max;
26
+ switch (e.operator) {
27
+ case ">": return n > e.value;
28
+ case ">=": return n >= e.value;
29
+ case "<": return n < e.value;
30
+ case "<=": return n <= e.value;
31
+ case "!=": return n !== e.value;
32
+ default: return n === e.value;
33
+ }
34
+ }, f = (e, t) => {
35
+ if (e.mode === "blank" || e.mode === "notBlank") return c(t) === (e.mode === "blank");
36
+ let n = String(t ?? "").toLowerCase(), r = e.value.toLowerCase();
37
+ switch (e.mode) {
38
+ case "equals": return n === r;
39
+ case "startsWith": return n.startsWith(r);
40
+ case "endsWith": return n.endsWith(r);
41
+ default: return n.includes(r);
42
+ }
43
+ }, p = (e) => String(e).padStart(2, "0"), m = (e) => `${e.getFullYear()}-${p(e.getMonth() + 1)}-${p(e.getDate())}`, h = (e) => {
44
+ if (e == null) return null;
45
+ if (e instanceof Date) return Number.isNaN(e.getTime()) ? null : m(e);
46
+ let t = String(e).trim();
47
+ if (!t) return null;
48
+ let n = t.match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})(?:[T ].*)?$/);
49
+ if (!n) return null;
50
+ let r = Number(n[2]), i = Number(n[3]);
51
+ return r < 1 || r > 12 || i < 1 || i > 31 ? null : `${n[1]}-${p(r)}-${p(i)}`;
52
+ }, g = (e) => {
53
+ let t = h(e);
54
+ return t === null ? c(e) ? "" : String(e) : t;
55
+ }, _ = (e, t) => {
56
+ let n = m(t);
57
+ switch (e) {
58
+ case "today": return {
59
+ from: n,
60
+ to: n
61
+ };
62
+ case "thisMonth": {
63
+ let e = new Date(t.getFullYear(), t.getMonth(), 1), n = new Date(t.getFullYear(), t.getMonth() + 1, 0);
64
+ return {
65
+ from: m(e),
66
+ to: m(n)
67
+ };
68
+ }
69
+ default: return {
70
+ from: m(new Date(t.getFullYear(), t.getMonth(), t.getDate() - 29)),
71
+ to: n
72
+ };
73
+ }
74
+ }, v = (e) => e === void 0 ? null : h(e), y = (e, n, r) => {
75
+ if (e.mode !== "preset") return e;
76
+ let i = r?.find((t) => t.id === e.preset);
77
+ if (i?.resolve) {
78
+ let e = i.resolve(n), t = v(e.from), r = v(e.to);
79
+ return t !== null && r !== null ? t <= r ? {
80
+ mode: "range",
81
+ from: t,
82
+ to: r
83
+ } : {
84
+ mode: "range",
85
+ from: r,
86
+ to: t
87
+ } : t === null ? r === null ? null : {
88
+ mode: "onOrBefore",
89
+ value: r
90
+ } : {
91
+ mode: "onOrAfter",
92
+ value: t
93
+ };
94
+ }
95
+ return t(e.preset) ? {
96
+ mode: "range",
97
+ ..._(e.preset, n)
98
+ } : null;
99
+ }, b = (e, t, n, r) => {
100
+ let i = y(e, n, r);
101
+ if (i === null) return !0;
102
+ if (i.mode === "blank" || i.mode === "notBlank") return c(t) === (i.mode === "blank");
103
+ let a = h(t);
104
+ if (a === null) return !1;
105
+ switch (i.mode) {
106
+ case "range": return a >= i.from && a <= i.to;
107
+ case "onOrAfter": return a >= i.value;
108
+ case "onOrBefore": return a <= i.value;
109
+ case "notEquals": return a !== i.value;
110
+ default: return a === i.value;
111
+ }
112
+ }, x = (e) => {
113
+ let t = e?.kind === "number" ? e.parsed : e?.kind === "numberSet" ? e.condition : null;
114
+ return t?.mode === "comparison" || t?.mode === "range";
115
+ }, S = (e) => {
116
+ let t = e.trim();
117
+ if (!t) return null;
118
+ let n = t.match(/^(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)$/);
119
+ if (n) {
120
+ let e = Number(n[1]), t = Number(n[2]);
121
+ return !Number.isFinite(e) || !Number.isFinite(t) ? null : {
122
+ mode: "range",
123
+ min: Math.min(e, t),
124
+ max: Math.max(e, t)
125
+ };
126
+ }
127
+ let r = t.match(/^(<=|>=|=|<|>)?\s*(-?\d+(?:\.\d+)?)$/);
128
+ return r ? {
129
+ mode: "comparison",
130
+ operator: r[1] ?? "=",
131
+ value: Number(r[2])
132
+ } : null;
133
+ }, C = (e) => e?.kind === "number", w = (e) => {
134
+ let t = e.trim();
135
+ return t ? {
136
+ kind: "number",
137
+ raw: t,
138
+ parsed: S(t)
139
+ } : null;
140
+ }, T = (e) => {
141
+ if (!e) return "";
142
+ switch (e.kind) {
143
+ case "number": return e.raw;
144
+ case "text":
145
+ case "date":
146
+ case "select": return e.value;
147
+ case "set":
148
+ case "numberSet":
149
+ case "textSet":
150
+ case "dateSet":
151
+ case "custom": return "";
152
+ }
153
+ }, E = (e, t) => {
154
+ let n = String(t ?? "").trim();
155
+ if (!n) return !0;
156
+ let r = S(n);
157
+ if (!r) return String(e ?? "").toLowerCase().includes(n.toLowerCase());
158
+ if (r.mode === "blank" || r.mode === "notBlank") return c(e) === (r.mode === "blank");
159
+ let i = u(e);
160
+ if (!Number.isFinite(i)) return !1;
161
+ if (r.mode === "range") return i >= r.min && i <= r.max;
162
+ switch (r.operator) {
163
+ case ">": return i > r.value;
164
+ case ">=": return i >= r.value;
165
+ case "<": return i < r.value;
166
+ case "<=": return i <= r.value;
167
+ case "!=": return i !== r.value;
168
+ default: return i === r.value;
169
+ }
170
+ }, D = (t, n, r) => {
171
+ if (t.mode === "blank" || t.mode === "notBlank") {
172
+ let r = t.mode === "blank";
173
+ return (t) => c(e(t, n)) === r;
174
+ }
175
+ if (t.mode === "range") {
176
+ let { min: i, max: a } = t;
177
+ return (t, o) => {
178
+ let s = r ? r[o] : u(e(t, n));
179
+ return Number.isFinite(s) && s >= i && s <= a;
180
+ };
181
+ }
182
+ let { operator: i, value: a } = t;
183
+ return (t, o) => {
184
+ let s = r ? r[o] : u(e(t, n));
185
+ if (!Number.isFinite(s)) return !1;
186
+ switch (i) {
187
+ case ">": return s > a;
188
+ case ">=": return s >= a;
189
+ case "<": return s < a;
190
+ case "<=": return s <= a;
191
+ case "!=": return s !== a;
192
+ default: return s === a;
193
+ }
194
+ };
195
+ }, O = (t, n) => {
196
+ if (t.mode === "blank" || t.mode === "notBlank") {
197
+ let r = t.mode === "blank";
198
+ return (t) => c(e(t, n)) === r;
199
+ }
200
+ let r = t.value.toLowerCase(), i = t.mode;
201
+ return (t) => {
202
+ let a = String(e(t, n) ?? "").toLowerCase();
203
+ switch (i) {
204
+ case "equals": return a === r;
205
+ case "startsWith": return a.startsWith(r);
206
+ case "endsWith": return a.endsWith(r);
207
+ default: return a.includes(r);
208
+ }
209
+ };
210
+ }, k = (t, n, r) => {
211
+ let i = new Set(n);
212
+ return t === "exclude" ? (t) => !i.has(String(e(t, r) ?? "")) : (t) => i.has(String(e(t, r) ?? ""));
213
+ }, A = (t, n, r) => {
214
+ let i = new Set(n);
215
+ return t === "exclude" ? (t) => !i.has(g(e(t, r))) : (t) => i.has(g(e(t, r)));
216
+ }, j = (t, r, i) => {
217
+ let a = y(t, i, n(r.dateFilterPresets));
218
+ if (a === null) return () => !0;
219
+ if (a.mode === "blank" || a.mode === "notBlank") {
220
+ let t = a.mode === "blank";
221
+ return (n) => c(e(n, r)) === t;
222
+ }
223
+ if (a.mode === "range") {
224
+ let { from: t, to: n } = a;
225
+ return (i) => {
226
+ let a = h(e(i, r));
227
+ return a !== null && a >= t && a <= n;
228
+ };
229
+ }
230
+ let { mode: o, value: s } = a;
231
+ return (t) => {
232
+ let n = h(e(t, r));
233
+ if (n === null) return !1;
234
+ switch (o) {
235
+ case "onOrAfter": return n >= s;
236
+ case "onOrBefore": return n <= s;
237
+ case "notEquals": return n !== s;
238
+ default: return n === s;
239
+ }
240
+ };
241
+ }, M = (t, n, r, i) => {
242
+ if (!l(n)) return null;
243
+ let a = n;
244
+ if (t.filterFn) {
245
+ let e = t.filterFn;
246
+ return (t) => e(t, a);
247
+ }
248
+ switch (a.kind) {
249
+ case "set": return k(a.mode, a.values, t);
250
+ case "number": {
251
+ let n = a.parsed;
252
+ if (n === null) {
253
+ let n = a.raw.toLowerCase();
254
+ return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
255
+ }
256
+ return D(n, t, r);
257
+ }
258
+ case "numberSet":
259
+ case "textSet":
260
+ case "dateSet": {
261
+ let e = a.kind === "numberSet" ? a.condition ? D(a.condition, t, r) : null : a.kind === "textSet" ? a.condition ? O(a.condition, t) : null : a.condition ? j(a.condition, t, i ?? /* @__PURE__ */ new Date()) : null, n = a.set ? a.kind === "dateSet" ? A(a.set.mode, a.set.values, t) : k(a.set.mode, a.set.values, t) : null;
262
+ return e && n ? (t, r) => e(t, r) && n(t, r) : e ?? n;
263
+ }
264
+ case "select": {
265
+ let n = a.value;
266
+ return (r) => String(e(r, t) ?? "") === n;
267
+ }
268
+ case "text":
269
+ case "date": {
270
+ let n = a.value.trim().toLowerCase();
271
+ return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
272
+ }
273
+ case "custom": {
274
+ let n = String(a.value ?? "").trim().toLowerCase();
275
+ return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
276
+ }
277
+ }
278
+ }, N = (t, n, r) => {
279
+ let i = n.length;
280
+ for (let a = 0; a < i; a += 1) {
281
+ let i = e(t, n[a]);
282
+ if (String(i ?? "").toLowerCase().includes(r)) return !0;
283
+ }
284
+ return !1;
285
+ }, P = (e, t, n, r) => {
286
+ let i = r.trim().toLowerCase();
287
+ if (!i) return t;
288
+ let a = t.length, o = new Int32Array(a), s = 0;
289
+ for (let r = 0; r < a; r += 1) {
290
+ let a = t[r];
291
+ N(e[a], n, i) && (o[s] = a, s += 1);
292
+ }
293
+ return s === a ? t : o.slice(0, s);
294
+ }, F = (e, t, n, r, i, a) => {
295
+ let o = [], s = a ?? /* @__PURE__ */ new Date();
296
+ for (let e of n) {
297
+ let t = M(e, r[e.key], i?.get(e.key), s);
298
+ t && o.push(t);
299
+ }
300
+ if (o.length === 0) return t;
301
+ let c = t.length, l = o.length, u = new Int32Array(c), d = 0;
302
+ for (let n = 0; n < c; n += 1) {
303
+ let r = t[n], i = e[r], a = !0;
304
+ for (let e = 0; e < l; e += 1) if (!o[e](i, r)) {
305
+ a = !1;
306
+ break;
307
+ }
308
+ a && (u[d] = r, d += 1);
309
+ }
310
+ return d === c ? t : u.slice(0, d);
311
+ };
312
+ //#endregion
313
+ export { E as applyNumberFilter, w as buildNumberColumnFilterValue, u as coerceNumberFilterCellValue, x as columnFilterUsesNumericKey, T as columnFilterValueToDraftText, r as createSourceOrder, F as filterOrderByColumns, P as filterOrderByGlobalText, m as formatDateKey, l as isActiveColumnFilterValue, c as isBlankCellValue, s as isDateSetColumnFilterValue, C as isNumberColumnFilterValue, a as isNumberSetColumnFilterValue, i as isSetColumnFilterValue, o as isTextSetColumnFilterValue, b as matchesParsedDateFilter, d as matchesParsedNumberFilter, f as matchesParsedTextFilter, S as parseNumberFilterExpression, _ as resolveDateFilterPreset, y as resolveParsedDateFilter, N as rowMatchesGlobalText, h as toDateKey, g as toDateSetKey };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t,n)=>Math.min(Math.max(e,t),n),t=(e,t)=>{let n=0;return e.map((e,r)=>{let i=t[e.key]??e.width,a={index:r,column:e,start:n,size:i,end:n+i};return n+=i,a})},n=(e,t)=>{if(e.length===0)return-1;if(t<=0)return 0;let n=0,r=e.length-1;for(;n<=r;){let i=Math.floor((n+r)/2),a=e[i];if(t<a.start){r=i-1;continue}if(t>=a.end){n=i+1;continue}return a.index}return Math.max(0,Math.min(n,e.length-1))},r=e=>e.pinned===`left`?`left`:e.pinned===`right`?`right`:`center`,i=e=>{let t=[],n=[],i=[];for(let a of e){let e=r(a);e===`left`?t.push(a):e===`right`?i.push(a):n.push(a)}return[...t,...n,...i]},a=e=>{let t={left:[],center:[],right:[]};return e.forEach((e,n)=>{let i=r(e);t[i].push({column:e,logicalIndex:n})}),t},o=(e,t)=>e.map(({column:e})=>t[e.key]??e.width),s=(e,t)=>o(e,t).join(`,`),c=e=>e===``?[]:e.split(`,`).map(Number),l=(e,t,n)=>{let r=0;return{pane:e,entries:t.map(({column:e,logicalIndex:t},i)=>{let a=n[i]??e.width,o={column:e,logicalIndex:t,paneLocalStart:r,paneLocalSize:a,paneLocalEnd:r+a};return r+=a,o}),totalWidth:r}},u=(e,t,n)=>l(e,t,c(n)),d=(e,t)=>{let n=a(e);return{left:l(`left`,n.left,o(n.left,t)),center:l(`center`,n.center,o(n.center,t)),right:l(`right`,n.right,o(n.right,t))}},f=(e,t)=>{let n=[[`left`,e.left],[`center`,e.center],[`right`,e.right]];for(let[e,r]of n){let n=r.entries.find(e=>e.logicalIndex===t);if(n)return{pane:e,entry:n}}return null},p=(e,t)=>{let{entries:n}=e;if(n.length===0)return-1;if(t<=0)return n[0].logicalIndex;let r=0,i=n.length-1;for(;r<=i;){let e=Math.floor((r+i)/2),a=n[e];if(t<a.paneLocalStart){i=e-1;continue}if(t>=a.paneLocalEnd){r=e+1;continue}return a.logicalIndex}return n[Math.max(0,Math.min(r,n.length-1))].logicalIndex},m=(e,t)=>{let{entries:n}=e;for(let e=0;e<n.length;e+=1){let r=n[e];if(t<r.paneLocalStart+r.paneLocalSize/2)return e}return n.length},h=(e,t)=>{let{entries:n,totalWidth:r}=e;return n.length===0?0:t<=0?n[0].paneLocalStart:t>=n.length?r:n[t].paneLocalStart},g=e=>({left:e.left.entries.length,center:e.center.entries.length,right:e.right.entries.length}),_=e=>e.left.entries.length===0&&e.right.entries.length===0,v=(e,t,n)=>{let r=Math.min(t,n),i=Math.max(t,n),a=1/0,o=-1/0,s=!1;for(let t of e.entries)t.logicalIndex<r||t.logicalIndex>i||(s=!0,t.paneLocalStart<a&&(a=t.paneLocalStart),t.paneLocalEnd>o&&(o=t.paneLocalEnd));return s?{start:a,end:o,width:o-a}:null},y=(e,t,n)=>({left:v(e.left,t,n),center:v(e.center,t,n),right:v(e.right,t,n)}),b=e=>{let t=e=>e.entries.length===0?null:{start:0,end:e.totalWidth,width:e.totalWidth};return{left:t(e.left),center:t(e.center),right:t(e.right)}},x=(e,t)=>{let n=f(e,t);if(!n)return null;let{pane:r,entry:i}=n;return{pane:r,extent:{start:i.paneLocalStart,end:i.paneLocalEnd,width:i.paneLocalSize}}};exports.buildColumnMeasurements=t,exports.buildGridPaneLayout=d,exports.buildPaneGeometry=l,exports.buildPaneGeometryFromWidthsKey=u,exports.buildPaneWidthsKey=s,exports.clamp=e,exports.computeFullWidthPaneExtents=b,exports.computePaneColumnExtents=y,exports.computeSinglePaneColumnExtent=x,exports.countPinnedColumns=g,exports.findColumnIndexFromOffset=n,exports.findLogicalIndexFromPaneOffset=p,exports.findPaneDropSlot=m,exports.getColumnPane=r,exports.isPlainLayout=_,exports.lookupPaneColumn=f,exports.paneDropSlotBoundaryX=h,exports.reorderColumnsByPane=i,exports.splitOrderedColumnsByPane=a;
@@ -0,0 +1,72 @@
1
+ import type { GridColumn } from '../model/gridTypes.unbound';
2
+ export type ColumnMeasurement<T> = {
3
+ index: number;
4
+ column: GridColumn<T>;
5
+ start: number;
6
+ size: number;
7
+ end: number;
8
+ };
9
+ export declare const clamp: (value: number, min: number, max: number) => number;
10
+ export declare const buildColumnMeasurements: <T>(columns: GridColumn<T>[], columnWidths: Record<string, number>) => ColumnMeasurement<T>[];
11
+ export declare const findColumnIndexFromOffset: <T>(measurements: ColumnMeasurement<T>[], offset: number) => number;
12
+ export type ColumnPane = 'left' | 'center' | 'right';
13
+ export declare const getColumnPane: <T>(column: GridColumn<T>) => ColumnPane;
14
+ export declare const reorderColumnsByPane: <T>(columns: GridColumn<T>[]) => GridColumn<T>[];
15
+ export type PaneColumnEntry<T> = {
16
+ column: GridColumn<T>;
17
+ logicalIndex: number;
18
+ paneLocalStart: number;
19
+ paneLocalSize: number;
20
+ paneLocalEnd: number;
21
+ };
22
+ export type PaneGeometry<T> = {
23
+ pane: ColumnPane;
24
+ entries: PaneColumnEntry<T>[];
25
+ totalWidth: number;
26
+ };
27
+ export type GridPaneLayout<T> = {
28
+ left: PaneGeometry<T>;
29
+ center: PaneGeometry<T>;
30
+ right: PaneGeometry<T>;
31
+ };
32
+ export type PaneSourceColumn<T> = {
33
+ column: GridColumn<T>;
34
+ logicalIndex: number;
35
+ };
36
+ export type PaneSourceColumns<T> = {
37
+ left: PaneSourceColumn<T>[];
38
+ center: PaneSourceColumn<T>[];
39
+ right: PaneSourceColumn<T>[];
40
+ };
41
+ export declare const splitOrderedColumnsByPane: <T>(orderedColumns: GridColumn<T>[]) => PaneSourceColumns<T>;
42
+ export declare const buildPaneWidthsKey: <T>(items: PaneSourceColumn<T>[], columnWidths: Record<string, number>) => string;
43
+ export declare const buildPaneGeometry: <T>(pane: ColumnPane, items: PaneSourceColumn<T>[], resolvedWidths: number[]) => PaneGeometry<T>;
44
+ export declare const buildPaneGeometryFromWidthsKey: <T>(pane: ColumnPane, items: PaneSourceColumn<T>[], widthsKey: string) => PaneGeometry<T>;
45
+ export declare const buildGridPaneLayout: <T>(orderedColumns: GridColumn<T>[], columnWidths: Record<string, number>) => GridPaneLayout<T>;
46
+ export type PaneColumnLookupResult<T> = {
47
+ pane: ColumnPane;
48
+ entry: PaneColumnEntry<T>;
49
+ };
50
+ export declare const lookupPaneColumn: <T>(layout: GridPaneLayout<T>, logicalIndex: number) => PaneColumnLookupResult<T> | null;
51
+ export declare const findLogicalIndexFromPaneOffset: <T>(paneGeometry: PaneGeometry<T>, offset: number) => number;
52
+ export declare const findPaneDropSlot: <T>(paneGeometry: PaneGeometry<T>, paneLocalOffset: number) => number;
53
+ export declare const paneDropSlotBoundaryX: <T>(paneGeometry: PaneGeometry<T>, slot: number) => number;
54
+ export declare const countPinnedColumns: <T>(layout: GridPaneLayout<T>) => {
55
+ left: number;
56
+ center: number;
57
+ right: number;
58
+ };
59
+ export declare const isPlainLayout: <T>(layout: GridPaneLayout<T>) => boolean;
60
+ export type PaneColumnExtent = {
61
+ start: number;
62
+ end: number;
63
+ width: number;
64
+ };
65
+ export type PaneColumnExtentMap = Record<ColumnPane, PaneColumnExtent | null>;
66
+ export declare const computePaneColumnExtents: <T>(layout: GridPaneLayout<T>, startLogicalIndex: number, endLogicalIndex: number) => PaneColumnExtentMap;
67
+ export declare const computeFullWidthPaneExtents: <T>(layout: GridPaneLayout<T>) => PaneColumnExtentMap;
68
+ export type SinglePaneColumnExtent = {
69
+ pane: ColumnPane;
70
+ extent: PaneColumnExtent;
71
+ };
72
+ export declare const computeSinglePaneColumnExtent: <T>(layout: GridPaneLayout<T>, logicalIndex: number) => SinglePaneColumnExtent | null;
@@ -0,0 +1,161 @@
1
+ //#region src/logic/geometry.ts
2
+ var e = (e, t, n) => Math.min(Math.max(e, t), n), t = (e, t) => {
3
+ let n = 0;
4
+ return e.map((e, r) => {
5
+ let i = t[e.key] ?? e.width, a = {
6
+ index: r,
7
+ column: e,
8
+ start: n,
9
+ size: i,
10
+ end: n + i
11
+ };
12
+ return n += i, a;
13
+ });
14
+ }, n = (e, t) => {
15
+ if (e.length === 0) return -1;
16
+ if (t <= 0) return 0;
17
+ let n = 0, r = e.length - 1;
18
+ for (; n <= r;) {
19
+ let i = Math.floor((n + r) / 2), a = e[i];
20
+ if (t < a.start) {
21
+ r = i - 1;
22
+ continue;
23
+ }
24
+ if (t >= a.end) {
25
+ n = i + 1;
26
+ continue;
27
+ }
28
+ return a.index;
29
+ }
30
+ return Math.max(0, Math.min(n, e.length - 1));
31
+ }, r = (e) => e.pinned === "left" ? "left" : e.pinned === "right" ? "right" : "center", i = (e) => {
32
+ let t = [], n = [], i = [];
33
+ for (let a of e) {
34
+ let e = r(a);
35
+ e === "left" ? t.push(a) : e === "right" ? i.push(a) : n.push(a);
36
+ }
37
+ return [
38
+ ...t,
39
+ ...n,
40
+ ...i
41
+ ];
42
+ }, a = (e) => {
43
+ let t = {
44
+ left: [],
45
+ center: [],
46
+ right: []
47
+ };
48
+ return e.forEach((e, n) => {
49
+ let i = r(e);
50
+ t[i].push({
51
+ column: e,
52
+ logicalIndex: n
53
+ });
54
+ }), t;
55
+ }, o = (e, t) => e.map(({ column: e }) => t[e.key] ?? e.width), s = (e, t) => o(e, t).join(","), c = (e) => e === "" ? [] : e.split(",").map(Number), l = (e, t, n) => {
56
+ let r = 0;
57
+ return {
58
+ pane: e,
59
+ entries: t.map(({ column: e, logicalIndex: t }, i) => {
60
+ let a = n[i] ?? e.width, o = {
61
+ column: e,
62
+ logicalIndex: t,
63
+ paneLocalStart: r,
64
+ paneLocalSize: a,
65
+ paneLocalEnd: r + a
66
+ };
67
+ return r += a, o;
68
+ }),
69
+ totalWidth: r
70
+ };
71
+ }, u = (e, t, n) => l(e, t, c(n)), d = (e, t) => {
72
+ let n = a(e);
73
+ return {
74
+ left: l("left", n.left, o(n.left, t)),
75
+ center: l("center", n.center, o(n.center, t)),
76
+ right: l("right", n.right, o(n.right, t))
77
+ };
78
+ }, f = (e, t) => {
79
+ let n = [
80
+ ["left", e.left],
81
+ ["center", e.center],
82
+ ["right", e.right]
83
+ ];
84
+ for (let [e, r] of n) {
85
+ let n = r.entries.find((e) => e.logicalIndex === t);
86
+ if (n) return {
87
+ pane: e,
88
+ entry: n
89
+ };
90
+ }
91
+ return null;
92
+ }, p = (e, t) => {
93
+ let { entries: n } = e;
94
+ if (n.length === 0) return -1;
95
+ if (t <= 0) return n[0].logicalIndex;
96
+ let r = 0, i = n.length - 1;
97
+ for (; r <= i;) {
98
+ let e = Math.floor((r + i) / 2), a = n[e];
99
+ if (t < a.paneLocalStart) {
100
+ i = e - 1;
101
+ continue;
102
+ }
103
+ if (t >= a.paneLocalEnd) {
104
+ r = e + 1;
105
+ continue;
106
+ }
107
+ return a.logicalIndex;
108
+ }
109
+ return n[Math.max(0, Math.min(r, n.length - 1))].logicalIndex;
110
+ }, m = (e, t) => {
111
+ let { entries: n } = e;
112
+ for (let e = 0; e < n.length; e += 1) {
113
+ let r = n[e];
114
+ if (t < r.paneLocalStart + r.paneLocalSize / 2) return e;
115
+ }
116
+ return n.length;
117
+ }, h = (e, t) => {
118
+ let { entries: n, totalWidth: r } = e;
119
+ return n.length === 0 ? 0 : t <= 0 ? n[0].paneLocalStart : t >= n.length ? r : n[t].paneLocalStart;
120
+ }, g = (e) => ({
121
+ left: e.left.entries.length,
122
+ center: e.center.entries.length,
123
+ right: e.right.entries.length
124
+ }), _ = (e) => e.left.entries.length === 0 && e.right.entries.length === 0, v = (e, t, n) => {
125
+ let r = Math.min(t, n), i = Math.max(t, n), a = Infinity, o = -Infinity, s = !1;
126
+ for (let t of e.entries) t.logicalIndex < r || t.logicalIndex > i || (s = !0, t.paneLocalStart < a && (a = t.paneLocalStart), t.paneLocalEnd > o && (o = t.paneLocalEnd));
127
+ return s ? {
128
+ start: a,
129
+ end: o,
130
+ width: o - a
131
+ } : null;
132
+ }, y = (e, t, n) => ({
133
+ left: v(e.left, t, n),
134
+ center: v(e.center, t, n),
135
+ right: v(e.right, t, n)
136
+ }), b = (e) => {
137
+ let t = (e) => e.entries.length === 0 ? null : {
138
+ start: 0,
139
+ end: e.totalWidth,
140
+ width: e.totalWidth
141
+ };
142
+ return {
143
+ left: t(e.left),
144
+ center: t(e.center),
145
+ right: t(e.right)
146
+ };
147
+ }, x = (e, t) => {
148
+ let n = f(e, t);
149
+ if (!n) return null;
150
+ let { pane: r, entry: i } = n;
151
+ return {
152
+ pane: r,
153
+ extent: {
154
+ start: i.paneLocalStart,
155
+ end: i.paneLocalEnd,
156
+ width: i.paneLocalSize
157
+ }
158
+ };
159
+ };
160
+ //#endregion
161
+ export { t as buildColumnMeasurements, d as buildGridPaneLayout, l as buildPaneGeometry, u as buildPaneGeometryFromWidthsKey, s as buildPaneWidthsKey, e as clamp, b as computeFullWidthPaneExtents, y as computePaneColumnExtents, x as computeSinglePaneColumnExtent, g as countPinnedColumns, n as findColumnIndexFromOffset, p as findLogicalIndexFromPaneOffset, m as findPaneDropSlot, r as getColumnPane, _ as isPlainLayout, f as lookupPaneColumn, h as paneDropSlotBoundaryX, i as reorderColumnsByPane, a as splitOrderedColumnsByPane };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=2,n=e=>{switch(e.kind){case`set`:return{...e,values:[...e.values]};case`number`:return{...e,parsed:e.parsed?{...e.parsed}:null};case`numberSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`textSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`dateSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`text`:case`date`:case`select`:return{...e};case`custom`:return{...e}}},r=e=>{let t={};for(let r of Object.keys(e))t[r]=n(e[r]);return t},i=e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t},a=e=>e.map(e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t}),o=(e,t,n,a=[],o=2)=>({version:o,columnWidths:{...e},filters:{globalText:t.globalText,columnFilters:r(t.columnFilters)},sort:n.map(e=>({...e})),columns:a.map(i)}),s=e=>{let t=e&&typeof e==`object`?e:{},r={},i=t.columnWidths;if(i&&typeof i==`object`){let e=i;for(let t of Object.keys(e)){let n=e[t];typeof n==`number`&&Number.isFinite(n)&&(r[t]=n)}}let a=t.filters&&typeof t.filters==`object`?t.filters:{},o=typeof a.globalText==`string`?a.globalText:``,s={},c=a.columnFilters;if(c&&typeof c==`object`){let e=c;for(let t of Object.keys(e)){let r=e[t];r&&typeof r==`object`&&`kind`in r&&(s[t]=n(r))}}let l=[],u=t.sort;if(Array.isArray(u)){for(let e of u)if(e&&typeof e==`object`){let t=e;typeof t.columnKey==`string`&&(t.direction===`asc`||t.direction===`desc`)&&l.push({columnKey:t.columnKey,direction:t.direction})}}let d,f=t.columns;if(Array.isArray(f)){let e=[];for(let t of f){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.key!=`string`)continue;let r={key:n.key};typeof n.visible==`boolean`&&(r.visible=n.visible),(n.pinned===`left`||n.pinned===`right`)&&(r.pinned=n.pinned),e.push(r)}d=e}return{version:2,columnWidths:r,filters:{globalText:o,columnFilters:s},sort:l,columns:d}},c=(t,n,r)=>{let i=new Map(t.map(e=>[e.key,e])),a=new Set,o=(e,t)=>{let n=r[e.key],i=typeof n==`number`;if(!t&&!i)return e;let a={...e};return t&&(a.visible=t.visible,a.pinned=t.pinned),i&&(a.width=n),a},s=[];for(let e of n){let t=i.get(e.key);t&&(a.add(e.key),s.push(o(t,e)))}for(let e of t)a.has(e.key)||s.push(o(e,void 0));return e.reorderColumnsByPane(s)},l=(e,t)=>e===null||t===null?e===t:e.mode===`blank`||e.mode===`notBlank`||t.mode===`blank`||t.mode===`notBlank`?e.mode===t.mode:e.mode===t.mode&&e.value===t.value,u=(e,t)=>e===null||t===null?e===t:e.mode===t.mode?e.mode===`range`&&t.mode===`range`?e.from===t.from&&e.to===t.to:e.mode===`preset`&&t.mode===`preset`?e.preset===t.preset:e.mode===`blank`||e.mode===`notBlank`?!0:`value`in e&&`value`in t&&e.value===t.value:!1,d=(e,t)=>e===null||t===null?e===t:(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]),f=(e,t)=>e===null||t===null?e===t:e.mode===`comparison`&&t.mode===`comparison`?e.operator===t.operator&&e.value===t.value:e.mode===`range`&&t.mode===`range`?e.min===t.min&&e.max===t.max:e.mode===`blank`||e.mode===`notBlank`?e.mode===t.mode:!1,p=(e,t)=>{switch(e.kind){case`set`:return t.kind===`set`&&(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]);case`number`:return t.kind===`number`&&e.raw===t.raw&&f(e.parsed,t.parsed);case`numberSet`:return t.kind===`numberSet`&&f(e.condition,t.condition)&&d(e.set,t.set);case`textSet`:return t.kind===`textSet`&&l(e.condition,t.condition)&&d(e.set,t.set);case`dateSet`:return t.kind===`dateSet`&&u(e.condition,t.condition)&&d(e.set,t.set);case`text`:return t.kind===`text`&&e.value===t.value;case`date`:return t.kind===`date`&&e.value===t.value;case`select`:return t.kind===`select`&&e.value===t.value;case`custom`:return t.kind===`custom`&&Object.is(e.value,t.value)}},m=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||e[r]!==t[r])return!1;return!0},h=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!p(e[r],t[r]))return!1;return!0},g=(e,t)=>{if(e===void 0||t===void 0)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].key!==t[n].key||e[n].visible!==t[n].visible||e[n].pinned!==t[n].pinned)return!1;return!0},_=(e,t)=>{if(e.version!==t.version||!m(e.columnWidths,t.columnWidths)||e.filters.globalText!==t.filters.globalText||!h(e.filters.columnFilters,t.filters.columnFilters)||e.sort.length!==t.sort.length)return!1;for(let n=0;n<e.sort.length;n+=1)if(e.sort[n].columnKey!==t.sort[n].columnKey||e.sort[n].direction!==t.sort[n].direction)return!1;return!!g(e.columns,t.columns)},v=(e,t,n)=>n?{emit:!1,nextLast:e}:e===null||_(e,t)?{emit:!1,nextLast:t}:{emit:!0,nextLast:t};exports.GRID_STATE_VERSION=t,exports.applyColumnState=c,exports.buildGridState=o,exports.cloneColumnFilterValue=n,exports.decideStateChangeEmit=v,exports.extractColumnState=a,exports.isSameGridState=_,exports.migrateGridState=s;
@@ -0,0 +1,13 @@
1
+ import type { ColumnFilterValue, GridColumn, GridColumnState, GridFilterState, GridSortState, GridState } from '../model/gridTypes.unbound';
2
+ export declare const GRID_STATE_VERSION = 2;
3
+ export declare const cloneColumnFilterValue: (value: ColumnFilterValue) => ColumnFilterValue;
4
+ export declare const extractColumnState: <T>(columns: GridColumn<T>[]) => GridColumnState[];
5
+ export declare const buildGridState: (columnWidths: Record<string, number>, filters: GridFilterState, sort: GridSortState, columns?: GridColumnState[], version?: number) => GridState;
6
+ export declare const migrateGridState: (input: unknown) => GridState;
7
+ export declare const applyColumnState: <T>(currentColumns: GridColumn<T>[], savedColumnState: GridColumnState[], savedWidths: Record<string, number>) => GridColumn<T>[];
8
+ export declare const isSameGridState: (a: GridState, b: GridState) => boolean;
9
+ export type StateChangeDecision = {
10
+ emit: boolean;
11
+ nextLast: GridState | null;
12
+ };
13
+ export declare const decideStateChangeEmit: (prevLast: GridState | null, current: GridState, isDragging: boolean) => StateChangeDecision;