@zengrid/core 1.0.1

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 (252) hide show
  1. package/README.md +55 -0
  2. package/dist/README.md +55 -0
  3. package/dist/index.cjs.default.js +1 -0
  4. package/dist/index.cjs.js +9882 -0
  5. package/dist/index.cjs.mjs +2 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.esm.js +9847 -0
  8. package/dist/package.json +49 -0
  9. package/dist/src/a11y/aria-manager.d.ts +171 -0
  10. package/dist/src/a11y/aria-manager.d.ts.map +1 -0
  11. package/dist/src/a11y/focus-manager.d.ts +124 -0
  12. package/dist/src/a11y/focus-manager.d.ts.map +1 -0
  13. package/dist/src/a11y/index.d.ts +8 -0
  14. package/dist/src/a11y/index.d.ts.map +1 -0
  15. package/dist/src/data/data-accessor/array-accessor.d.ts +38 -0
  16. package/dist/src/data/data-accessor/array-accessor.d.ts.map +1 -0
  17. package/dist/src/data/data-accessor/column-store-accessor.d.ts +41 -0
  18. package/dist/src/data/data-accessor/column-store-accessor.d.ts.map +1 -0
  19. package/dist/src/data/data-accessor/data-accessor.interface.d.ts +41 -0
  20. package/dist/src/data/data-accessor/data-accessor.interface.d.ts.map +1 -0
  21. package/dist/src/data/data-accessor/index.d.ts +9 -0
  22. package/dist/src/data/data-accessor/index.d.ts.map +1 -0
  23. package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts +39 -0
  24. package/dist/src/data/data-accessor/sparse-matrix-accessor.d.ts.map +1 -0
  25. package/dist/src/data/data-manager.d.ts +161 -0
  26. package/dist/src/data/data-manager.d.ts.map +1 -0
  27. package/dist/src/data/data-source.interface.d.ts +82 -0
  28. package/dist/src/data/data-source.interface.d.ts.map +1 -0
  29. package/dist/src/data/grid-data-model.d.ts +102 -0
  30. package/dist/src/data/grid-data-model.d.ts.map +1 -0
  31. package/dist/src/data/index-map/index-map.d.ts +30 -0
  32. package/dist/src/data/index-map/index-map.d.ts.map +1 -0
  33. package/dist/src/data/index-map/index-map.interface.d.ts +49 -0
  34. package/dist/src/data/index-map/index-map.interface.d.ts.map +1 -0
  35. package/dist/src/data/index-map/index.d.ts +7 -0
  36. package/dist/src/data/index-map/index.d.ts.map +1 -0
  37. package/dist/src/data/index.d.ts +9 -0
  38. package/dist/src/data/index.d.ts.map +1 -0
  39. package/dist/src/editing/cell-editor.interface.d.ts +87 -0
  40. package/dist/src/editing/cell-editor.interface.d.ts.map +1 -0
  41. package/dist/src/editing/date-editor.d.ts +67 -0
  42. package/dist/src/editing/date-editor.d.ts.map +1 -0
  43. package/dist/src/editing/editor-manager.d.ts +141 -0
  44. package/dist/src/editing/editor-manager.d.ts.map +1 -0
  45. package/dist/src/editing/index.d.ts +15 -0
  46. package/dist/src/editing/index.d.ts.map +1 -0
  47. package/dist/src/editing/number-editor.d.ts +68 -0
  48. package/dist/src/editing/number-editor.d.ts.map +1 -0
  49. package/dist/src/editing/select-editor.d.ts +53 -0
  50. package/dist/src/editing/select-editor.d.ts.map +1 -0
  51. package/dist/src/editing/text-editor.d.ts +69 -0
  52. package/dist/src/editing/text-editor.d.ts.map +1 -0
  53. package/dist/src/events/event-emitter.d.ts +90 -0
  54. package/dist/src/events/event-emitter.d.ts.map +1 -0
  55. package/dist/src/events/grid-events.d.ts +277 -0
  56. package/dist/src/events/grid-events.d.ts.map +1 -0
  57. package/dist/src/events/index.d.ts +6 -0
  58. package/dist/src/events/index.d.ts.map +1 -0
  59. package/dist/src/features/autofill/autofill-manager.d.ts +103 -0
  60. package/dist/src/features/autofill/autofill-manager.d.ts.map +1 -0
  61. package/dist/src/features/autofill/index.d.ts +6 -0
  62. package/dist/src/features/autofill/index.d.ts.map +1 -0
  63. package/dist/src/features/column-resize/auto-fit-calculator.d.ts +52 -0
  64. package/dist/src/features/column-resize/auto-fit-calculator.d.ts.map +1 -0
  65. package/dist/src/features/column-resize/column-resize-manager.d.ts +114 -0
  66. package/dist/src/features/column-resize/column-resize-manager.d.ts.map +1 -0
  67. package/dist/src/features/column-resize/column-resize-manager.interface.d.ts +167 -0
  68. package/dist/src/features/column-resize/column-resize-manager.interface.d.ts.map +1 -0
  69. package/dist/src/features/column-resize/column-resize.styles.css +30 -0
  70. package/dist/src/features/column-resize/index.d.ts +15 -0
  71. package/dist/src/features/column-resize/index.d.ts.map +1 -0
  72. package/dist/src/features/column-resize/resize-constraint-manager.d.ts +52 -0
  73. package/dist/src/features/column-resize/resize-constraint-manager.d.ts.map +1 -0
  74. package/dist/src/features/column-resize/resize-handle-renderer.d.ts +41 -0
  75. package/dist/src/features/column-resize/resize-handle-renderer.d.ts.map +1 -0
  76. package/dist/src/features/column-resize/resize-preview.d.ts +32 -0
  77. package/dist/src/features/column-resize/resize-preview.d.ts.map +1 -0
  78. package/dist/src/features/column-resize/resize-state-manager.d.ts +75 -0
  79. package/dist/src/features/column-resize/resize-state-manager.d.ts.map +1 -0
  80. package/dist/src/features/column-resize/resize-strategies.d.ts +26 -0
  81. package/dist/src/features/column-resize/resize-strategies.d.ts.map +1 -0
  82. package/dist/src/features/column-resize/resize-test-helper.d.ts +71 -0
  83. package/dist/src/features/column-resize/resize-test-helper.d.ts.map +1 -0
  84. package/dist/src/features/column-resize/resize-zone-detector.d.ts +32 -0
  85. package/dist/src/features/column-resize/resize-zone-detector.d.ts.map +1 -0
  86. package/dist/src/features/copy-paste/clipboard-manager.d.ts +116 -0
  87. package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -0
  88. package/dist/src/features/copy-paste/index.d.ts +6 -0
  89. package/dist/src/features/copy-paste/index.d.ts.map +1 -0
  90. package/dist/src/features/filtering/adapters/adapter.interface.d.ts +100 -0
  91. package/dist/src/features/filtering/adapters/adapter.interface.d.ts.map +1 -0
  92. package/dist/src/features/filtering/adapters/graphql-adapter.d.ts +124 -0
  93. package/dist/src/features/filtering/adapters/graphql-adapter.d.ts.map +1 -0
  94. package/dist/src/features/filtering/adapters/index.d.ts +11 -0
  95. package/dist/src/features/filtering/adapters/index.d.ts.map +1 -0
  96. package/dist/src/features/filtering/adapters/rest-adapter.d.ts +108 -0
  97. package/dist/src/features/filtering/adapters/rest-adapter.d.ts.map +1 -0
  98. package/dist/src/features/filtering/adapters/sql-adapter.d.ts +123 -0
  99. package/dist/src/features/filtering/adapters/sql-adapter.d.ts.map +1 -0
  100. package/dist/src/features/filtering/adapters/types.d.ts +201 -0
  101. package/dist/src/features/filtering/adapters/types.d.ts.map +1 -0
  102. package/dist/src/features/filtering/column-filter.d.ts +117 -0
  103. package/dist/src/features/filtering/column-filter.d.ts.map +1 -0
  104. package/dist/src/features/filtering/filter-autocomplete.d.ts +78 -0
  105. package/dist/src/features/filtering/filter-autocomplete.d.ts.map +1 -0
  106. package/dist/src/features/filtering/filter-cache.d.ts +113 -0
  107. package/dist/src/features/filtering/filter-cache.d.ts.map +1 -0
  108. package/dist/src/features/filtering/filter-compiler.d.ts +66 -0
  109. package/dist/src/features/filtering/filter-compiler.d.ts.map +1 -0
  110. package/dist/src/features/filtering/filter-export-manager.d.ts +131 -0
  111. package/dist/src/features/filtering/filter-export-manager.d.ts.map +1 -0
  112. package/dist/src/features/filtering/filter-index-manager.d.ts +126 -0
  113. package/dist/src/features/filtering/filter-index-manager.d.ts.map +1 -0
  114. package/dist/src/features/filtering/filter-manager.d.ts +408 -0
  115. package/dist/src/features/filtering/filter-manager.d.ts.map +1 -0
  116. package/dist/src/features/filtering/filter-optimizer.d.ts +101 -0
  117. package/dist/src/features/filtering/filter-optimizer.d.ts.map +1 -0
  118. package/dist/src/features/filtering/filter-query-parser.d.ts +69 -0
  119. package/dist/src/features/filtering/filter-query-parser.d.ts.map +1 -0
  120. package/dist/src/features/filtering/index.d.ts +20 -0
  121. package/dist/src/features/filtering/index.d.ts.map +1 -0
  122. package/dist/src/features/filtering/range-filter-optimizer.d.ts +138 -0
  123. package/dist/src/features/filtering/range-filter-optimizer.d.ts.map +1 -0
  124. package/dist/src/features/filtering/substring-filter.d.ts +90 -0
  125. package/dist/src/features/filtering/substring-filter.d.ts.map +1 -0
  126. package/dist/src/features/filtering/types.d.ts +204 -0
  127. package/dist/src/features/filtering/types.d.ts.map +1 -0
  128. package/dist/src/features/formulas/formula-calculator.d.ts +151 -0
  129. package/dist/src/features/formulas/formula-calculator.d.ts.map +1 -0
  130. package/dist/src/features/formulas/index.d.ts +6 -0
  131. package/dist/src/features/formulas/index.d.ts.map +1 -0
  132. package/dist/src/features/hit-testing/index.d.ts +7 -0
  133. package/dist/src/features/hit-testing/index.d.ts.map +1 -0
  134. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts +137 -0
  135. package/dist/src/features/hit-testing/spatial-hit-tester.d.ts.map +1 -0
  136. package/dist/src/features/loading/index.d.ts +5 -0
  137. package/dist/src/features/loading/index.d.ts.map +1 -0
  138. package/dist/src/features/loading/loading-indicator.d.ts +79 -0
  139. package/dist/src/features/loading/loading-indicator.d.ts.map +1 -0
  140. package/dist/src/features/loading/loading.styles.css +413 -0
  141. package/dist/src/features/pagination/index.d.ts +5 -0
  142. package/dist/src/features/pagination/index.d.ts.map +1 -0
  143. package/dist/src/features/pagination/pagination.styles.css +288 -0
  144. package/dist/src/features/pagination/paginator.d.ts +89 -0
  145. package/dist/src/features/pagination/paginator.d.ts.map +1 -0
  146. package/dist/src/features/selection/index.d.ts +7 -0
  147. package/dist/src/features/selection/index.d.ts.map +1 -0
  148. package/dist/src/features/selection/selection-manager.d.ts +167 -0
  149. package/dist/src/features/selection/selection-manager.d.ts.map +1 -0
  150. package/dist/src/features/sorting/index.d.ts +13 -0
  151. package/dist/src/features/sorting/index.d.ts.map +1 -0
  152. package/dist/src/features/sorting/row-sorter.interface.d.ts +63 -0
  153. package/dist/src/features/sorting/row-sorter.interface.d.ts.map +1 -0
  154. package/dist/src/features/sorting/single-column-sorter.d.ts +75 -0
  155. package/dist/src/features/sorting/single-column-sorter.d.ts.map +1 -0
  156. package/dist/src/features/sorting/sort-manager.d.ts +132 -0
  157. package/dist/src/features/sorting/sort-manager.d.ts.map +1 -0
  158. package/dist/src/features/undo-redo/index.d.ts +8 -0
  159. package/dist/src/features/undo-redo/index.d.ts.map +1 -0
  160. package/dist/src/features/undo-redo/undo-redo-manager.d.ts +215 -0
  161. package/dist/src/features/undo-redo/undo-redo-manager.d.ts.map +1 -0
  162. package/dist/src/grid.d.ts +412 -0
  163. package/dist/src/grid.d.ts.map +1 -0
  164. package/dist/src/i18n/index.d.ts +8 -0
  165. package/dist/src/i18n/index.d.ts.map +1 -0
  166. package/dist/src/i18n/locale-manager.d.ts +123 -0
  167. package/dist/src/i18n/locale-manager.d.ts.map +1 -0
  168. package/dist/src/i18n/rtl-support.d.ts +120 -0
  169. package/dist/src/i18n/rtl-support.d.ts.map +1 -0
  170. package/dist/src/index.d.ts +38 -0
  171. package/dist/src/index.d.ts.map +1 -0
  172. package/dist/src/keyboard/index.d.ts +6 -0
  173. package/dist/src/keyboard/index.d.ts.map +1 -0
  174. package/dist/src/keyboard/keyboard-navigator.d.ts +171 -0
  175. package/dist/src/keyboard/keyboard-navigator.d.ts.map +1 -0
  176. package/dist/src/rendering/cache/index.d.ts +3 -0
  177. package/dist/src/rendering/cache/index.d.ts.map +1 -0
  178. package/dist/src/rendering/cache/renderer-cache.d.ts +100 -0
  179. package/dist/src/rendering/cache/renderer-cache.d.ts.map +1 -0
  180. package/dist/src/rendering/cache/renderer-cache.interface.d.ts +89 -0
  181. package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -0
  182. package/dist/src/rendering/cell-pool/cell-pool.d.ts +36 -0
  183. package/dist/src/rendering/cell-pool/cell-pool.d.ts.map +1 -0
  184. package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts +76 -0
  185. package/dist/src/rendering/cell-pool/cell-pool.interface.d.ts.map +1 -0
  186. package/dist/src/rendering/cell-pool/index.d.ts +6 -0
  187. package/dist/src/rendering/cell-pool/index.d.ts.map +1 -0
  188. package/dist/src/rendering/cell-positioner/cell-positioner.d.ts +46 -0
  189. package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -0
  190. package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts +86 -0
  191. package/dist/src/rendering/cell-positioner/cell-positioner.interface.d.ts.map +1 -0
  192. package/dist/src/rendering/cell-positioner/index.d.ts +6 -0
  193. package/dist/src/rendering/cell-positioner/index.d.ts.map +1 -0
  194. package/dist/src/rendering/height-provider/height-provider.interface.d.ts +62 -0
  195. package/dist/src/rendering/height-provider/height-provider.interface.d.ts.map +1 -0
  196. package/dist/src/rendering/height-provider/index.d.ts +7 -0
  197. package/dist/src/rendering/height-provider/index.d.ts.map +1 -0
  198. package/dist/src/rendering/height-provider/uniform-height-provider.d.ts +31 -0
  199. package/dist/src/rendering/height-provider/uniform-height-provider.d.ts.map +1 -0
  200. package/dist/src/rendering/height-provider/variable-height-provider.d.ts +33 -0
  201. package/dist/src/rendering/height-provider/variable-height-provider.d.ts.map +1 -0
  202. package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts +105 -0
  203. package/dist/src/rendering/renderers/advanced-cell-renderer.d.ts.map +1 -0
  204. package/dist/src/rendering/renderers/image-renderer.d.ts +60 -0
  205. package/dist/src/rendering/renderers/image-renderer.d.ts.map +1 -0
  206. package/dist/src/rendering/renderers/index.d.ts +13 -0
  207. package/dist/src/rendering/renderers/index.d.ts.map +1 -0
  208. package/dist/src/rendering/renderers/number-renderer.d.ts +71 -0
  209. package/dist/src/rendering/renderers/number-renderer.d.ts.map +1 -0
  210. package/dist/src/rendering/renderers/renderer-registry.d.ts +55 -0
  211. package/dist/src/rendering/renderers/renderer-registry.d.ts.map +1 -0
  212. package/dist/src/rendering/renderers/renderer.interface.d.ts +79 -0
  213. package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -0
  214. package/dist/src/rendering/renderers/text-renderer.d.ts +20 -0
  215. package/dist/src/rendering/renderers/text-renderer.d.ts.map +1 -0
  216. package/dist/src/rendering/spatial-hit-tester.d.ts +108 -0
  217. package/dist/src/rendering/spatial-hit-tester.d.ts.map +1 -0
  218. package/dist/src/rendering/virtual-scroller/index.d.ts +6 -0
  219. package/dist/src/rendering/virtual-scroller/index.d.ts.map +1 -0
  220. package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts +56 -0
  221. package/dist/src/rendering/virtual-scroller/virtual-scroller.d.ts.map +1 -0
  222. package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts +170 -0
  223. package/dist/src/rendering/virtual-scroller/virtual-scroller.interface.d.ts.map +1 -0
  224. package/dist/src/rendering/width-provider/index.d.ts +7 -0
  225. package/dist/src/rendering/width-provider/index.d.ts.map +1 -0
  226. package/dist/src/rendering/width-provider/uniform-width-provider.d.ts +31 -0
  227. package/dist/src/rendering/width-provider/uniform-width-provider.d.ts.map +1 -0
  228. package/dist/src/rendering/width-provider/variable-width-provider.d.ts +33 -0
  229. package/dist/src/rendering/width-provider/variable-width-provider.d.ts.map +1 -0
  230. package/dist/src/rendering/width-provider/width-provider.interface.d.ts +62 -0
  231. package/dist/src/rendering/width-provider/width-provider.interface.d.ts.map +1 -0
  232. package/dist/src/selection/hit-tester.d.ts +168 -0
  233. package/dist/src/selection/hit-tester.d.ts.map +1 -0
  234. package/dist/src/selection/hit-tester.interface.d.ts +108 -0
  235. package/dist/src/selection/hit-tester.interface.d.ts.map +1 -0
  236. package/dist/src/selection/index.d.ts +9 -0
  237. package/dist/src/selection/index.d.ts.map +1 -0
  238. package/dist/src/selection/range-utils.d.ts +219 -0
  239. package/dist/src/selection/range-utils.d.ts.map +1 -0
  240. package/dist/src/selection/range-utils.interface.d.ts +51 -0
  241. package/dist/src/selection/range-utils.interface.d.ts.map +1 -0
  242. package/dist/src/styles/grid.css +356 -0
  243. package/dist/src/styles.css +273 -0
  244. package/dist/src/touch/index.d.ts +6 -0
  245. package/dist/src/touch/index.d.ts.map +1 -0
  246. package/dist/src/touch/touch-handler.d.ts +167 -0
  247. package/dist/src/touch/touch-handler.d.ts.map +1 -0
  248. package/dist/src/types/index.d.ts +133 -0
  249. package/dist/src/types/index.d.ts.map +1 -0
  250. package/dist/src/types.d.ts +559 -0
  251. package/dist/src/types.d.ts.map +1 -0
  252. package/package.json +47 -0
