@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,38 @@
1
+ import type { GridRowKey, RowModel } from '../model/gridTypes.unbound';
2
+ import type { DetailRowExtra, RowMetrics } from './verticalGeometry';
3
+ export declare const DETAIL_TOGGLE_COLUMN_KEY = "__ssg_detail_toggle__";
4
+ export declare const DETAIL_TOGGLE_COLUMN_WIDTH = 28;
5
+ export declare const DEFAULT_DETAIL_ROW_HEIGHT = 200;
6
+ export declare const isSyntheticColumnKey: (key: string) => boolean;
7
+ export declare const isInsideDetailCard: (element: Element | null | undefined) => boolean;
8
+ export declare const isFocusInsideDetailCard: () => boolean;
9
+ export declare const isInsideDetailCardOf: (root: Element, element: Element) => boolean;
10
+ export type DetailIndexCache = {
11
+ indexByKey: Map<GridRowKey, number>;
12
+ unresolvedFor: RowModel<unknown> | null;
13
+ unresolved: Set<GridRowKey>;
14
+ };
15
+ export declare const createDetailIndexCache: () => DetailIndexCache;
16
+ export type DetailIndexCacheHolder = {
17
+ current: DetailIndexCache;
18
+ reset: () => void;
19
+ };
20
+ export declare const createDetailIndexCacheHolder: () => DetailIndexCacheHolder;
21
+ export type ResolveDetailRowExtrasArgs<T> = {
22
+ expandedKeys: ReadonlySet<GridRowKey>;
23
+ rowModel: RowModel<T>;
24
+ height: number;
25
+ isExpandable?: (row: T, ctx: {
26
+ rowKey: GridRowKey;
27
+ sourceRowIndex: number;
28
+ }) => boolean;
29
+ cache: DetailIndexCache;
30
+ allowScan: boolean;
31
+ };
32
+ export declare const findDetailRowIndex: <T>(rowModel: RowModel<T>, rowKey: GridRowKey, cache: DetailIndexCache, allowScan: boolean) => number;
33
+ export declare const resolveDetailRowExtras: <T>({ expandedKeys, rowModel, height, isExpandable, cache, allowScan, }: ResolveDetailRowExtrasArgs<T>) => DetailRowExtra[];
34
+ export declare const seedDetailIndexCache: (cache: DetailIndexCache, rowKey: GridRowKey, viewIndex: number) => void;
35
+ export declare const splitRowBandByDetail: (startRow: number, endRow: number, rowMetrics: RowMetrics, extras: readonly DetailRowExtra[]) => Array<{
36
+ top: number;
37
+ height: number;
38
+ }>;
@@ -0,0 +1,78 @@
1
+ import "./grouping.js";
2
+ import "./rowReorder.js";
3
+ //#region src/logic/detailRow.ts
4
+ var e = "__ssg_detail_toggle__", t = 28, n = 200, r = (e) => e === "__ssg_group__" || e === "__ssg_detail_toggle__" || e === "__ssg_row_drag_handle__", i = (e) => e != null && typeof e.closest == "function" && e.closest("[data-ssg-detail]") !== null, a = () => typeof document < "u" && i(document.activeElement), o = (e, t) => {
5
+ if (typeof t.closest != "function") return !1;
6
+ let n = t.closest("[data-ssg-detail]");
7
+ return n !== null && n !== e && e.contains(n);
8
+ }, s = () => ({
9
+ indexByKey: /* @__PURE__ */ new Map(),
10
+ unresolvedFor: null,
11
+ unresolved: /* @__PURE__ */ new Set()
12
+ }), c = () => {
13
+ let e = {
14
+ current: s(),
15
+ reset: () => {
16
+ e.current = s();
17
+ }
18
+ };
19
+ return e;
20
+ }, l = (e, t, n, r) => {
21
+ let i = e.getRowCount(), a = n.indexByKey.get(t);
22
+ if (a !== void 0 && a >= 0 && a < i && e.getRowKey(a) === t) return a;
23
+ if (!r) return -1;
24
+ for (let r = 0; r < i; r += 1) if (e.getRowKey(r) === t) return n.indexByKey.set(t, r), r;
25
+ return -1;
26
+ }, u = ({ expandedKeys: e, rowModel: t, height: n, isExpandable: r, cache: i, allowScan: a }) => {
27
+ if (e.size === 0 || n <= 0) return [];
28
+ let o = t.getRowCount(), s = /* @__PURE__ */ new Map(), c = null;
29
+ for (let n of e) {
30
+ let e = i.indexByKey.get(n);
31
+ if (e !== void 0 && e >= 0 && e < o && t.getRowKey(e) === n) {
32
+ s.set(n, e);
33
+ continue;
34
+ }
35
+ i.unresolvedFor === t && i.unresolved.has(n) || (c ??= /* @__PURE__ */ new Set()).add(n);
36
+ }
37
+ if (c && c.size > 0) {
38
+ if (a) for (let e = 0; e < o && c.size > 0; e += 1) {
39
+ let n = t.getRowKey(e);
40
+ c.has(n) && (i.indexByKey.set(n, e), s.set(n, e), c.delete(n));
41
+ }
42
+ if (c.size > 0) {
43
+ i.unresolvedFor !== t && (i.unresolvedFor = t, i.unresolved.clear());
44
+ for (let e of c) i.unresolved.add(e);
45
+ }
46
+ }
47
+ let l = [];
48
+ for (let [e, i] of s) {
49
+ let a = t.getRow(i);
50
+ a !== void 0 && (r && !r(a, {
51
+ rowKey: e,
52
+ sourceRowIndex: t.getSourceIndex(i)
53
+ }) || l.push({
54
+ index: i,
55
+ height: n
56
+ }));
57
+ }
58
+ return l.sort((e, t) => e.index - t.index), l;
59
+ }, d = (e, t, n) => {
60
+ e.indexByKey.set(t, n), e.unresolved.delete(t);
61
+ }, f = (e, t, n, r) => {
62
+ let i = [], a = e;
63
+ for (let o of r) {
64
+ if (o.index < e) continue;
65
+ if (o.index > t) break;
66
+ let r = n.rowTop(a), s = n.rowTop(o.index) + n.cellHeight(o.index);
67
+ i.push({
68
+ top: r,
69
+ height: s - r
70
+ }), a = o.index + 1;
71
+ }
72
+ return a <= t && i.push({
73
+ top: n.rowTop(a),
74
+ height: n.rowsHeight(a, t)
75
+ }), i;
76
+ };
77
+ //#endregion
78
+ export { n as DEFAULT_DETAIL_ROW_HEIGHT, e as DETAIL_TOGGLE_COLUMN_KEY, t as DETAIL_TOGGLE_COLUMN_WIDTH, s as createDetailIndexCache, c as createDetailIndexCacheHolder, l as findDetailRowIndex, a as isFocusInsideDetailCard, i as isInsideDetailCard, o as isInsideDetailCardOf, r as isSyntheticColumnKey, u as resolveDetailRowExtras, d as seedDetailIndexCache, f as splitRowBandByDetail };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey,t=e=>e instanceof HTMLElement?e.closest(`input, textarea, select, button, [contenteditable="true"]`)!==null:!1;exports.isPrintableKey=e,exports.shouldIgnoreGridKeydown=t;
@@ -0,0 +1,7 @@
1
+ export declare const isPrintableKey: (event: {
2
+ key: string;
3
+ ctrlKey: boolean;
4
+ metaKey: boolean;
5
+ altKey: boolean;
6
+ }) => boolean;
7
+ export declare const shouldIgnoreGridKeydown: (eventTarget: EventTarget | null) => boolean;
@@ -0,0 +1,4 @@
1
+ //#region src/logic/domGuards.ts
2
+ var e = (e) => e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey, t = (e) => e instanceof HTMLElement ? e.closest("input, textarea, select, button, [contenteditable=\"true\"]") !== null : !1;
3
+ //#endregion
4
+ export { e as isPrintableKey, t as shouldIgnoreGridKeydown };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("./checkboxEditor.cjs");var n=e=>{if(e===``)return null;let t=Number(e);return Number.isFinite(t)?t:e},r=e=>`${String(e.getFullYear()).padStart(4,`0`)}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`,i=e=>{if(e instanceof Date)return Number.isNaN(e.getTime())?``:r(e);if(typeof e==`string`&&e.trim()!==``){let t=/^(\d{4}-\d{2}-\d{2})/.exec(e);if(t)return t[1];let n=new Date(e);if(!Number.isNaN(n.getTime()))return r(n)}return``},a=e=>{if(e===``)return null;let t=i(e);return t===``?e:t},o=e=>{if(e.parseClipboardValue)return e.parseClipboardValue;if(e.editor?.type===`number`)return n;if(e.editor?.type===`date`)return a;if(e.editor?.type===`checkbox`){let n=e.editor;return e=>t.parseCheckboxEditorValue(e,n)}return e=>e},s=(e,t,n)=>typeof t==`string`?o(e)(t,n):t,c=(t,n,r,i)=>t.map((t,a)=>a===n?e.setCellValue(t,r,i):t);exports.parseCommittedValue=s,exports.resolveCellParser=o,exports.toDateInputValue=i,exports.writeRowsCell=c;
@@ -0,0 +1,5 @@
1
+ import type { GridColumn } from '../model/gridTypes.unbound';
2
+ export declare const toDateInputValue: (value: unknown) => string;
3
+ export declare const resolveCellParser: <T>(column: GridColumn<T>) => ((raw: string, row: T) => unknown);
4
+ export declare const parseCommittedValue: <T>(column: GridColumn<T>, committedValue: unknown, row: T) => unknown;
5
+ export declare const writeRowsCell: <T>(rows: T[], sourceRowIndex: number, column: GridColumn<T>, value: unknown) => T[];
@@ -0,0 +1,32 @@
1
+ import { setCellValue as e } from "../utils/permissions.js";
2
+ import { parseCheckboxEditorValue as t } from "./checkboxEditor.js";
3
+ //#region src/logic/editorValues.ts
4
+ var n = (e) => {
5
+ if (e === "") return null;
6
+ let t = Number(e);
7
+ return Number.isFinite(t) ? t : e;
8
+ }, r = (e) => `${String(e.getFullYear()).padStart(4, "0")}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`, i = (e) => {
9
+ if (e instanceof Date) return Number.isNaN(e.getTime()) ? "" : r(e);
10
+ if (typeof e == "string" && e.trim() !== "") {
11
+ let t = /^(\d{4}-\d{2}-\d{2})/.exec(e);
12
+ if (t) return t[1];
13
+ let n = new Date(e);
14
+ if (!Number.isNaN(n.getTime())) return r(n);
15
+ }
16
+ return "";
17
+ }, a = (e) => {
18
+ if (e === "") return null;
19
+ let t = i(e);
20
+ return t === "" ? e : t;
21
+ }, o = (e) => {
22
+ if (e.parseClipboardValue) return e.parseClipboardValue;
23
+ if (e.editor?.type === "number") return n;
24
+ if (e.editor?.type === "date") return a;
25
+ if (e.editor?.type === "checkbox") {
26
+ let n = e.editor;
27
+ return (e) => t(e, n);
28
+ }
29
+ return (e) => e;
30
+ }, s = (e, t, n) => typeof t == "string" ? o(e)(t, n) : t, c = (t, n, r, i) => t.map((t, a) => a === n ? e(t, r, i) : t);
31
+ //#endregion
32
+ export { s as parseCommittedValue, o as resolveCellParser, i as toDateInputValue, c as writeRowsCell };
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var t=(e,t)=>e.includes(t)||e.includes(`"`)||e.includes(`
2
+ `)||e.includes(`\r`)?`"${e.replace(/"/g,`""`)}"`:e,n=(t,n)=>{let r=e.getCellValue(t,n);return n.formatClipboardValue?n.formatClipboardValue(r,t):String(r??``)},r=({getRow:e,startRow:r,endRow:i,columns:a,delimiter:o=`,`,includeHeaders:s=!0,bom:c=!1,isRowIncluded:l})=>{let u=[];s&&u.push(a.map(e=>t(e.title??e.key,o)).join(o));for(let s=r;s<i;s+=1){let r=e(s);if(!r||l&&!l(r,s))continue;let i=a.map(e=>t(n(r,e),o));u.push(i.join(o))}let d=u.join(`\r
3
+ `);return c?`\uFEFF${d}`:d};exports.serializeRowsToCsv=r;
@@ -0,0 +1,12 @@
1
+ import type { GridColumn } from '../model/gridTypes.unbound';
2
+ export type SerializeRowsToCsvParams<T> = {
3
+ getRow: (viewIndex: number) => T;
4
+ startRow: number;
5
+ endRow: number;
6
+ columns: GridColumn<T>[];
7
+ delimiter?: string;
8
+ includeHeaders?: boolean;
9
+ bom?: boolean;
10
+ isRowIncluded?: (row: T, rowIndex: number) => boolean;
11
+ };
12
+ export declare const serializeRowsToCsv: <T>({ getRow, startRow, endRow, columns, delimiter, includeHeaders, bom, isRowIncluded, }: SerializeRowsToCsvParams<T>) => string;
@@ -0,0 +1,19 @@
1
+ import { getCellValue as e } from "../utils/permissions.js";
2
+ //#region src/logic/exportCsv.ts
3
+ var t = (e, t) => e.includes(t) || e.includes("\"") || e.includes("\n") || e.includes("\r") ? `"${e.replace(/"/g, "\"\"")}"` : e, n = (t, n) => {
4
+ let r = e(t, n);
5
+ return n.formatClipboardValue ? n.formatClipboardValue(r, t) : String(r ?? "");
6
+ }, r = ({ getRow: e, startRow: r, endRow: i, columns: a, delimiter: o = ",", includeHeaders: s = !0, bom: c = !1, isRowIncluded: l }) => {
7
+ let u = [];
8
+ s && u.push(a.map((e) => t(e.title ?? e.key, o)).join(o));
9
+ for (let s = r; s < i; s += 1) {
10
+ let r = e(s);
11
+ if (!r || l && !l(r, s)) continue;
12
+ let i = a.map((e) => t(n(r, e), o));
13
+ u.push(i.join(o));
14
+ }
15
+ let d = u.join("\r\n");
16
+ return c ? `\uFEFF${d}` : d;
17
+ };
18
+ //#endregion
19
+ export { r as serializeRowsToCsv };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var t=({getRow:t,startRow:n,endRow:r,columns:i,isRowIncluded:a})=>{let o=i.map(e=>({key:e.key,title:e.title??e.key})),s=[];for(let o=n;o<r;o+=1){let n=t(o);n&&(a&&!a(n,o)||s.push(i.map(t=>{let r=e.getCellValue(n,t);return{value:r,text:t.formatClipboardValue?t.formatClipboardValue(r,n):String(r??``)}})))}return{columns:o,rows:s}};exports.buildGridExportData=t;
@@ -0,0 +1,9 @@
1
+ import type { GridColumn, GridExportData } from '../model/gridTypes.unbound';
2
+ export type BuildGridExportDataParams<T> = {
3
+ getRow: (viewIndex: number) => T;
4
+ startRow: number;
5
+ endRow: number;
6
+ columns: GridColumn<T>[];
7
+ isRowIncluded?: (row: T, rowIndex: number) => boolean;
8
+ };
9
+ export declare const buildGridExportData: <T>({ getRow, startRow, endRow, columns, isRowIncluded, }: BuildGridExportDataParams<T>) => GridExportData;
@@ -0,0 +1,24 @@
1
+ import { getCellValue as e } from "../utils/permissions.js";
2
+ //#region src/logic/exportData.ts
3
+ var t = ({ getRow: t, startRow: n, endRow: r, columns: i, isRowIncluded: a }) => {
4
+ let o = i.map((e) => ({
5
+ key: e.key,
6
+ title: e.title ?? e.key
7
+ })), s = [];
8
+ for (let o = n; o < r; o += 1) {
9
+ let n = t(o);
10
+ n && (a && !a(n, o) || s.push(i.map((t) => {
11
+ let r = e(n, t);
12
+ return {
13
+ value: r,
14
+ text: t.formatClipboardValue ? t.formatClipboardValue(r, n) : String(r ?? "")
15
+ };
16
+ })));
17
+ }
18
+ return {
19
+ columns: o,
20
+ rows: s
21
+ };
22
+ };
23
+ //#endregion
24
+ export { t as buildGridExportData };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e===`all`?`view`:e===`visible`?`rendered`:e;exports.normalizeExportScope=e;
@@ -0,0 +1,3 @@
1
+ import type { CsvExportScope } from '../model/gridTypes.unbound';
2
+ export type NormalizedCsvExportScope = 'view' | 'raw' | 'rendered' | 'selection';
3
+ export declare const normalizeExportScope: (scope: CsvExportScope) => NormalizedCsvExportScope;
@@ -0,0 +1,4 @@
1
+ //#region src/logic/exportScope.ts
2
+ var e = (e) => e === "all" ? "view" : e === "visible" ? "rendered" : e;
3
+ //#endregion
4
+ export { e as normalizeExportScope };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=({anchorTop:e,anchorBottom:t,anchorRight:n,viewportWidth:r,viewportHeight:i,popupWidth:a,popupHeight:o,offsetY:s,viewportMargin:c})=>{let l=Math.max(0,i-c*2),u=Math.min(o,l),d=n-a;d=Math.max(c,d),d=Math.min(d,r-a-c);let f=t+s;return f+u>i-c&&(f=e-u-s),f=Math.min(f,i-c-u),f=Math.max(c,f),{top:f,left:d,maxHeight:l}};exports.computeFilterPopoverPlacement=e;
@@ -0,0 +1,17 @@
1
+ export type FilterPopoverPlacementInput = {
2
+ anchorTop: number;
3
+ anchorBottom: number;
4
+ anchorRight: number;
5
+ viewportWidth: number;
6
+ viewportHeight: number;
7
+ popupWidth: number;
8
+ popupHeight: number;
9
+ offsetY: number;
10
+ viewportMargin: number;
11
+ };
12
+ export type FilterPopoverPlacement = {
13
+ top: number;
14
+ left: number;
15
+ maxHeight: number;
16
+ };
17
+ export declare const computeFilterPopoverPlacement: ({ anchorTop, anchorBottom, anchorRight, viewportWidth, viewportHeight, popupWidth, popupHeight, offsetY, viewportMargin, }: FilterPopoverPlacementInput) => FilterPopoverPlacement;
@@ -0,0 +1,13 @@
1
+ //#region src/logic/filterPopoverLayout.ts
2
+ var e = ({ anchorTop: e, anchorBottom: t, anchorRight: n, viewportWidth: r, viewportHeight: i, popupWidth: a, popupHeight: o, offsetY: s, viewportMargin: c }) => {
3
+ let l = Math.max(0, i - c * 2), u = Math.min(o, l), d = n - a;
4
+ d = Math.max(c, d), d = Math.min(d, r - a - c);
5
+ let f = t + s;
6
+ return f + u > i - c && (f = e - u - s), f = Math.min(f, i - c - u), f = Math.max(c, f), {
7
+ top: f,
8
+ left: d,
9
+ maxHeight: l
10
+ };
11
+ };
12
+ //#endregion
13
+ export { e as computeFilterPopoverPlacement };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`data-ssg-filter-keep-open`,t=(e,t)=>!(!e||t?.contains(e)||(e instanceof Element?e:e.parentElement)?.closest(`[data-ssg-filter-keep-open]`));exports.FILTER_POPOVER_KEEP_OPEN_ATTRIBUTE=e,exports.isFilterPopoverOutsideTarget=t;
@@ -0,0 +1,2 @@
1
+ export declare const FILTER_POPOVER_KEEP_OPEN_ATTRIBUTE = "data-ssg-filter-keep-open";
2
+ export declare const isFilterPopoverOutsideTarget: (target: Node | null, popoverElement: Element | null) => boolean;
@@ -0,0 +1,4 @@
1
+ //#region src/logic/filterPopoverOutsideClick.ts
2
+ var e = "data-ssg-filter-keep-open", t = (e, t) => !(!e || t?.contains(e) || (e instanceof Element ? e : e.parentElement)?.closest("[data-ssg-filter-keep-open]"));
3
+ //#endregion
4
+ export { e as FILTER_POPOVER_KEEP_OPEN_ATTRIBUTE, t as isFilterPopoverOutsideTarget };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./numberFilterCondition.cjs"),t=require("./textFilterCondition.cjs"),n=require("./dateFilterCondition.cjs");var r=e=>e===``?`(空白)`:`"${e}"`,i=(e,t)=>(e??`include`)===`exclude`?`${t.length} 件を除外`:t.length>0&&t.length<=2?t.map(r).join(`, `):`${t.length} 件を選択`,a=(r,a)=>{switch(r.kind){case`text`:case`date`:return`"${r.value.trim()}" を含む`;case`select`:return`"${r.value}" に一致`;case`number`:return r.raw;case`set`:return i(r.mode,r.values);case`numberSet`:case`textSet`:case`dateSet`:{let o=r.condition?r.kind===`numberSet`?e.formatParsedNumberFilter(r.condition):r.kind===`textSet`?t.formatParsedTextFilter(r.condition):n.formatParsedDateFilter(r.condition,a):null,s=r.set?i(r.set.mode,r.set.values):null;return o&&s?`${o} かつ ${s}`:o??s??`フィルターなし`}case`custom`:return typeof r.value==`string`&&r.value.trim().length>0?`"${r.value.trim()}"`:`カスタム条件`}};exports.describeColumnFilterValue=a;
@@ -0,0 +1,3 @@
1
+ import type { ColumnFilterValue } from '../model/gridTypes.unbound';
2
+ import type { NormalizedDateFilterPreset } from './dateFilterPresets';
3
+ export declare const describeColumnFilterValue: (value: ColumnFilterValue, datePresets?: readonly NormalizedDateFilterPreset[]) => string;
@@ -0,0 +1,22 @@
1
+ import { formatParsedNumberFilter as e } from "./numberFilterCondition.js";
2
+ import { formatParsedTextFilter as t } from "./textFilterCondition.js";
3
+ import { formatParsedDateFilter as n } from "./dateFilterCondition.js";
4
+ //#region src/logic/filterSummary.ts
5
+ var r = (e) => e === "" ? "(空白)" : `"${e}"`, i = (e, t) => (e ?? "include") === "exclude" ? `${t.length} 件を除外` : t.length > 0 && t.length <= 2 ? t.map(r).join(", ") : `${t.length} 件を選択`, a = (r, a) => {
6
+ switch (r.kind) {
7
+ case "text":
8
+ case "date": return `"${r.value.trim()}" を含む`;
9
+ case "select": return `"${r.value}" に一致`;
10
+ case "number": return r.raw;
11
+ case "set": return i(r.mode, r.values);
12
+ case "numberSet":
13
+ case "textSet":
14
+ case "dateSet": {
15
+ let o = r.condition ? r.kind === "numberSet" ? e(r.condition) : r.kind === "textSet" ? t(r.condition) : n(r.condition, a) : null, s = r.set ? i(r.set.mode, r.set.values) : null;
16
+ return o && s ? `${o} かつ ${s}` : o ?? s ?? "フィルターなし";
17
+ }
18
+ case "custom": return typeof r.value == "string" && r.value.trim().length > 0 ? `"${r.value.trim()}"` : "カスタム条件";
19
+ }
20
+ };
21
+ //#endregion
22
+ export { a as describeColumnFilterValue };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("./dateFilterPresets.cjs");var n=e=>{let t=new Int32Array(e);for(let n=0;n<e;n+=1)t[n]=n;return t},r=e=>e?.kind===`set`,i=e=>e?.kind===`numberSet`,a=e=>e?.kind===`textSet`,o=e=>e?.kind===`dateSet`,s=e=>e==null||String(e).trim()===``,c=e=>{if(!e)return!1;switch(e.kind){case`set`:case`number`:case`custom`:return!0;case`numberSet`:case`textSet`:case`dateSet`:return e.condition!==null||e.set!==null;case`select`:return e.value.length>0;case`text`:case`date`:return e.value.trim().length>0}},l=e=>e==null||typeof e==`string`&&e.trim()===``?NaN:Number(e),u=(e,t)=>{if(e.mode===`blank`||e.mode===`notBlank`)return s(t)===(e.mode===`blank`);let n=l(t);if(!Number.isFinite(n))return!1;if(e.mode===`range`)return n>=e.min&&n<=e.max;switch(e.operator){case`>`:return n>e.value;case`>=`:return n>=e.value;case`<`:return n<e.value;case`<=`:return n<=e.value;case`!=`:return n!==e.value;default:return n===e.value}},d=(e,t)=>{if(e.mode===`blank`||e.mode===`notBlank`)return s(t)===(e.mode===`blank`);let n=String(t??``).toLowerCase(),r=e.value.toLowerCase();switch(e.mode){case`equals`:return n===r;case`startsWith`:return n.startsWith(r);case`endsWith`:return n.endsWith(r);default:return n.includes(r)}},f=e=>String(e).padStart(2,`0`),p=e=>`${e.getFullYear()}-${f(e.getMonth()+1)}-${f(e.getDate())}`,m=e=>{if(e==null)return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:p(e);let t=String(e).trim();if(!t)return null;let n=t.match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})(?:[T ].*)?$/);if(!n)return null;let r=Number(n[2]),i=Number(n[3]);return r<1||r>12||i<1||i>31?null:`${n[1]}-${f(r)}-${f(i)}`},h=e=>{let t=m(e);return t===null?s(e)?``:String(e):t},g=(e,t)=>{let n=p(t);switch(e){case`today`:return{from:n,to:n};case`thisMonth`:{let e=new Date(t.getFullYear(),t.getMonth(),1),n=new Date(t.getFullYear(),t.getMonth()+1,0);return{from:p(e),to:p(n)}}default:return{from:p(new Date(t.getFullYear(),t.getMonth(),t.getDate()-29)),to:n}}},_=e=>e===void 0?null:m(e),v=(e,n,r)=>{if(e.mode!==`preset`)return e;let i=r?.find(t=>t.id===e.preset);if(i?.resolve){let e=i.resolve(n),t=_(e.from),r=_(e.to);return t!==null&&r!==null?t<=r?{mode:`range`,from:t,to:r}:{mode:`range`,from:r,to:t}:t===null?r===null?null:{mode:`onOrBefore`,value:r}:{mode:`onOrAfter`,value:t}}return t.isBuiltinDateFilterPreset(e.preset)?{mode:`range`,...g(e.preset,n)}:null},y=(e,t,n,r)=>{let i=v(e,n,r);if(i===null)return!0;if(i.mode===`blank`||i.mode===`notBlank`)return s(t)===(i.mode===`blank`);let a=m(t);if(a===null)return!1;switch(i.mode){case`range`:return a>=i.from&&a<=i.to;case`onOrAfter`:return a>=i.value;case`onOrBefore`:return a<=i.value;case`notEquals`:return a!==i.value;default:return a===i.value}},b=e=>{let t=e?.kind===`number`?e.parsed:e?.kind===`numberSet`?e.condition:null;return t?.mode===`comparison`||t?.mode===`range`},x=e=>{let t=e.trim();if(!t)return null;let n=t.match(/^(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)$/);if(n){let e=Number(n[1]),t=Number(n[2]);return!Number.isFinite(e)||!Number.isFinite(t)?null:{mode:`range`,min:Math.min(e,t),max:Math.max(e,t)}}let r=t.match(/^(<=|>=|=|<|>)?\s*(-?\d+(?:\.\d+)?)$/);return r?{mode:`comparison`,operator:r[1]??`=`,value:Number(r[2])}:null},S=e=>e?.kind===`number`,C=e=>{let t=e.trim();return t?{kind:`number`,raw:t,parsed:x(t)}:null},w=e=>{if(!e)return``;switch(e.kind){case`number`:return e.raw;case`text`:case`date`:case`select`:return e.value;case`set`:case`numberSet`:case`textSet`:case`dateSet`:case`custom`:return``}},T=(e,t)=>{let n=String(t??``).trim();if(!n)return!0;let r=x(n);if(!r)return String(e??``).toLowerCase().includes(n.toLowerCase());if(r.mode===`blank`||r.mode===`notBlank`)return s(e)===(r.mode===`blank`);let i=l(e);if(!Number.isFinite(i))return!1;if(r.mode===`range`)return i>=r.min&&i<=r.max;switch(r.operator){case`>`:return i>r.value;case`>=`:return i>=r.value;case`<`:return i<r.value;case`<=`:return i<=r.value;case`!=`:return i!==r.value;default:return i===r.value}},E=(t,n,r)=>{if(t.mode===`blank`||t.mode===`notBlank`){let r=t.mode===`blank`;return t=>s(e.getCellValue(t,n))===r}if(t.mode===`range`){let{min:i,max:a}=t;return(t,o)=>{let s=r?r[o]:l(e.getCellValue(t,n));return Number.isFinite(s)&&s>=i&&s<=a}}let{operator:i,value:a}=t;return(t,o)=>{let s=r?r[o]:l(e.getCellValue(t,n));if(!Number.isFinite(s))return!1;switch(i){case`>`:return s>a;case`>=`:return s>=a;case`<`:return s<a;case`<=`:return s<=a;case`!=`:return s!==a;default:return s===a}}},D=(t,n)=>{if(t.mode===`blank`||t.mode===`notBlank`){let r=t.mode===`blank`;return t=>s(e.getCellValue(t,n))===r}let r=t.value.toLowerCase(),i=t.mode;return t=>{let a=String(e.getCellValue(t,n)??``).toLowerCase();switch(i){case`equals`:return a===r;case`startsWith`:return a.startsWith(r);case`endsWith`:return a.endsWith(r);default:return a.includes(r)}}},O=(t,n,r)=>{let i=new Set(n);return t===`exclude`?t=>!i.has(String(e.getCellValue(t,r)??``)):t=>i.has(String(e.getCellValue(t,r)??``))},k=(t,n,r)=>{let i=new Set(n);return t===`exclude`?t=>!i.has(h(e.getCellValue(t,r))):t=>i.has(h(e.getCellValue(t,r)))},A=(n,r,i)=>{let a=v(n,i,t.normalizeDateFilterPresets(r.dateFilterPresets));if(a===null)return()=>!0;if(a.mode===`blank`||a.mode===`notBlank`){let t=a.mode===`blank`;return n=>s(e.getCellValue(n,r))===t}if(a.mode===`range`){let{from:t,to:n}=a;return i=>{let a=m(e.getCellValue(i,r));return a!==null&&a>=t&&a<=n}}let{mode:o,value:c}=a;return t=>{let n=m(e.getCellValue(t,r));if(n===null)return!1;switch(o){case`onOrAfter`:return n>=c;case`onOrBefore`:return n<=c;case`notEquals`:return n!==c;default:return n===c}}},j=(t,n,r,i)=>{if(!c(n))return null;let a=n;if(t.filterFn){let e=t.filterFn;return t=>e(t,a)}switch(a.kind){case`set`:return O(a.mode,a.values,t);case`number`:{let n=a.parsed;if(n===null){let n=a.raw.toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}return E(n,t,r)}case`numberSet`:case`textSet`:case`dateSet`:{let e=a.kind===`numberSet`?a.condition?E(a.condition,t,r):null:a.kind===`textSet`?a.condition?D(a.condition,t):null:a.condition?A(a.condition,t,i??new Date):null,n=a.set?a.kind===`dateSet`?k(a.set.mode,a.set.values,t):O(a.set.mode,a.set.values,t):null;return e&&n?(t,r)=>e(t,r)&&n(t,r):e??n}case`select`:{let n=a.value;return r=>String(e.getCellValue(r,t)??``)===n}case`text`:case`date`:{let n=a.value.trim().toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}case`custom`:{let n=String(a.value??``).trim().toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}}},M=(t,n,r)=>{let i=n.length;for(let a=0;a<i;a+=1){let i=e.getCellValue(t,n[a]);if(String(i??``).toLowerCase().includes(r))return!0}return!1},N=(e,t,n,r)=>{let i=r.trim().toLowerCase();if(!i)return t;let a=t.length,o=new Int32Array(a),s=0;for(let r=0;r<a;r+=1){let a=t[r];M(e[a],n,i)&&(o[s]=a,s+=1)}return s===a?t:o.slice(0,s)},P=(e,t,n,r,i,a)=>{let o=[],s=a??new Date;for(let e of n){let t=j(e,r[e.key],i?.get(e.key),s);t&&o.push(t)}if(o.length===0)return t;let c=t.length,l=o.length,u=new Int32Array(c),d=0;for(let n=0;n<c;n+=1){let r=t[n],i=e[r],a=!0;for(let e=0;e<l;e+=1)if(!o[e](i,r)){a=!1;break}a&&(u[d]=r,d+=1)}return d===c?t:u.slice(0,d)};exports.applyNumberFilter=T,exports.buildNumberColumnFilterValue=C,exports.coerceNumberFilterCellValue=l,exports.columnFilterUsesNumericKey=b,exports.columnFilterValueToDraftText=w,exports.createSourceOrder=n,exports.filterOrderByColumns=P,exports.filterOrderByGlobalText=N,exports.formatDateKey=p,exports.isActiveColumnFilterValue=c,exports.isBlankCellValue=s,exports.isDateSetColumnFilterValue=o,exports.isNumberColumnFilterValue=S,exports.isNumberSetColumnFilterValue=i,exports.isSetColumnFilterValue=r,exports.isTextSetColumnFilterValue=a,exports.matchesParsedDateFilter=y,exports.matchesParsedNumberFilter=u,exports.matchesParsedTextFilter=d,exports.parseNumberFilterExpression=x,exports.resolveDateFilterPreset=g,exports.resolveParsedDateFilter=v,exports.rowMatchesGlobalText=M,exports.toDateKey=m,exports.toDateSetKey=h;
@@ -0,0 +1,33 @@
1
+ import type { ColumnFilterValue, DateFilterPreset, DateSetColumnFilterValue, GridColumn, NumberColumnFilterValue, NumberSetColumnFilterValue, ParsedDateFilter, ParsedNumberFilter, ParsedTextFilter, SetColumnFilterValue, TextSetColumnFilterValue } from '../model/gridTypes.unbound';
2
+ import { type NormalizedDateFilterPreset } from './dateFilterPresets';
3
+ export type RowOrder = Int32Array;
4
+ export declare const createSourceOrder: (rowCount: number) => RowOrder;
5
+ export declare const isSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is SetColumnFilterValue;
6
+ export declare const isNumberSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is NumberSetColumnFilterValue;
7
+ export declare const isTextSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is TextSetColumnFilterValue;
8
+ export declare const isDateSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is DateSetColumnFilterValue;
9
+ export declare const isBlankCellValue: (cellValue: unknown) => boolean;
10
+ export declare const isActiveColumnFilterValue: (value: ColumnFilterValue | undefined) => boolean;
11
+ export declare const coerceNumberFilterCellValue: (cellValue: unknown) => number;
12
+ export declare const matchesParsedNumberFilter: (parsed: ParsedNumberFilter, cellValue: unknown) => boolean;
13
+ export declare const matchesParsedTextFilter: (parsed: ParsedTextFilter, cellValue: unknown) => boolean;
14
+ export declare const formatDateKey: (date: Date) => string;
15
+ export declare const toDateKey: (cellValue: unknown) => string | null;
16
+ export declare const toDateSetKey: (cellValue: unknown) => string;
17
+ export declare const resolveDateFilterPreset: (preset: DateFilterPreset, now: Date) => {
18
+ from: string;
19
+ to: string;
20
+ };
21
+ export declare const resolveParsedDateFilter: (parsed: ParsedDateFilter, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => Exclude<ParsedDateFilter, {
22
+ mode: "preset";
23
+ }> | null;
24
+ export declare const matchesParsedDateFilter: (parsed: ParsedDateFilter, cellValue: unknown, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => boolean;
25
+ export declare const columnFilterUsesNumericKey: (value: ColumnFilterValue | undefined) => boolean;
26
+ export declare const parseNumberFilterExpression: (rawValue: string) => ParsedNumberFilter | null;
27
+ export declare const isNumberColumnFilterValue: (value: ColumnFilterValue | undefined) => value is NumberColumnFilterValue;
28
+ export declare const buildNumberColumnFilterValue: (rawInput: string) => NumberColumnFilterValue | null;
29
+ export declare const columnFilterValueToDraftText: (value: ColumnFilterValue | undefined) => string;
30
+ export declare const applyNumberFilter: (cellValue: unknown, filterValue: unknown) => boolean;
31
+ export declare const rowMatchesGlobalText: <T>(row: T, columns: GridColumn<T>[], normalizedNeedle: string) => boolean;
32
+ export declare const filterOrderByGlobalText: <T>(rows: T[], order: RowOrder, columns: GridColumn<T>[], globalText: string) => RowOrder;
33
+ export declare const filterOrderByColumns: <T>(rows: T[], order: RowOrder, columns: GridColumn<T>[], columnFilters: Record<string, ColumnFilterValue>, numericKeys?: ReadonlyMap<string, Float64Array>, now?: Date) => RowOrder;