photon-grid-core 0.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 (555) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +0 -0
  3. package/cell-selection/active-grid-registry.d.ts +37 -0
  4. package/cell-selection/active-grid-registry.d.ts.map +1 -0
  5. package/cell-selection/active-grid-registry.js +25 -0
  6. package/cell-selection/active-grid-registry.js.map +1 -0
  7. package/cell-selection/cell-selection-engine.d.ts +336 -0
  8. package/cell-selection/cell-selection-engine.d.ts.map +1 -0
  9. package/cell-selection/cell-selection-engine.js +1534 -0
  10. package/cell-selection/cell-selection-engine.js.map +1 -0
  11. package/cell-selection/selection-range.d.ts +16 -0
  12. package/cell-selection/selection-range.d.ts.map +1 -0
  13. package/cell-selection/selection-range.js +48 -0
  14. package/cell-selection/selection-range.js.map +1 -0
  15. package/cell-selection/selection-renderer.d.ts +24 -0
  16. package/cell-selection/selection-renderer.d.ts.map +1 -0
  17. package/cell-selection/selection-renderer.js +107 -0
  18. package/cell-selection/selection-renderer.js.map +1 -0
  19. package/chart/chart-analyzer/aggregation-analyzer.d.ts +18 -0
  20. package/chart/chart-analyzer/aggregation-analyzer.d.ts.map +1 -0
  21. package/chart/chart-analyzer/aggregation-analyzer.js +63 -0
  22. package/chart/chart-analyzer/aggregation-analyzer.js.map +1 -0
  23. package/chart/chart-analyzer/bar-analyzer.d.ts +19 -0
  24. package/chart/chart-analyzer/bar-analyzer.d.ts.map +1 -0
  25. package/chart/chart-analyzer/bar-analyzer.js +56 -0
  26. package/chart/chart-analyzer/bar-analyzer.js.map +1 -0
  27. package/chart/chart-analyzer/bubble-analyzer.d.ts +16 -0
  28. package/chart/chart-analyzer/bubble-analyzer.d.ts.map +1 -0
  29. package/chart/chart-analyzer/bubble-analyzer.js +61 -0
  30. package/chart/chart-analyzer/bubble-analyzer.js.map +1 -0
  31. package/chart/chart-analyzer/cardinality-analyzer.d.ts +13 -0
  32. package/chart/chart-analyzer/cardinality-analyzer.d.ts.map +1 -0
  33. package/chart/chart-analyzer/cardinality-analyzer.js +28 -0
  34. package/chart/chart-analyzer/cardinality-analyzer.js.map +1 -0
  35. package/chart/chart-analyzer/dimension-analyzer.d.ts +12 -0
  36. package/chart/chart-analyzer/dimension-analyzer.d.ts.map +1 -0
  37. package/chart/chart-analyzer/dimension-analyzer.js +33 -0
  38. package/chart/chart-analyzer/dimension-analyzer.js.map +1 -0
  39. package/chart/chart-analyzer/histogram-analyzer.d.ts +11 -0
  40. package/chart/chart-analyzer/histogram-analyzer.d.ts.map +1 -0
  41. package/chart/chart-analyzer/histogram-analyzer.js +43 -0
  42. package/chart/chart-analyzer/histogram-analyzer.js.map +1 -0
  43. package/chart/chart-analyzer/index.d.ts +58 -0
  44. package/chart/chart-analyzer/index.d.ts.map +1 -0
  45. package/chart/chart-analyzer/index.js +130 -0
  46. package/chart/chart-analyzer/index.js.map +1 -0
  47. package/chart/chart-analyzer/line-analyzer.d.ts +23 -0
  48. package/chart/chart-analyzer/line-analyzer.d.ts.map +1 -0
  49. package/chart/chart-analyzer/line-analyzer.js +61 -0
  50. package/chart/chart-analyzer/line-analyzer.js.map +1 -0
  51. package/chart/chart-analyzer/measure-analyzer.d.ts +11 -0
  52. package/chart/chart-analyzer/measure-analyzer.d.ts.map +1 -0
  53. package/chart/chart-analyzer/measure-analyzer.js +44 -0
  54. package/chart/chart-analyzer/measure-analyzer.js.map +1 -0
  55. package/chart/chart-analyzer/pie-analyzer.d.ts +19 -0
  56. package/chart/chart-analyzer/pie-analyzer.d.ts.map +1 -0
  57. package/chart/chart-analyzer/pie-analyzer.js +64 -0
  58. package/chart/chart-analyzer/pie-analyzer.js.map +1 -0
  59. package/chart/chart-analyzer/recommendation-engine.d.ts +18 -0
  60. package/chart/chart-analyzer/recommendation-engine.d.ts.map +1 -0
  61. package/chart/chart-analyzer/recommendation-engine.js +82 -0
  62. package/chart/chart-analyzer/recommendation-engine.js.map +1 -0
  63. package/chart/chart-analyzer/scatter-analyzer.d.ts +16 -0
  64. package/chart/chart-analyzer/scatter-analyzer.d.ts.map +1 -0
  65. package/chart/chart-analyzer/scatter-analyzer.js +70 -0
  66. package/chart/chart-analyzer/scatter-analyzer.js.map +1 -0
  67. package/chart/chart-analyzer/types.d.ts +52 -0
  68. package/chart/chart-analyzer/types.d.ts.map +1 -0
  69. package/chart/chart-analyzer/types.js +10 -0
  70. package/chart/chart-analyzer/types.js.map +1 -0
  71. package/chart/chart-analyzer.d.ts +12 -0
  72. package/chart/chart-analyzer.d.ts.map +1 -0
  73. package/chart/chart-analyzer.js +77 -0
  74. package/chart/chart-analyzer.js.map +1 -0
  75. package/chart/chart-data-transformer.d.ts +26 -0
  76. package/chart/chart-data-transformer.d.ts.map +1 -0
  77. package/chart/chart-data-transformer.js +93 -0
  78. package/chart/chart-data-transformer.js.map +1 -0
  79. package/chart/chart-engine.d.ts +38 -0
  80. package/chart/chart-engine.d.ts.map +1 -0
  81. package/chart/chart-engine.js +96 -0
  82. package/chart/chart-engine.js.map +1 -0
  83. package/chart/chart-panel.d.ts +54 -0
  84. package/chart/chart-panel.d.ts.map +1 -0
  85. package/chart/chart-panel.js +350 -0
  86. package/chart/chart-panel.js.map +1 -0
  87. package/chart/chart-renderer.d.ts +93 -0
  88. package/chart/chart-renderer.d.ts.map +1 -0
  89. package/chart/chart-renderer.js +1330 -0
  90. package/chart/chart-renderer.js.map +1 -0
  91. package/chart/sparkline/sparkline-renderer.d.ts +269 -0
  92. package/chart/sparkline/sparkline-renderer.d.ts.map +1 -0
  93. package/chart/sparkline/sparkline-renderer.js +875 -0
  94. package/chart/sparkline/sparkline-renderer.js.map +1 -0
  95. package/chart/sparkline/sparkline.types.d.ts +214 -0
  96. package/chart/sparkline/sparkline.types.d.ts.map +1 -0
  97. package/chart/sparkline/sparkline.types.js +8 -0
  98. package/chart/sparkline/sparkline.types.js.map +1 -0
  99. package/column-groups/column-group-drag-handler.d.ts +169 -0
  100. package/column-groups/column-group-drag-handler.d.ts.map +1 -0
  101. package/column-groups/column-group-drag-handler.js +517 -0
  102. package/column-groups/column-group-drag-handler.js.map +1 -0
  103. package/column-groups/column-group-header-builder.d.ts +106 -0
  104. package/column-groups/column-group-header-builder.d.ts.map +1 -0
  105. package/column-groups/column-group-header-builder.js +311 -0
  106. package/column-groups/column-group-header-builder.js.map +1 -0
  107. package/column-groups/column-group-model.d.ts +248 -0
  108. package/column-groups/column-group-model.d.ts.map +1 -0
  109. package/column-groups/column-group-model.js +668 -0
  110. package/column-groups/column-group-model.js.map +1 -0
  111. package/column-groups/column-group-state-manager.d.ts +110 -0
  112. package/column-groups/column-group-state-manager.d.ts.map +1 -0
  113. package/column-groups/column-group-state-manager.js +153 -0
  114. package/column-groups/column-group-state-manager.js.map +1 -0
  115. package/column-groups/column-group.types.d.ts +250 -0
  116. package/column-groups/column-group.types.d.ts.map +1 -0
  117. package/column-groups/column-group.types.js +20 -0
  118. package/column-groups/column-group.types.js.map +1 -0
  119. package/column-groups/display-group-builder.d.ts +91 -0
  120. package/column-groups/display-group-builder.d.ts.map +1 -0
  121. package/column-groups/display-group-builder.js +225 -0
  122. package/column-groups/display-group-builder.js.map +1 -0
  123. package/column-groups/display-group-drag-handler.d.ts +205 -0
  124. package/column-groups/display-group-drag-handler.d.ts.map +1 -0
  125. package/column-groups/display-group-drag-handler.js +536 -0
  126. package/column-groups/display-group-drag-handler.js.map +1 -0
  127. package/column-groups/display-group-engine.d.ts +310 -0
  128. package/column-groups/display-group-engine.d.ts.map +1 -0
  129. package/column-groups/display-group-engine.js +549 -0
  130. package/column-groups/display-group-engine.js.map +1 -0
  131. package/column-groups/display-group-header-builder.d.ts +94 -0
  132. package/column-groups/display-group-header-builder.d.ts.map +1 -0
  133. package/column-groups/display-group-header-builder.js +224 -0
  134. package/column-groups/display-group-header-builder.js.map +1 -0
  135. package/column-groups/display-group.types.d.ts +140 -0
  136. package/column-groups/display-group.types.d.ts.map +1 -0
  137. package/column-groups/display-group.types.js +2 -0
  138. package/column-groups/display-group.types.js.map +1 -0
  139. package/column-groups/index.d.ts +25 -0
  140. package/column-groups/index.d.ts.map +1 -0
  141. package/column-groups/index.js +26 -0
  142. package/column-groups/index.js.map +1 -0
  143. package/column-groups/logical-group-registry.d.ts +77 -0
  144. package/column-groups/logical-group-registry.d.ts.map +1 -0
  145. package/column-groups/logical-group-registry.js +118 -0
  146. package/column-groups/logical-group-registry.js.map +1 -0
  147. package/core/column-model.d.ts +30 -0
  148. package/core/column-model.d.ts.map +1 -0
  149. package/core/column-model.js +203 -0
  150. package/core/column-model.js.map +1 -0
  151. package/core/grid-api.d.ts +187 -0
  152. package/core/grid-api.d.ts.map +1 -0
  153. package/core/grid-api.js +569 -0
  154. package/core/grid-api.js.map +1 -0
  155. package/core/grid-context.d.ts +61 -0
  156. package/core/grid-context.d.ts.map +1 -0
  157. package/core/grid-context.js +2 -0
  158. package/core/grid-context.js.map +1 -0
  159. package/core/grid-core.d.ts +49 -0
  160. package/core/grid-core.d.ts.map +1 -0
  161. package/core/grid-core.js +675 -0
  162. package/core/grid-core.js.map +1 -0
  163. package/core/grid-store.d.ts +62 -0
  164. package/core/grid-store.d.ts.map +1 -0
  165. package/core/grid-store.js +104 -0
  166. package/core/grid-store.js.map +1 -0
  167. package/core/row-model.d.ts +32 -0
  168. package/core/row-model.d.ts.map +1 -0
  169. package/core/row-model.js +150 -0
  170. package/core/row-model.js.map +1 -0
  171. package/drag-drop/drag-autoscroll.d.ts +14 -0
  172. package/drag-drop/drag-autoscroll.d.ts.map +1 -0
  173. package/drag-drop/drag-autoscroll.js +66 -0
  174. package/drag-drop/drag-autoscroll.js.map +1 -0
  175. package/drag-drop/drag-drop-engine.d.ts +55 -0
  176. package/drag-drop/drag-drop-engine.d.ts.map +1 -0
  177. package/drag-drop/drag-drop-engine.js +179 -0
  178. package/drag-drop/drag-drop-engine.js.map +1 -0
  179. package/drag-drop/drag-preview.d.ts +32 -0
  180. package/drag-drop/drag-preview.d.ts.map +1 -0
  181. package/drag-drop/drag-preview.js +74 -0
  182. package/drag-drop/drag-preview.js.map +1 -0
  183. package/engines/aggregation/aggregation-engine.d.ts +66 -0
  184. package/engines/aggregation/aggregation-engine.d.ts.map +1 -0
  185. package/engines/aggregation/aggregation-engine.js +149 -0
  186. package/engines/aggregation/aggregation-engine.js.map +1 -0
  187. package/engines/clipboard/clipboard-engine.d.ts +89 -0
  188. package/engines/clipboard/clipboard-engine.d.ts.map +1 -0
  189. package/engines/clipboard/clipboard-engine.js +323 -0
  190. package/engines/clipboard/clipboard-engine.js.map +1 -0
  191. package/engines/editing/cell-editor-engine.d.ts +62 -0
  192. package/engines/editing/cell-editor-engine.d.ts.map +1 -0
  193. package/engines/editing/cell-editor-engine.js +359 -0
  194. package/engines/editing/cell-editor-engine.js.map +1 -0
  195. package/engines/editing/custom-dropdown-editor.d.ts +99 -0
  196. package/engines/editing/custom-dropdown-editor.d.ts.map +1 -0
  197. package/engines/editing/custom-dropdown-editor.js +355 -0
  198. package/engines/editing/custom-dropdown-editor.js.map +1 -0
  199. package/engines/editing/value-parser.d.ts +12 -0
  200. package/engines/editing/value-parser.d.ts.map +1 -0
  201. package/engines/editing/value-parser.js +125 -0
  202. package/engines/editing/value-parser.js.map +1 -0
  203. package/engines/export/export-engine.d.ts +16 -0
  204. package/engines/export/export-engine.d.ts.map +1 -0
  205. package/engines/export/export-engine.js +99 -0
  206. package/engines/export/export-engine.js.map +1 -0
  207. package/engines/filter/filter-condition.d.ts +7 -0
  208. package/engines/filter/filter-condition.d.ts.map +1 -0
  209. package/engines/filter/filter-condition.js +126 -0
  210. package/engines/filter/filter-condition.js.map +1 -0
  211. package/engines/filter/filter-engine.d.ts +35 -0
  212. package/engines/filter/filter-engine.d.ts.map +1 -0
  213. package/engines/filter/filter-engine.js +150 -0
  214. package/engines/filter/filter-engine.js.map +1 -0
  215. package/engines/filter/filter-panel.d.ts +103 -0
  216. package/engines/filter/filter-panel.d.ts.map +1 -0
  217. package/engines/filter/filter-panel.js +645 -0
  218. package/engines/filter/filter-panel.js.map +1 -0
  219. package/engines/grouping/group-node.d.ts +21 -0
  220. package/engines/grouping/group-node.d.ts.map +1 -0
  221. package/engines/grouping/group-node.js +96 -0
  222. package/engines/grouping/group-node.js.map +1 -0
  223. package/engines/grouping/grouping-engine.d.ts +33 -0
  224. package/engines/grouping/grouping-engine.d.ts.map +1 -0
  225. package/engines/grouping/grouping-engine.js +118 -0
  226. package/engines/grouping/grouping-engine.js.map +1 -0
  227. package/engines/master-detail/master-detail-engine.d.ts +77 -0
  228. package/engines/master-detail/master-detail-engine.d.ts.map +1 -0
  229. package/engines/master-detail/master-detail-engine.js +199 -0
  230. package/engines/master-detail/master-detail-engine.js.map +1 -0
  231. package/engines/pagination/pagination-engine.d.ts +33 -0
  232. package/engines/pagination/pagination-engine.d.ts.map +1 -0
  233. package/engines/pagination/pagination-engine.js +110 -0
  234. package/engines/pagination/pagination-engine.js.map +1 -0
  235. package/engines/selection/row-selection-engine.d.ts +26 -0
  236. package/engines/selection/row-selection-engine.d.ts.map +1 -0
  237. package/engines/selection/row-selection-engine.js +145 -0
  238. package/engines/selection/row-selection-engine.js.map +1 -0
  239. package/engines/sort/sort-comparator.d.ts +43 -0
  240. package/engines/sort/sort-comparator.d.ts.map +1 -0
  241. package/engines/sort/sort-comparator.js +113 -0
  242. package/engines/sort/sort-comparator.js.map +1 -0
  243. package/engines/sort/sort-engine.d.ts +67 -0
  244. package/engines/sort/sort-engine.d.ts.map +1 -0
  245. package/engines/sort/sort-engine.js +178 -0
  246. package/engines/sort/sort-engine.js.map +1 -0
  247. package/engines/summary/summary-engine.d.ts +17 -0
  248. package/engines/summary/summary-engine.d.ts.map +1 -0
  249. package/engines/summary/summary-engine.js +72 -0
  250. package/engines/summary/summary-engine.js.map +1 -0
  251. package/engines/tree/tree-data-service.d.ts +117 -0
  252. package/engines/tree/tree-data-service.d.ts.map +1 -0
  253. package/engines/tree/tree-data-service.js +296 -0
  254. package/engines/tree/tree-data-service.js.map +1 -0
  255. package/engines/tree/tree-expansion-service.d.ts +35 -0
  256. package/engines/tree/tree-expansion-service.d.ts.map +1 -0
  257. package/engines/tree/tree-expansion-service.js +84 -0
  258. package/engines/tree/tree-expansion-service.js.map +1 -0
  259. package/engines/tree/tree-node.d.ts +40 -0
  260. package/engines/tree/tree-node.d.ts.map +1 -0
  261. package/engines/tree/tree-node.js +199 -0
  262. package/engines/tree/tree-node.js.map +1 -0
  263. package/engines/tree/tree-selection-service.d.ts +35 -0
  264. package/engines/tree/tree-selection-service.d.ts.map +1 -0
  265. package/engines/tree/tree-selection-service.js +72 -0
  266. package/engines/tree/tree-selection-service.js.map +1 -0
  267. package/engines/undo-redo/undo-redo-engine.d.ts +114 -0
  268. package/engines/undo-redo/undo-redo-engine.d.ts.map +1 -0
  269. package/engines/undo-redo/undo-redo-engine.js +165 -0
  270. package/engines/undo-redo/undo-redo-engine.js.map +1 -0
  271. package/event-bus/event-bus.d.ts +21 -0
  272. package/event-bus/event-bus.d.ts.map +1 -0
  273. package/event-bus/event-bus.js +106 -0
  274. package/event-bus/event-bus.js.map +1 -0
  275. package/icons/icon-registry.d.ts +19 -0
  276. package/icons/icon-registry.d.ts.map +1 -0
  277. package/icons/icon-registry.js +37 -0
  278. package/icons/icon-registry.js.map +1 -0
  279. package/icons/icon-renderer.d.ts +18 -0
  280. package/icons/icon-renderer.d.ts.map +1 -0
  281. package/icons/icon-renderer.js +75 -0
  282. package/icons/icon-renderer.js.map +1 -0
  283. package/icons/icon-sets/core-icons.d.ts +2 -0
  284. package/icons/icon-sets/core-icons.d.ts.map +1 -0
  285. package/icons/icon-sets/core-icons.js +48 -0
  286. package/icons/icon-sets/core-icons.js.map +1 -0
  287. package/index.d.ts +72 -0
  288. package/index.d.ts.map +1 -0
  289. package/index.js +54 -0
  290. package/index.js.map +1 -0
  291. package/package.json +64 -0
  292. package/photon-ai/builtins/filter.commands.d.ts +4 -0
  293. package/photon-ai/builtins/filter.commands.d.ts.map +1 -0
  294. package/photon-ai/builtins/filter.commands.js +189 -0
  295. package/photon-ai/builtins/filter.commands.js.map +1 -0
  296. package/photon-ai/builtins/grouping.commands.d.ts +4 -0
  297. package/photon-ai/builtins/grouping.commands.d.ts.map +1 -0
  298. package/photon-ai/builtins/grouping.commands.js +115 -0
  299. package/photon-ai/builtins/grouping.commands.js.map +1 -0
  300. package/photon-ai/builtins/index.d.ts +10 -0
  301. package/photon-ai/builtins/index.d.ts.map +1 -0
  302. package/photon-ai/builtins/index.js +26 -0
  303. package/photon-ai/builtins/index.js.map +1 -0
  304. package/photon-ai/builtins/info.commands.d.ts +4 -0
  305. package/photon-ai/builtins/info.commands.d.ts.map +1 -0
  306. package/photon-ai/builtins/info.commands.js +201 -0
  307. package/photon-ai/builtins/info.commands.js.map +1 -0
  308. package/photon-ai/builtins/move.commands.d.ts +4 -0
  309. package/photon-ai/builtins/move.commands.d.ts.map +1 -0
  310. package/photon-ai/builtins/move.commands.js +53 -0
  311. package/photon-ai/builtins/move.commands.js.map +1 -0
  312. package/photon-ai/builtins/pin.commands.d.ts +4 -0
  313. package/photon-ai/builtins/pin.commands.d.ts.map +1 -0
  314. package/photon-ai/builtins/pin.commands.js +106 -0
  315. package/photon-ai/builtins/pin.commands.js.map +1 -0
  316. package/photon-ai/builtins/selection.commands.d.ts +4 -0
  317. package/photon-ai/builtins/selection.commands.d.ts.map +1 -0
  318. package/photon-ai/builtins/selection.commands.js +102 -0
  319. package/photon-ai/builtins/selection.commands.js.map +1 -0
  320. package/photon-ai/builtins/sort.commands.d.ts +4 -0
  321. package/photon-ai/builtins/sort.commands.d.ts.map +1 -0
  322. package/photon-ai/builtins/sort.commands.js +67 -0
  323. package/photon-ai/builtins/sort.commands.js.map +1 -0
  324. package/photon-ai/builtins/visibility.commands.d.ts +4 -0
  325. package/photon-ai/builtins/visibility.commands.d.ts.map +1 -0
  326. package/photon-ai/builtins/visibility.commands.js +75 -0
  327. package/photon-ai/builtins/visibility.commands.js.map +1 -0
  328. package/photon-ai/command-builder.d.ts +21 -0
  329. package/photon-ai/command-builder.d.ts.map +1 -0
  330. package/photon-ai/command-builder.js +18 -0
  331. package/photon-ai/command-builder.js.map +1 -0
  332. package/photon-ai/command-executor.d.ts +15 -0
  333. package/photon-ai/command-executor.d.ts.map +1 -0
  334. package/photon-ai/command-executor.js +26 -0
  335. package/photon-ai/command-executor.js.map +1 -0
  336. package/photon-ai/entity-resolver.d.ts +121 -0
  337. package/photon-ai/entity-resolver.d.ts.map +1 -0
  338. package/photon-ai/entity-resolver.js +393 -0
  339. package/photon-ai/entity-resolver.js.map +1 -0
  340. package/photon-ai/fuzzy-match.d.ts +12 -0
  341. package/photon-ai/fuzzy-match.d.ts.map +1 -0
  342. package/photon-ai/fuzzy-match.js +37 -0
  343. package/photon-ai/fuzzy-match.js.map +1 -0
  344. package/photon-ai/index.d.ts +15 -0
  345. package/photon-ai/index.d.ts.map +1 -0
  346. package/photon-ai/index.js +13 -0
  347. package/photon-ai/index.js.map +1 -0
  348. package/photon-ai/intent-parser.d.ts +20 -0
  349. package/photon-ai/intent-parser.d.ts.map +1 -0
  350. package/photon-ai/intent-parser.js +52 -0
  351. package/photon-ai/intent-parser.js.map +1 -0
  352. package/photon-ai/photon-ai-memory.d.ts +42 -0
  353. package/photon-ai/photon-ai-memory.d.ts.map +1 -0
  354. package/photon-ai/photon-ai-memory.js +86 -0
  355. package/photon-ai/photon-ai-memory.js.map +1 -0
  356. package/photon-ai/photon-ai-panel.d.ts +54 -0
  357. package/photon-ai/photon-ai-panel.d.ts.map +1 -0
  358. package/photon-ai/photon-ai-panel.js +191 -0
  359. package/photon-ai/photon-ai-panel.js.map +1 -0
  360. package/photon-ai/photon-ai-registry.d.ts +25 -0
  361. package/photon-ai/photon-ai-registry.d.ts.map +1 -0
  362. package/photon-ai/photon-ai-registry.js +41 -0
  363. package/photon-ai/photon-ai-registry.js.map +1 -0
  364. package/photon-ai/photon-ai-service.d.ts +71 -0
  365. package/photon-ai/photon-ai-service.d.ts.map +1 -0
  366. package/photon-ai/photon-ai-service.js +165 -0
  367. package/photon-ai/photon-ai-service.js.map +1 -0
  368. package/photon-ai/photon-ai.types.d.ts +100 -0
  369. package/photon-ai/photon-ai.types.d.ts.map +1 -0
  370. package/photon-ai/photon-ai.types.js +2 -0
  371. package/photon-ai/photon-ai.types.js.map +1 -0
  372. package/photon-ai/query-splitter.d.ts +22 -0
  373. package/photon-ai/query-splitter.d.ts.map +1 -0
  374. package/photon-ai/query-splitter.js +81 -0
  375. package/photon-ai/query-splitter.js.map +1 -0
  376. package/photon-ai/text-normalizer.d.ts +33 -0
  377. package/photon-ai/text-normalizer.d.ts.map +1 -0
  378. package/photon-ai/text-normalizer.js +132 -0
  379. package/photon-ai/text-normalizer.js.map +1 -0
  380. package/renderer/auto-scroller.d.ts +78 -0
  381. package/renderer/auto-scroller.d.ts.map +1 -0
  382. package/renderer/auto-scroller.js +141 -0
  383. package/renderer/auto-scroller.js.map +1 -0
  384. package/renderer/body-renderer.d.ts +191 -0
  385. package/renderer/body-renderer.d.ts.map +1 -0
  386. package/renderer/body-renderer.js +806 -0
  387. package/renderer/body-renderer.js.map +1 -0
  388. package/renderer/cell-renderer.d.ts +26 -0
  389. package/renderer/cell-renderer.d.ts.map +1 -0
  390. package/renderer/cell-renderer.js +201 -0
  391. package/renderer/cell-renderer.js.map +1 -0
  392. package/renderer/column-menu.d.ts +285 -0
  393. package/renderer/column-menu.d.ts.map +1 -0
  394. package/renderer/column-menu.js +873 -0
  395. package/renderer/column-menu.js.map +1 -0
  396. package/renderer/column-style-manager.d.ts +38 -0
  397. package/renderer/column-style-manager.d.ts.map +1 -0
  398. package/renderer/column-style-manager.js +110 -0
  399. package/renderer/column-style-manager.js.map +1 -0
  400. package/renderer/detail-row-renderer.d.ts +153 -0
  401. package/renderer/detail-row-renderer.d.ts.map +1 -0
  402. package/renderer/detail-row-renderer.js +388 -0
  403. package/renderer/detail-row-renderer.js.map +1 -0
  404. package/renderer/dom-utils.d.ts +22 -0
  405. package/renderer/dom-utils.d.ts.map +1 -0
  406. package/renderer/dom-utils.js +132 -0
  407. package/renderer/dom-utils.js.map +1 -0
  408. package/renderer/footer-renderer.d.ts +25 -0
  409. package/renderer/footer-renderer.d.ts.map +1 -0
  410. package/renderer/footer-renderer.js +168 -0
  411. package/renderer/footer-renderer.js.map +1 -0
  412. package/renderer/grid-renderer.d.ts +295 -0
  413. package/renderer/grid-renderer.d.ts.map +1 -0
  414. package/renderer/grid-renderer.js +1456 -0
  415. package/renderer/grid-renderer.js.map +1 -0
  416. package/renderer/group-context-menu.d.ts +79 -0
  417. package/renderer/group-context-menu.d.ts.map +1 -0
  418. package/renderer/group-context-menu.js +238 -0
  419. package/renderer/group-context-menu.js.map +1 -0
  420. package/renderer/group-drop-zone.d.ts +56 -0
  421. package/renderer/group-drop-zone.d.ts.map +1 -0
  422. package/renderer/group-drop-zone.js +376 -0
  423. package/renderer/group-drop-zone.js.map +1 -0
  424. package/renderer/header-renderer.d.ts +264 -0
  425. package/renderer/header-renderer.d.ts.map +1 -0
  426. package/renderer/header-renderer.js +1321 -0
  427. package/renderer/header-renderer.js.map +1 -0
  428. package/renderer/overlay-renderer.d.ts +16 -0
  429. package/renderer/overlay-renderer.d.ts.map +1 -0
  430. package/renderer/overlay-renderer.js +64 -0
  431. package/renderer/overlay-renderer.js.map +1 -0
  432. package/renderer/renderer-resolver.d.ts +18 -0
  433. package/renderer/renderer-resolver.d.ts.map +1 -0
  434. package/renderer/renderer-resolver.js +18 -0
  435. package/renderer/renderer-resolver.js.map +1 -0
  436. package/renderer/row-animator.d.ts +72 -0
  437. package/renderer/row-animator.d.ts.map +1 -0
  438. package/renderer/row-animator.js +175 -0
  439. package/renderer/row-animator.js.map +1 -0
  440. package/renderer/row-drag-renderer.d.ts +58 -0
  441. package/renderer/row-drag-renderer.d.ts.map +1 -0
  442. package/renderer/row-drag-renderer.js +395 -0
  443. package/renderer/row-drag-renderer.js.map +1 -0
  444. package/renderer/row-offset-search.d.ts +17 -0
  445. package/renderer/row-offset-search.d.ts.map +1 -0
  446. package/renderer/row-offset-search.js +31 -0
  447. package/renderer/row-offset-search.js.map +1 -0
  448. package/renderer/row-position-sheet.d.ts +11 -0
  449. package/renderer/row-position-sheet.d.ts.map +1 -0
  450. package/renderer/row-position-sheet.js +29 -0
  451. package/renderer/row-position-sheet.js.map +1 -0
  452. package/renderer/scroll-controller.d.ts +58 -0
  453. package/renderer/scroll-controller.d.ts.map +1 -0
  454. package/renderer/scroll-controller.js +200 -0
  455. package/renderer/scroll-controller.js.map +1 -0
  456. package/renderer/sticky-row-tracker.d.ts +40 -0
  457. package/renderer/sticky-row-tracker.d.ts.map +1 -0
  458. package/renderer/sticky-row-tracker.js +63 -0
  459. package/renderer/sticky-row-tracker.js.map +1 -0
  460. package/renderer/tooltip-renderer.d.ts +36 -0
  461. package/renderer/tooltip-renderer.d.ts.map +1 -0
  462. package/renderer/tooltip-renderer.js +133 -0
  463. package/renderer/tooltip-renderer.js.map +1 -0
  464. package/renderer/tree-cell-renderer.d.ts +37 -0
  465. package/renderer/tree-cell-renderer.d.ts.map +1 -0
  466. package/renderer/tree-cell-renderer.js +75 -0
  467. package/renderer/tree-cell-renderer.js.map +1 -0
  468. package/renderer/tree-sticky-row-tracker.d.ts +62 -0
  469. package/renderer/tree-sticky-row-tracker.d.ts.map +1 -0
  470. package/renderer/tree-sticky-row-tracker.js +120 -0
  471. package/renderer/tree-sticky-row-tracker.js.map +1 -0
  472. package/renderer/virtual-scroll-renderer.d.ts +37 -0
  473. package/renderer/virtual-scroll-renderer.d.ts.map +1 -0
  474. package/renderer/virtual-scroll-renderer.js +133 -0
  475. package/renderer/virtual-scroll-renderer.js.map +1 -0
  476. package/styles/base-styles.d.ts +3 -0
  477. package/styles/base-styles.d.ts.map +1 -0
  478. package/styles/base-styles.js +3045 -0
  479. package/styles/base-styles.js.map +1 -0
  480. package/styles/themes/theme-alpine.d.ts +2 -0
  481. package/styles/themes/theme-alpine.d.ts.map +1 -0
  482. package/styles/themes/theme-alpine.js +120 -0
  483. package/styles/themes/theme-alpine.js.map +1 -0
  484. package/styles/themes/theme-balham.d.ts +2 -0
  485. package/styles/themes/theme-balham.d.ts.map +1 -0
  486. package/styles/themes/theme-balham.js +120 -0
  487. package/styles/themes/theme-balham.js.map +1 -0
  488. package/styles/themes/theme-dark.d.ts +2 -0
  489. package/styles/themes/theme-dark.d.ts.map +1 -0
  490. package/styles/themes/theme-dark.js +216 -0
  491. package/styles/themes/theme-dark.js.map +1 -0
  492. package/styles/themes/theme-material.d.ts +2 -0
  493. package/styles/themes/theme-material.d.ts.map +1 -0
  494. package/styles/themes/theme-material.js +134 -0
  495. package/styles/themes/theme-material.js.map +1 -0
  496. package/styles/themes/theme-quartz.d.ts +2 -0
  497. package/styles/themes/theme-quartz.d.ts.map +1 -0
  498. package/styles/themes/theme-quartz.js +120 -0
  499. package/styles/themes/theme-quartz.js.map +1 -0
  500. package/theme/css-var-injector.d.ts +10 -0
  501. package/theme/css-var-injector.d.ts.map +1 -0
  502. package/theme/css-var-injector.js +63 -0
  503. package/theme/css-var-injector.js.map +1 -0
  504. package/theme/theme-manager.d.ts +20 -0
  505. package/theme/theme-manager.d.ts.map +1 -0
  506. package/theme/theme-manager.js +79 -0
  507. package/theme/theme-manager.js.map +1 -0
  508. package/theme/themes/dark-theme.d.ts +3 -0
  509. package/theme/themes/dark-theme.d.ts.map +1 -0
  510. package/theme/themes/dark-theme.js +149 -0
  511. package/theme/themes/dark-theme.js.map +1 -0
  512. package/theme/themes/light-theme.d.ts +3 -0
  513. package/theme/themes/light-theme.d.ts.map +1 -0
  514. package/theme/themes/light-theme.js +149 -0
  515. package/theme/themes/light-theme.js.map +1 -0
  516. package/types/column.types.d.ts +195 -0
  517. package/types/column.types.d.ts.map +1 -0
  518. package/types/column.types.js +2 -0
  519. package/types/column.types.js.map +1 -0
  520. package/types/event.types.d.ts +213 -0
  521. package/types/event.types.d.ts.map +1 -0
  522. package/types/event.types.js +67 -0
  523. package/types/event.types.js.map +1 -0
  524. package/types/filter.types.d.ts +42 -0
  525. package/types/filter.types.d.ts.map +1 -0
  526. package/types/filter.types.js +2 -0
  527. package/types/filter.types.js.map +1 -0
  528. package/types/grid.types.d.ts +214 -0
  529. package/types/grid.types.d.ts.map +1 -0
  530. package/types/grid.types.js +2 -0
  531. package/types/grid.types.js.map +1 -0
  532. package/types/master-detail.types.d.ts +112 -0
  533. package/types/master-detail.types.d.ts.map +1 -0
  534. package/types/master-detail.types.js +2 -0
  535. package/types/master-detail.types.js.map +1 -0
  536. package/types/photon-ai.types.d.ts +19 -0
  537. package/types/photon-ai.types.d.ts.map +1 -0
  538. package/types/photon-ai.types.js +2 -0
  539. package/types/photon-ai.types.js.map +1 -0
  540. package/types/renderer.types.d.ts +156 -0
  541. package/types/renderer.types.d.ts.map +1 -0
  542. package/types/renderer.types.js +19 -0
  543. package/types/renderer.types.js.map +1 -0
  544. package/types/row.types.d.ts +127 -0
  545. package/types/row.types.d.ts.map +1 -0
  546. package/types/row.types.js +9 -0
  547. package/types/row.types.js.map +1 -0
  548. package/types/theme.types.d.ts +159 -0
  549. package/types/theme.types.d.ts.map +1 -0
  550. package/types/theme.types.js +2 -0
  551. package/types/theme.types.js.map +1 -0
  552. package/types/tree-data.types.d.ts +94 -0
  553. package/types/tree-data.types.d.ts.map +1 -0
  554. package/types/tree-data.types.js +2 -0
  555. package/types/tree-data.types.js.map +1 -0