@@ -0,0 +1,116 @@
1
+ import type { CellRange } from '../../types';
2
+ import type { EventEmitter } from '../../events/event-emitter';
3
+ import type { GridEvents } from '../../events/grid-events';
4
+ /**
5
+ * Clipboard manager options
6
+ */
7
+ export interface ClipboardManagerOptions {
8
+ /**
9
+ * Event emitter for grid events
10
+ */
11
+ events?: EventEmitter<GridEvents>;
12
+ /**
13
+ * Callback to get cell value
14
+ */
15
+ getValue: (row: number, col: number) => any;
16
+ /**
17
+ * Callback to set cell value
18
+ */
19
+ setValue: (row: number, col: number, value: any) => void;
20
+ /**
21
+ * Callback to delete cell value
22
+ */
23
+ deleteValue?: (row: number, col: number) => void;
24
+ /**
25
+ * Include headers in copy
26
+ * @default false
27
+ */
28
+ includeHeaders?: boolean;
29
+ /**
30
+ * Callback to get column header
31
+ */
32
+ getColumnHeader?: (col: number) => string;
33
+ }
34
+ /**
35
+ * ClipboardManager - Handles copy/cut/paste operations
36
+ *
37
+ * Supports multiple formats:
38
+ * - text/plain: TSV (tab-separated values)
39
+ * - text/html: HTML table format
40
+ *
41
+ * Compatible with Excel and Google Sheets.
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const clipboard = new ClipboardManager({
46
+ * getValue: (row, col) => data[row][col],
47
+ * setValue: (row, col, value) => { data[row][col] = value; },
48
+ * });
49
+ *
50
+ * // Copy selection
51
+ * await clipboard.copy([
52
+ * { startRow: 0, startCol: 0, endRow: 2, endCol: 2 },
53
+ * ]);
54
+ *
55
+ * // Paste at location
56
+ * await clipboard.paste(5, 0);
57
+ * ```
58
+ */
59
+ export declare class ClipboardManager {
60
+ private events?;
61
+ private getValue;
62
+ private setValue;
63
+ private deleteValue?;
64
+ private includeHeaders;
65
+ private getColumnHeader?;
66
+ constructor(options: ClipboardManagerOptions);
67
+ /**
68
+ * Copy selected ranges to clipboard
69
+ * @param ranges - Ranges to copy
70
+ */
71
+ copy(ranges: CellRange[]): Promise<void>;
72
+ /**
73
+ * Cut selected ranges to clipboard (copy + delete)
74
+ * @param ranges - Ranges to cut
75
+ */
76
+ cut(ranges: CellRange[]): Promise<void>;
77
+ /**
78
+ * Paste from clipboard at target location
79
+ * @param targetRow - Target row
80
+ * @param targetCol - Target column
81
+ */
82
+ paste(targetRow: number, targetCol: number): Promise<void>;
83
+ /**
84
+ * Extract data from a range
85
+ */
86
+ private extractRangeData;
87
+ /**
88
+ * Convert data to TSV format
89
+ */
90
+ private toTSV;
91
+ /**
92
+ * Format cell value for TSV
93
+ */
94
+ private formatCellForTSV;
95
+ /**
96
+ * Convert data to HTML table format
97
+ */
98
+ private toHTML;
99
+ /**
100
+ * Escape HTML special characters
101
+ */
102
+ private escapeHTML;
103
+ /**
104
+ * Parse TSV text to 2D array
105
+ */
106
+ private parseTSV;
107
+ /**
108
+ * Parse HTML table to 2D array
109
+ */
110
+ private parseHTML;
111
+ /**
112
+ * Paste data at target location
113
+ */
114
+ private pasteData;
115
+ }
116
+ //# sourceMappingURL=clipboard-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard-manager.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/copy-paste/clipboard-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAE5C;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAAC,CAAqC;IACzD,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAC,CAA0B;gBAEtC,OAAO,EAAE,uBAAuB;IAS5C;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC9C;;;OAGG;IACG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B7C;;;;OAIG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,KAAK;IAMb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,MAAM;IAkBd;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,SAAS;IA6BjB;;OAEG;IACH,OAAO,CAAC,SAAS;CAiBlB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copy/Paste functionality for ZenGrid
3
+ */
4
+ export { ClipboardManager } from './clipboard-manager';
5
+ export type { ClipboardManagerOptions } from './clipboard-manager';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/features/copy-paste/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Filter Adapter Interface
3
+ *
4
+ * Base interface for all filter export adapters.
5
+ * Adapters transform field-based filter state into specific output formats.
6
+ */
7
+ import type { FieldFilterState, CustomOperator } from '../types';
8
+ /**
9
+ * Base configuration for all adapters
10
+ */
11
+ export interface AdapterConfig {
12
+ /**
13
+ * Custom operator definitions
14
+ * Extends built-in operators with domain-specific ones
15
+ */
16
+ customOperators?: CustomOperator[];
17
+ /**
18
+ * Field name transformation function
19
+ * Useful for converting between naming conventions
20
+ *
21
+ * @example camelCase to snake_case
22
+ * ```typescript
23
+ * fieldTransform: (field) => field.replace(/[A-Z]/g, m => `_${m.toLowerCase()}`)
24
+ * ```
25
+ *
26
+ * @example Add table prefix
27
+ * ```typescript
28
+ * fieldTransform: (field) => `users.${field}`
29
+ * ```
30
+ */
31
+ fieldTransform?: (field: string) => string;
32
+ /**
33
+ * Value serialization function
34
+ * Transforms filter values before export
35
+ *
36
+ * @example Date to ISO string
37
+ * ```typescript
38
+ * valueSerializer: (value) => value instanceof Date ? value.toISOString() : value
39
+ * ```
40
+ */
41
+ valueSerializer?: (value: any) => any;
42
+ }
43
+ /**
44
+ * Filter Adapter Interface
45
+ *
46
+ * All adapters must implement this interface to transform
47
+ * filter state into their specific output format.
48
+ *
49
+ * @template TOutput - The output type of this adapter
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * class CustomAdapter implements FilterAdapter<MyCustomFormat> {
54
+ * readonly name = 'custom';
55
+ *
56
+ * transform(state: FieldFilterState, options?: any): MyCustomFormat {
57
+ * // Transform logic here
58
+ * return customFormat;
59
+ * }
60
+ *
61
+ * parse(input: MyCustomFormat): FieldFilterState {
62
+ * // Reverse parse logic (optional)
63
+ * return fieldState;
64
+ * }
65
+ * }
66
+ * ```
67
+ */
68
+ export interface FilterAdapter<TOutput> {
69
+ /**
70
+ * Adapter name (unique identifier)
71
+ * @example 'rest', 'graphql', 'sql'
72
+ */
73
+ readonly name: string;
74
+ /**
75
+ * Transform field-based filter state to output format
76
+ *
77
+ * @param state - Field-based filter state
78
+ * @param options - Adapter-specific options (optional)
79
+ * @returns Transformed output in adapter's format
80
+ */
81
+ transform(state: FieldFilterState, options?: any): TOutput;
82
+ /**
83
+ * Parse output format back to field-based filter state (optional)
84
+ *
85
+ * Enables bidirectional transformation for use cases like:
86
+ * - URL-based filter state hydration
87
+ * - Storing/loading filter presets
88
+ * - Syncing filter state across tabs
89
+ *
90
+ * @param input - Output format to parse
91
+ * @returns Field-based filter state
92
+ */
93
+ parse?(input: TOutput): FieldFilterState;
94
+ }
95
+ /**
96
+ * Adapter registry type
97
+ * Maps adapter names to adapter instances
98
+ */
99
+ export type AdapterRegistry = Map<string, FilterAdapter<any>>;
100
+ //# sourceMappingURL=adapter.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/features/filtering/adapters/adapter.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAE3C;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO;IACpC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC;IAE3D;;;;;;;;;;OAUG;IACH,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * GraphQL Filter Adapter
3
+ *
4
+ * Transforms field-based filters into GraphQL where clauses.
5
+ * Supports Prisma, Hasura, and Apollo/custom schemas.
6
+ */
7
+ import type { FilterAdapter, AdapterConfig } from './adapter.interface';
8
+ import type { GraphQLFilterExport } from './types';
9
+ import type { FieldFilterState, FieldFilterCondition } from '../types';
10
+ /**
11
+ * GraphQL schema styles
12
+ */
13
+ export type GraphQLStyle = 'prisma' | 'hasura' | 'apollo' | 'custom';
14
+ /**
15
+ * GraphQL adapter configuration
16
+ */
17
+ export interface GraphQLAdapterOptions extends AdapterConfig {
18
+ /**
19
+ * GraphQL schema style
20
+ * - prisma: { age: { gt: 18 }, status: { equals: "active" } }
21
+ * - hasura: { age: { _gt: 18 }, status: { _eq: "active" } }
22
+ * - apollo: Similar to Prisma but with different conventions
23
+ * - custom: Use customWhereBuilder
24
+ *
25
+ * @default 'prisma'
26
+ */
27
+ style?: GraphQLStyle;
28
+ /**
29
+ * Custom where clause builder
30
+ * Only used when style is 'custom'
31
+ */
32
+ customWhereBuilder?: (conditions: FieldFilterCondition[]) => Record<string, any>;
33
+ /**
34
+ * Generate GraphQL variables instead of inline values
35
+ * Recommended for security and performance
36
+ *
37
+ * @default true
38
+ */
39
+ useVariables?: boolean;
40
+ }
41
+ /**
42
+ * GraphQL Filter Adapter
43
+ *
44
+ * @example Prisma style
45
+ * ```typescript
46
+ * const adapter = new GraphQLFilterAdapter({ style: 'prisma' });
47
+ * const result = adapter.transform(filterState);
48
+ * // result.where: {
49
+ * // age: { gt: 18 },
50
+ * // status: { equals: "active" }
51
+ * // }
52
+ * ```
53
+ *
54
+ * @example Hasura style
55
+ * ```typescript
56
+ * const adapter = new GraphQLFilterAdapter({ style: 'hasura' });
57
+ * const result = adapter.transform(filterState);
58
+ * // result.where: {
59
+ * // age: { _gt: 18 },
60
+ * // status: { _eq: "active" }
61
+ * // }
62
+ * ```
63
+ *
64
+ * @example With variables
65
+ * ```typescript
66
+ * const adapter = new GraphQLFilterAdapter({
67
+ * style: 'prisma',
68
+ * useVariables: true
69
+ * });
70
+ * const result = adapter.transform(filterState);
71
+ * // result.where: { age: { gt: $age }, status: { equals: $status } }
72
+ * // result.variables: { age: 18, status: "active" }
73
+ * // result.variablesTypeDef: "$age: Int, $status: String"
74
+ * ```
75
+ */
76
+ export declare class GraphQLFilterAdapter implements FilterAdapter<GraphQLFilterExport> {
77
+ readonly name = "graphql";
78
+ private options;
79
+ private variables;
80
+ private variableCounter;
81
+ constructor(options?: GraphQLAdapterOptions);
82
+ /**
83
+ * Transform field-based filter state to GraphQL format
84
+ */
85
+ transform(state: FieldFilterState): GraphQLFilterExport;
86
+ /**
87
+ * Process a filter group
88
+ */
89
+ private processGroup;
90
+ /**
91
+ * Build where clause for a single condition
92
+ */
93
+ private buildConditionWhere;
94
+ /**
95
+ * Build operator object { op: value } or { op: $variable }
96
+ */
97
+ private buildOperatorObject;
98
+ /**
99
+ * Map standard operator to GraphQL operator
100
+ */
101
+ private mapOperatorToGraphQL;
102
+ /**
103
+ * Map to Prisma style operators
104
+ */
105
+ private mapToPrisma;
106
+ /**
107
+ * Map to Hasura style operators (with underscore prefix)
108
+ */
109
+ private mapToHasura;
110
+ /**
111
+ * Create a GraphQL variable and return its name
112
+ */
113
+ private createVariable;
114
+ /**
115
+ * Build GraphQL variables type definition
116
+ * @example "$var1: Int, $var2: String"
117
+ */
118
+ private buildVariablesTypeDef;
119
+ /**
120
+ * Infer GraphQL type from JavaScript value
121
+ */
122
+ private inferGraphQLType;
123
+ }
124
+ //# sourceMappingURL=graphql-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-adapter.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/features/filtering/adapters/graphql-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAoB,oBAAoB,EAA0B,MAAM,UAAU,CAAC;AAEjH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjF;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,oBAAqB,YAAW,aAAa,CAAC,mBAAmB,CAAC;IAC7E,QAAQ,CAAC,IAAI,aAAa;IAE1B,OAAO,CAAC,OAAO,CAAkH;IACjI,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,eAAe,CAAK;gBAEhB,OAAO,GAAE,qBAA0B;IAW/C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB;IAgCvD;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyD3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAwBzB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Filter Adapters
3
+ *
4
+ * Export all filter adapters and related types
5
+ */
6
+ export * from './types';
7
+ export * from './adapter.interface';
8
+ export * from './rest-adapter';
9
+ export * from './graphql-adapter';
10
+ export * from './sql-adapter';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/features/filtering/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * REST Filter Adapter
3
+ *
4
+ * Transforms field-based filters into REST API query parameters.
5
+ * Supports three query string styles: brackets, dots, and flat.
6
+ */
7
+ import type { FilterAdapter, AdapterConfig } from './adapter.interface';
8
+ import type { RESTFilterExport } from './types';
9
+ import type { FieldFilterState } from '../types';
10
+ /**
11
+ * REST adapter configuration
12
+ */
13
+ export interface RESTAdapterOptions extends AdapterConfig {
14
+ /**
15
+ * Query string style
16
+ * - brackets: ?filter[age][gt]=18
17
+ * - dots: ?filter.age.gt=18
18
+ * - flat: ?age_gt=18
19
+ *
20
+ * @default 'brackets'
21
+ */
22
+ style?: 'brackets' | 'dots' | 'flat';
23
+ /**
24
+ * Array format for 'in' operator
25
+ * - brackets: ?status[]=active&status[]=pending
26
+ * - comma: ?status=active,pending
27
+ * - repeat: ?status=active&status=pending
28
+ *
29
+ * @default 'brackets'
30
+ */
31
+ arrayFormat?: 'brackets' | 'comma' | 'repeat';
32
+ /**
33
+ * URL-encode parameter values
34
+ * @default true
35
+ */
36
+ encode?: boolean;
37
+ /**
38
+ * Prefix for filter parameters (used in brackets/dots styles)
39
+ * @default 'filter'
40
+ */
41
+ prefix?: string;
42
+ }
43
+ /**
44
+ * REST Filter Adapter
45
+ *
46
+ * @example Brackets style (default)
47
+ * ```typescript
48
+ * const adapter = new RESTFilterAdapter({ style: 'brackets' });
49
+ * const result = adapter.transform(filterState);
50
+ * // result.queryString: "?filter[age][gt]=18&filter[status][eq]=active"
51
+ * ```
52
+ *
53
+ * @example Dots style
54
+ * ```typescript
55
+ * const adapter = new RESTFilterAdapter({ style: 'dots' });
56
+ * const result = adapter.transform(filterState);
57
+ * // result.queryString: "?filter.age.gt=18&filter.status.eq=active"
58
+ * ```
59
+ *
60
+ * @example Flat style
61
+ * ```typescript
62
+ * const adapter = new RESTFilterAdapter({ style: 'flat' });
63
+ * const result = adapter.transform(filterState);
64
+ * // result.queryString: "?age_gt=18&status_eq=active"
65
+ * ```
66
+ */
67
+ export declare class RESTFilterAdapter implements FilterAdapter<RESTFilterExport> {
68
+ readonly name = "rest";
69
+ private options;
70
+ constructor(options?: RESTAdapterOptions);
71
+ /**
72
+ * Transform field-based filter state to REST format
73
+ */
74
+ transform(state: FieldFilterState): RESTFilterExport;
75
+ /**
76
+ * Process a filter group and add parameters
77
+ */
78
+ private processGroup;
79
+ /**
80
+ * Add a single condition to params
81
+ */
82
+ private addConditionToParams;
83
+ /**
84
+ * Build parameter key based on style
85
+ */
86
+ private buildParamKey;
87
+ /**
88
+ * Add array parameter based on arrayFormat
89
+ */
90
+ private addArrayParam;
91
+ /**
92
+ * Serialize value to string
93
+ */
94
+ private serializeValue;
95
+ /**
96
+ * Build query string from params
97
+ */
98
+ private buildQueryString;
99
+ /**
100
+ * Encode a key-value pair
101
+ */
102
+ private encodePair;
103
+ /**
104
+ * Parse REST query string back to field-based filter state (optional)
105
+ */
106
+ parse(input: RESTFilterExport): FieldFilterState;
107
+ }
108
+ //# sourceMappingURL=rest-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-adapter.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/features/filtering/adapters/rest-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAkE,MAAM,UAAU,CAAC;AAEjH;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAErC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAE9C;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,iBAAkB,YAAW,aAAa,CAAC,gBAAgB,CAAC;IACvE,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,OAAO,CAA+B;gBAElC,OAAO,GAAE,kBAAuB;IAY5C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;IAqBpD;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;CASjD"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * SQL Filter Adapter
3
+ *
4
+ * Transforms field-based filters into parameterized SQL WHERE clauses.
5
+ * Supports positional (?), named (:name), and dollar ($1) parameter styles.
6
+ */
7
+ import type { FilterAdapter, AdapterConfig } from './adapter.interface';
8
+ import type { SQLFilterExport } from './types';
9
+ import type { FieldFilterState } from '../types';
10
+ /**
11
+ * SQL parameter styles
12
+ */
13
+ export type SQLParamStyle = 'positional' | 'named' | 'dollar';
14
+ /**
15
+ * SQL adapter configuration
16
+ */
17
+ export interface SQLAdapterOptions extends AdapterConfig {
18
+ /**
19
+ * Parameter style
20
+ * - positional: WHERE age > ? AND status = ?
21
+ * - named: WHERE age > :age AND status = :status
22
+ * - dollar: WHERE age > $1 AND status = $2 (PostgreSQL)
23
+ *
24
+ * @default 'positional'
25
+ */
26
+ paramStyle?: SQLParamStyle;
27
+ /**
28
+ * Named parameter prefix
29
+ * Only used when paramStyle is 'named'
30
+ *
31
+ * @default ':'
32
+ */
33
+ namedPrefix?: string;
34
+ /**
35
+ * Quote identifiers (field names)
36
+ * - true: "age" (double quotes)
37
+ * - false: age (no quotes)
38
+ *
39
+ * @default false
40
+ */
41
+ quoteIdentifiers?: boolean;
42
+ /**
43
+ * Identifier quote character
44
+ * - '"' for PostgreSQL, SQL Server
45
+ * - '`' for MySQL, MariaDB
46
+ * - '[' for SQL Server (uses ]' for closing)
47
+ *
48
+ * @default '"'
49
+ */
50
+ identifierQuote?: string;
51
+ /**
52
+ * Case sensitivity for string operations
53
+ * - true: Use LOWER() for case-insensitive comparisons
54
+ * - false: Use operators as-is
55
+ *
56
+ * @default false
57
+ */
58
+ caseInsensitive?: boolean;
59
+ }
60
+ /**
61
+ * SQL Filter Adapter
62
+ *
63
+ * @example Positional parameters (default)
64
+ * ```typescript
65
+ * const adapter = new SQLFilterAdapter({ paramStyle: 'positional' });
66
+ * const result = adapter.transform(filterState);
67
+ * // result.whereClause: "age > ? AND status = ?"
68
+ * // result.positionalParams: [18, "active"]
69
+ * ```
70
+ *
71
+ * @example Named parameters
72
+ * ```typescript
73
+ * const adapter = new SQLFilterAdapter({ paramStyle: 'named' });
74
+ * const result = adapter.transform(filterState);
75
+ * // result.namedSql: "age > :age AND status = :status"
76
+ * // result.namedParams: { age: 18, status: "active" }
77
+ * ```
78
+ *
79
+ * @example Dollar parameters (PostgreSQL)
80
+ * ```typescript
81
+ * const adapter = new SQLFilterAdapter({ paramStyle: 'dollar' });
82
+ * const result = adapter.transform(filterState);
83
+ * // result.whereClause: "age > $1 AND status = $2"
84
+ * // result.positionalParams: [18, "active"]
85
+ * ```
86
+ */
87
+ export declare class SQLFilterAdapter implements FilterAdapter<SQLFilterExport> {
88
+ readonly name = "sql";
89
+ private options;
90
+ private positionalParams;
91
+ private namedParams;
92
+ private paramCounter;
93
+ constructor(options?: SQLAdapterOptions);
94
+ /**
95
+ * Transform field-based filter state to SQL format
96
+ */
97
+ transform(state: FieldFilterState): SQLFilterExport;
98
+ /**
99
+ * Process a filter group
100
+ */
101
+ private processGroup;
102
+ /**
103
+ * Build SQL clause for a single condition
104
+ */
105
+ private buildConditionClause;
106
+ /**
107
+ * Map standard operator to SQL operator
108
+ */
109
+ private mapOperatorToSQL;
110
+ /**
111
+ * Add parameter and return placeholder
112
+ */
113
+ private addParam;
114
+ /**
115
+ * Quote field identifier
116
+ */
117
+ private quoteField;
118
+ /**
119
+ * Build named SQL version
120
+ */
121
+ private buildNamedSQL;
122
+ }
123
+ //# sourceMappingURL=sql-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-adapter.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/features/filtering/adapters/sql-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAkE,MAAM,UAAU,CAAC;AAEjH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,gBAAiB,YAAW,aAAa,CAAC,eAAe,CAAC;IACrE,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAK;gBAEb,OAAO,GAAE,iBAAsB;IAa3C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe;IA4BnD;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqD5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAqChB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,aAAa;CAiBtB"}