@@ -0,0 +1,311 @@
1
+ import { createDiv } from '../renderer/dom-utils';
2
+ /**
3
+ * Builds the multi-row grouped header DOM for a single panel.
4
+ *
5
+ * ### Layout model
6
+ *
7
+ * ```
8
+ * pg-header-group-row depth-0 ← group cells (position: absolute)
9
+ * pg-header-group-row depth-1 ← deeper group cells (if nested)
10
+ * pg-header-row ← existing leaf row (built by HeaderRenderer)
11
+ * pg-filter-row ← optional filter row
12
+ * ```
13
+ *
14
+ * Group rows use `position: relative` with absolutely-positioned cells so that
15
+ * any arbitrary column width and nesting depth can be expressed without
16
+ * flex-layout constraints. The rows are direct children of the panel's
17
+ * `pg-panel__header-inner` element, which means they scroll together with the
18
+ * leaf row via the same `translateX` CSS transform.
19
+ *
20
+ * ### Virtualization
21
+ *
22
+ * Group rows render **all** group cells (not just the virtual window slice).
23
+ * Because groups span many leaf columns, the number of group cells is small
24
+ * compared to the number of leaf cells — the perf overhead is negligible.
25
+ * The visible portion is automatically clipped by the panel's `overflow: hidden`.
26
+ */
27
+ export class ColumnGroupHeaderBuilder {
28
+ constructor(iconRenderer) {
29
+ this.iconRenderer = iconRenderer;
30
+ /** Optional drag handler — wired after construction via {@link setDragConfig}. */
31
+ this.dragHandler = null;
32
+ /** Getter returning the root `.pg-grid` element for drag boundary checks. */
33
+ this.gridElGetter = null;
34
+ }
35
+ /**
36
+ * Wire a {@link ColumnGroupDragHandler} into the builder so that each
37
+ * group header cell receives drag-and-drop listeners at build time.
38
+ *
39
+ * Must be called before the first `buildGroupRows` invocation if drag
40
+ * support is needed.
41
+ *
42
+ * @param handler - Fully-constructed drag handler instance.
43
+ * @param gridElGetter - Returns the root `.pg-grid` element (may be `null`
44
+ * before mount).
45
+ */
46
+ setDragConfig(handler, gridElGetter) {
47
+ this.dragHandler = handler;
48
+ this.gridElGetter = gridElGetter;
49
+ }
50
+ // ── Public: build group rows ──────────────────────────────────────────────
51
+ /**
52
+ * Build one `HTMLElement` per depth level for the given panel tree.
53
+ *
54
+ * Returns an ordered array of group-row elements (depth 0 first).
55
+ * The leaf row is **not** included — it is built by {@link HeaderRenderer}.
56
+ * Returns an empty array when `maxDepth === 0` (no groups).
57
+ *
58
+ * @param panelNodes - Root-level tree nodes for this panel.
59
+ * @param colStyles - Width manager for resolving leaf column widths.
60
+ * @param maxDepth - Global tree depth (from `ColumnGroupModel.getMaxDepth()`).
61
+ * @param cellOptions - DOM build options (row height, callbacks).
62
+ */
63
+ buildGroupRows(panelNodes, colStyles, maxDepth, cellOptions) {
64
+ if (maxDepth === 0)
65
+ return [];
66
+ const layout = this.computeLayout(panelNodes, colStyles, maxDepth);
67
+ return layout.map((row) => this.buildGroupRow(row, cellOptions));
68
+ }
69
+ /**
70
+ * Rebuild the cells of existing group-row elements in place.
71
+ * Called after a virtual-column-window change or width update.
72
+ *
73
+ * @param groupRowEls - Previously built group-row elements (from `buildGroupRows`).
74
+ * @param panelNodes - Current root nodes for this panel.
75
+ * @param colStyles - Current column widths.
76
+ * @param maxDepth - Global tree depth.
77
+ * @param cellOptions - DOM build options.
78
+ */
79
+ updateGroupRows(groupRowEls, panelNodes, colStyles, maxDepth, cellOptions) {
80
+ if (groupRowEls.length === 0 || maxDepth === 0)
81
+ return;
82
+ const layout = this.computeLayout(panelNodes, colStyles, maxDepth);
83
+ for (let d = 0; d < maxDepth && d < groupRowEls.length; d++) {
84
+ groupRowEls[d].innerHTML = '';
85
+ if (d < layout.length)
86
+ this.populateGroupRow(groupRowEls[d], layout[d], cellOptions);
87
+ }
88
+ }
89
+ // ── Public: layout computation ────────────────────────────────────────────
90
+ /**
91
+ * Compute the header layout data without constructing any DOM.
92
+ * Returns one {@link HeaderGroupRow} per depth level (0 to `maxDepth - 1`).
93
+ * Used for testing and by the drag handler for hit-testing.
94
+ *
95
+ * @param panelNodes - Root-level tree nodes for this panel.
96
+ * @param colStyles - Width manager for leaf column widths.
97
+ * @param maxDepth - Maximum nesting depth across the full tree.
98
+ */
99
+ computeLayout(panelNodes, colStyles, maxDepth) {
100
+ const rows = Array.from({ length: maxDepth }, (_, i) => ({
101
+ depth: i,
102
+ cells: [],
103
+ }));
104
+ const cursor = { left: 0 };
105
+ this.walk(panelNodes, colStyles, rows, maxDepth, 0, cursor);
106
+ return rows;
107
+ }
108
+ // ── Private: tree walk ────────────────────────────────────────────────────
109
+ walk(nodes, colStyles, rows, maxDepth, depth, cursor) {
110
+ for (const node of nodes) {
111
+ if (node.nodeType === "leaf" /* ColumnGroupNodeType.LEAF */) {
112
+ if (node.colDef.visible === false)
113
+ continue;
114
+ const leafLeft = cursor.left;
115
+ const leafWidth = colStyles.getWidth(node.colDef.colId);
116
+ cursor.left += leafWidth;
117
+ // A root-level standalone leaf (depth === 0) with groups present must
118
+ // fill every group row so its header cell visually spans the full
119
+ // header height — matching the look of a grouped column header.
120
+ if (depth === 0 && rows.length > 0) {
121
+ for (let d = 0; d < rows.length; d++) {
122
+ rows[d].cells.push({
123
+ type: 'filler',
124
+ id: `_filler_${node.colDef.colId}_d${d}`,
125
+ label: '',
126
+ left: leafLeft,
127
+ width: leafWidth,
128
+ depth: d,
129
+ rowSpan: 1,
130
+ colDef: node.colDef,
131
+ });
132
+ }
133
+ }
134
+ continue;
135
+ }
136
+ // Group node
137
+ const group = node;
138
+ const cellLeft = cursor.left;
139
+ if (group.collapsed) {
140
+ // Collapsed: advance by the first visible leaf's width so the group cell
141
+ // exactly covers the "peek" column shown in the body.
142
+ const firstColId = this.getFirstVisibleLeafColId(group.children);
143
+ cursor.left += firstColId ? colStyles.getWidth(firstColId) : group.collapsedWidth;
144
+ }
145
+ else {
146
+ this.walk(group.children, colStyles, rows, maxDepth, depth + 1, cursor);
147
+ }
148
+ const cellWidth = cursor.left - cellLeft;
149
+ if (cellWidth <= 0)
150
+ continue;
151
+ if (depth < rows.length) {
152
+ const cell = {
153
+ type: 'group',
154
+ id: group.groupId,
155
+ label: group.header,
156
+ left: cellLeft,
157
+ width: cellWidth,
158
+ depth,
159
+ rowSpan: 1,
160
+ groupNode: group,
161
+ };
162
+ rows[depth].cells.push(cell);
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Walk a subtree and return the `colId` of the first non-hidden leaf.
168
+ * Returns `null` when no visible leaf is found.
169
+ */
170
+ getFirstVisibleLeafColId(nodes) {
171
+ for (const node of nodes) {
172
+ if (node.nodeType === "leaf" /* ColumnGroupNodeType.LEAF */) {
173
+ if (node.colDef.visible !== false)
174
+ return node.colDef.colId;
175
+ }
176
+ else {
177
+ const found = this.getFirstVisibleLeafColId(node.children);
178
+ if (found)
179
+ return found;
180
+ }
181
+ }
182
+ return null;
183
+ }
184
+ // ── Private: DOM building ─────────────────────────────────────────────────
185
+ buildGroupRow(row, cellOptions) {
186
+ const el = createDiv(`pg-header-group-row pg-header-group-row--depth-${row.depth}`);
187
+ el.setAttribute('role', 'row');
188
+ el.setAttribute('data-group-depth', String(row.depth));
189
+ this.populateGroupRow(el, row, cellOptions);
190
+ return el;
191
+ }
192
+ populateGroupRow(rowEl, row, cellOptions) {
193
+ for (const cell of row.cells) {
194
+ rowEl.appendChild(this.buildGroupCell(cell, cellOptions));
195
+ }
196
+ }
197
+ buildGroupCell(cell, options) {
198
+ if (cell.type !== 'group' || !cell.groupNode) {
199
+ // Filler occupies the group-row space for a standalone (non-grouped) leaf
200
+ // so the leaf header appears to span the full header height.
201
+ const filler = createDiv('pg-th pg-th--standalone-filler');
202
+ if (cell.colDef)
203
+ filler.setAttribute('data-col-id', cell.colDef.colId);
204
+ filler.style.left = `${cell.left}px`;
205
+ filler.style.width = `${cell.width}px`;
206
+ return filler;
207
+ }
208
+ const group = cell.groupNode;
209
+ const isCollapsed = group.collapsed;
210
+ const classes = ['pg-th', 'pg-th--group'];
211
+ if (isCollapsed)
212
+ classes.push('pg-th--group--collapsed');
213
+ if (group.headerCssClass)
214
+ classes.push(...group.headerCssClass.split(' ').filter(Boolean));
215
+ const th = createDiv(classes.join(' '));
216
+ th.setAttribute('role', 'columnheader');
217
+ th.setAttribute('data-group-id', group.groupId);
218
+ th.setAttribute('aria-expanded', String(!isCollapsed));
219
+ th.setAttribute('aria-label', group.header);
220
+ th.setAttribute('tabindex', '0');
221
+ th.style.left = `${cell.left}px`;
222
+ th.style.width = `${cell.width}px`;
223
+ if (group.headerRendererFn) {
224
+ const rendered = group.headerRendererFn({ group, collapsed: isCollapsed, api: null });
225
+ if (typeof rendered === 'string')
226
+ th.innerHTML = rendered;
227
+ else
228
+ th.appendChild(rendered);
229
+ }
230
+ else {
231
+ this.buildDefaultContent(th, group, isCollapsed);
232
+ }
233
+ // Resize handle (group header resize — distributes delta among children)
234
+ if (group.resizable !== false) {
235
+ const handle = createDiv('pg-th__resize-handle pg-th__resize-handle--group');
236
+ handle.textContent = '|';
237
+ handle.addEventListener('mousedown', (e) => {
238
+ e.stopPropagation();
239
+ e.preventDefault();
240
+ this.startGroupResize(e, group, cell.width, options);
241
+ });
242
+ th.appendChild(handle);
243
+ }
244
+ // Drag-and-drop: attach via drag handler when configured.
245
+ // The drag handler's mousedown delays drag start until 5 px of movement so
246
+ // a short click still fires the collapse toggle below.
247
+ if (this.dragHandler) {
248
+ this.dragHandler.attachGroupDragListeners(th, group);
249
+ }
250
+ // Click / keyboard: toggle collapse
251
+ th.addEventListener('click', (e) => {
252
+ if (e.target.closest('.pg-th__resize-handle'))
253
+ return;
254
+ // Suppress if a drag just finished (drag handler sets this flag)
255
+ if (this.dragHandler?.didJustDrag)
256
+ return;
257
+ options.onCollapseToggle?.(group.groupId);
258
+ });
259
+ th.addEventListener('keydown', (e) => {
260
+ if (e.key === 'Enter' || e.key === ' ') {
261
+ e.preventDefault();
262
+ options.onCollapseToggle?.(group.groupId);
263
+ }
264
+ else if (e.key === 'ArrowLeft') {
265
+ e.preventDefault();
266
+ if (!isCollapsed)
267
+ options.onCollapseToggle?.(group.groupId);
268
+ }
269
+ else if (e.key === 'ArrowRight') {
270
+ e.preventDefault();
271
+ if (isCollapsed)
272
+ options.onCollapseToggle?.(group.groupId);
273
+ }
274
+ });
275
+ return th;
276
+ }
277
+ buildDefaultContent(th, group, isCollapsed) {
278
+ const content = createDiv('pg-th__content');
279
+ const labelEl = createDiv('pg-th__label');
280
+ labelEl.textContent = group.header;
281
+ labelEl.title = group.header;
282
+ content.appendChild(labelEl);
283
+ th.appendChild(content);
284
+ const collapseBtn = createDiv('pg-th__collapse-btn');
285
+ collapseBtn.setAttribute('tabindex', '-1');
286
+ collapseBtn.setAttribute('aria-label', isCollapsed ? `Expand ${group.header}` : `Collapse ${group.header}`);
287
+ collapseBtn.innerHTML = this.iconRenderer.renderToString(isCollapsed ? 'chevronRight' : 'chevronLeft', 12);
288
+ th.appendChild(collapseBtn);
289
+ }
290
+ // ── Private: group resize ────────────────────────────────────────────────
291
+ startGroupResize(e, group, startWidth, options) {
292
+ const startX = e.clientX;
293
+ document.body.style.cursor = 'col-resize';
294
+ document.body.style.userSelect = 'none';
295
+ const onMove = (ev) => {
296
+ const newWidth = Math.max(group.collapsedWidth, startWidth + (ev.clientX - startX));
297
+ options.onGroupResize?.(group.groupId, newWidth);
298
+ };
299
+ const onUp = (ev) => {
300
+ const newWidth = Math.max(group.collapsedWidth, startWidth + (ev.clientX - startX));
301
+ options.onGroupResize?.(group.groupId, newWidth);
302
+ document.body.style.cursor = '';
303
+ document.body.style.userSelect = '';
304
+ document.removeEventListener('mousemove', onMove);
305
+ document.removeEventListener('mouseup', onUp);
306
+ };
307
+ document.addEventListener('mousemove', onMove);
308
+ document.addEventListener('mouseup', onUp);
309
+ }
310
+ }
311
+ //# sourceMappingURL=column-group-header-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-header-builder.js","sourceRoot":"","sources":["../../src/column-groups/column-group-header-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import type { ColumnDef } from '../types/column.types';
2
+ import type { ColumnStyleManager } from '../renderer/column-style-manager';
3
+ import type { EventBus } from '../event-bus/event-bus';
4
+ import { type IColumnGroupNode, type IColumnLeafNode, type ColumnTreeNode, type ColumnGroupSerialState } from './column-group.types';
5
+ /**
6
+ * Central model for the column-group tree.
7
+ *
8
+ * Responsibilities:
9
+ * - Build and maintain the column tree from a `ColumnDef[]` hierarchy.
10
+ * - Provide flat leaf arrays for {@link ColumnModel} initialization.
11
+ * - Answer width and position queries for {@link ColumnGroupHeaderBuilder}.
12
+ * - Manage group collapse / expand state.
13
+ * - Handle ordered mutations: move leaf, move group, set visibility/pin/width.
14
+ *
15
+ * The model fires grid events on all state changes so that {@link GridRenderer}
16
+ * can schedule a re-render without having to poll the model directly.
17
+ */
18
+ export declare class ColumnGroupModel {
19
+ private readonly eventBus;
20
+ /** Ordered root-level nodes of the full column tree. */
21
+ private rootNodes;
22
+ /** Quick O(1) lookup by groupId → IColumnGroupNode. */
23
+ private readonly groupMap;
24
+ /** Quick O(1) lookup by colId → IColumnLeafNode. */
25
+ private readonly leafMap;
26
+ /**
27
+ * Maps any node identifier (groupId or colId) to its immediate parent group.
28
+ * `null` means the node is at the root level.
29
+ */
30
+ private readonly parentMap;
31
+ constructor(eventBus: EventBus);
32
+ /**
33
+ * Build the column tree from a `ColumnDef[]`.
34
+ *
35
+ * A `ColumnDef` with a non-empty `children` array becomes an
36
+ * {@link IColumnGroupNode}; all others become {@link IColumnLeafNode}s.
37
+ * Nesting is unlimited.
38
+ *
39
+ * @param defs - Top-level column definitions (may contain nested children).
40
+ */
41
+ init(defs: ColumnDef[]): void;
42
+ /** `true` when at least one group (a `ColumnDef` with `children`) exists. */
43
+ hasGroups(): boolean;
44
+ /**
45
+ * Maximum nesting depth across the entire column tree.
46
+ *
47
+ * | Tree shape | Result |
48
+ * |---------------------|--------|
49
+ * | Pure flat columns | `0` |
50
+ * | One level of groups | `1` |
51
+ * | Groups within groups| `2` |
52
+ */
53
+ getMaxDepth(): number;
54
+ /**
55
+ * Returns root-level tree nodes, optionally filtered by pinned panel.
56
+ *
57
+ * @param panel - `'left'`, `'center'`, `'right'`, or `undefined` for all panels.
58
+ */
59
+ getRootNodes(panel?: 'left' | 'center' | 'right'): ColumnTreeNode[];
60
+ /**
61
+ * Return the {@link IColumnGroupNode} for a given `groupId`, or `undefined`
62
+ * when not found.
63
+ */
64
+ getGroup(groupId: string): IColumnGroupNode | undefined;
65
+ /**
66
+ * Return the {@link IColumnLeafNode} for a given `colId`, or `undefined`
67
+ * when not found.
68
+ */
69
+ getLeafNode(colId: string): IColumnLeafNode | undefined;
70
+ /**
71
+ * Return the immediate parent group of any node (group or leaf).
72
+ * Returns `null` for root-level nodes.
73
+ */
74
+ getParent(nodeId: string): IColumnGroupNode | null;
75
+ /**
76
+ * Return the ordered ancestor path from the root group down to (but not
77
+ * including) the node identified by `nodeId`.
78
+ * Returns `[]` for root-level nodes.
79
+ */
80
+ getAncestors(nodeId: string): IColumnGroupNode[];
81
+ /**
82
+ * Returns **all** leaf columns in document order (depth-first, left-to-right),
83
+ * regardless of their visibility or their parent group's collapsed state.
84
+ * Used to initialize {@link ColumnModel} with the full flat leaf list.
85
+ */
86
+ getAllLeaves(): ColumnDef[];
87
+ /**
88
+ * Returns **visible** leaf columns in document order, skipping:
89
+ * - Columns whose `visible` flag is `false`.
90
+ * - Children of collapsed groups (`collapsed === true`).
91
+ *
92
+ * @param panel - Optional filter for a specific pinned panel.
93
+ */
94
+ getVisibleLeaves(panel?: 'left' | 'center' | 'right'): ColumnDef[];
95
+ /**
96
+ * Returns all leaf {@link ColumnDef}s that are direct or indirect children
97
+ * of the group identified by `groupId`.
98
+ * Returns an empty array when the group is not found.
99
+ */
100
+ getLeavesInGroup(groupId: string): ColumnDef[];
101
+ /** `true` when the group with `groupId` is currently collapsed. */
102
+ isGroupCollapsed(groupId: string): boolean;
103
+ /**
104
+ * Collapse a group, visually hiding all its children in the header.
105
+ * Emits {@link GridEventType.COLUMN_GROUP_HEADER_COLLAPSED} when the state changes.
106
+ */
107
+ collapseGroup(groupId: string): void;
108
+ /**
109
+ * Expand a collapsed group, revealing its children in the header.
110
+ * Emits {@link GridEventType.COLUMN_GROUP_HEADER_EXPANDED} when the state changes.
111
+ */
112
+ expandGroup(groupId: string): void;
113
+ /**
114
+ * Toggle the collapsed state of a group.
115
+ * Internally calls either {@link collapseGroup} or {@link expandGroup}.
116
+ */
117
+ toggleGroup(groupId: string): void;
118
+ /**
119
+ * Compute the pixel width of a group header cell by summing all visible
120
+ * leaf column widths within the group's subtree.
121
+ *
122
+ * When the group is collapsed the width equals the first visible leaf's
123
+ * width (the "peek" column), falling back to `collapsedWidth` only when no
124
+ * visible leaf exists.
125
+ *
126
+ * @param groupId - The group to measure.
127
+ * @param colStyles - Authoritative column-width source.
128
+ */
129
+ computeGroupWidth(groupId: string, colStyles: ColumnStyleManager): number;
130
+ /**
131
+ * Returns the first visible leaf `ColumnDef` directly inside a group.
132
+ * Used to determine the "peek" column width when the group is collapsed.
133
+ *
134
+ * @param groupId - Target group identifier.
135
+ */
136
+ getFirstLeaf(groupId: string): ColumnDef | null;
137
+ /**
138
+ * Compute the total pixel width of all visible leaves in an arbitrary
139
+ * subtree. Respects collapsed groups.
140
+ *
141
+ * @param nodes - Root nodes of the subtree to measure.
142
+ * @param colStyles - Authoritative column-width source.
143
+ */
144
+ computeSubtreeWidth(nodes: ColumnTreeNode[], colStyles: ColumnStyleManager): number;
145
+ /**
146
+ * Return the zero-based index of a leaf column within the ordered
147
+ * visible-leaf sequence for a panel.
148
+ *
149
+ * Used to locate the column within the virtual center column window.
150
+ * Returns `-1` when the column is invisible or not found.
151
+ *
152
+ * @param colId - Target leaf column identifier.
153
+ * @param panel - Optional panel filter.
154
+ */
155
+ getVisibleLeafIndex(colId: string, panel?: 'left' | 'center' | 'right'): number;
156
+ /**
157
+ * Update the `visible` flag on a leaf column.
158
+ * Does **not** fire a grid event — the caller (typically {@link HeaderRenderer}
159
+ * or {@link GridApi}) is responsible for propagating the change to
160
+ * {@link ColumnModel} which fires the relevant events.
161
+ */
162
+ setLeafVisible(colId: string, visible: boolean): void;
163
+ /**
164
+ * Move a **leaf** column within the tree.
165
+ *
166
+ * @param colId - The leaf column to move.
167
+ * @param newParentId - Target group's `groupId`, or `null` to move to root.
168
+ * @param insertBeforeId - `colId` or `groupId` to insert before; `null` appends.
169
+ */
170
+ moveLeaf(colId: string, newParentId: string | null, insertBeforeId: string | null): void;
171
+ /**
172
+ * Move an **entire group** (with all its children) within the tree.
173
+ *
174
+ * Moving a group into one of its own descendants is silently ignored.
175
+ *
176
+ * @param groupId - The group to move.
177
+ * @param newParentId - Target group's `groupId`, or `null` to move to root.
178
+ * @param insertBeforeId - `colId` or `groupId` to insert before; `null` appends.
179
+ */
180
+ moveGroup(groupId: string, newParentId: string | null, insertBeforeId: string | null): void;
181
+ /**
182
+ * Distribute a resize `delta` (positive = grow, negative = shrink) across
183
+ * the sibling columns of `colId` according to the group's
184
+ * {@link IColumnGroupNode.resizeStrategy}.
185
+ *
186
+ * @param colId - The column being resized.
187
+ * @param delta - Pixel delta to distribute among siblings.
188
+ * @param colStyles - Width manager; widths are updated in-place via `setWidth`.
189
+ * @returns Map of `colId → newWidth` for all affected siblings.
190
+ */
191
+ distributeResizeDelta(colId: string, delta: number, colStyles: ColumnStyleManager): Map<string, number>;
192
+ /**
193
+ * Extract a leaf from its current parent and wrap it in a new **solo group**
194
+ * — a one-child group that acts as a draggable clone of the original parent.
195
+ *
196
+ * The new group is inserted at the root level immediately after the leaf's
197
+ * old parent group position, or at the end when the old parent is null.
198
+ *
199
+ * @param colId - Leaf column identifier to extract.
200
+ * @returns The generated `groupId` of the new solo group, or `null` when
201
+ * the leaf is not found.
202
+ */
203
+ createSoloGroupForLeaf(colId: string): string | null;
204
+ /**
205
+ * Dissolve a solo group: remove the wrapper group from the tree and move its
206
+ * single leaf into the `targetGroupId`. If the target is `null`, the leaf
207
+ * is promoted to the root level at the original position.
208
+ *
209
+ * A no-op when the group is not a solo group or when the group is not found.
210
+ *
211
+ * @param soloGroupId - The solo group to dissolve.
212
+ * @param targetGroupId - Group to receive the leaf, or `null` for root level.
213
+ * @param insertBeforeId - Optional sibling ID to insert before inside target.
214
+ */
215
+ dissolveGroupIfSolo(soloGroupId: string, targetGroupId: string | null, insertBeforeId?: string | null): void;
216
+ /**
217
+ * Prune any groups in the tree that have no children.
218
+ * Called after drag-drop operations to clean up empty parents.
219
+ */
220
+ cleanEmptyGroups(): void;
221
+ /**
222
+ * Serialize all group expand/collapse states into a portable array.
223
+ * Pair with {@link deserialize} for state persistence.
224
+ */
225
+ serialize(): ColumnGroupSerialState[];
226
+ /**
227
+ * Restore group states from a previously serialized snapshot.
228
+ * Unknown group IDs are silently ignored.
229
+ */
230
+ deserialize(states: ColumnGroupSerialState[]): void;
231
+ private buildTree;
232
+ private computeDepth;
233
+ private collectLeaves;
234
+ private sumLeafWidths;
235
+ /**
236
+ * Walk a subtree depth-first and return the first leaf whose `visible`
237
+ * flag is not `false`. Returns `null` when the subtree is empty or all
238
+ * leaves are hidden.
239
+ */
240
+ private findFirstVisibleLeaf;
241
+ private nodeId;
242
+ /**
243
+ * Returns `true` when `potentialAncestor` is a direct or indirect ancestor
244
+ * of `groupId` — prevents moving a group into its own subtree.
245
+ */
246
+ private isAncestorOf;
247
+ }
248
+ //# sourceMappingURL=column-group-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-model.d.ts","sourceRoot":"","sources":["../../src/column-groups/column-group-model.ts"],"names":[],"mappings":"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"}