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,517 @@
1
+ import { GridEventType } from '../types/event.types';
2
+ import { createDiv } from '../renderer/dom-utils';
3
+ /** `{ valid: false }` sentinel. */
4
+ const INVALID_TARGET = {
5
+ valid: false, targetId: '', position: 'before', indicatorX: 0,
6
+ };
7
+ /**
8
+ * Manages drag-and-drop operations for group header cells.
9
+ *
10
+ * Handles three drag scenarios:
11
+ * 1. **Group header drag** — move an entire group (all children move together).
12
+ * 2. **Leaf inside a married group** — dragging a child moves the parent group.
13
+ * 3. **Leaf drag out of group** — creates a solo wrapper group at the drop site.
14
+ *
15
+ * Drop targets:
16
+ * - **Another group** — inserts the dragged group before/after the target.
17
+ * - **Row-grouping bar** — triggers row-grouping for all `groupable` leaves.
18
+ * - **Outside the grid** — shows a "hide" preview and hides all columns.
19
+ *
20
+ * Visual feedback:
21
+ * - Ghost chip following the cursor.
22
+ * - Thin vertical drop-indicator line at the insertion point.
23
+ * - Ghost turns red when dragged outside the grid.
24
+ */
25
+ export class ColumnGroupDragHandler {
26
+ constructor(columnModel, groupModel, headerBuilder, colStyles, eventBus,
27
+ /** Returns the root `.pg-grid` element; may be `null` before mount. */
28
+ gridElGetter) {
29
+ this.columnModel = columnModel;
30
+ this.groupModel = groupModel;
31
+ this.headerBuilder = headerBuilder;
32
+ this.colStyles = colStyles;
33
+ this.eventBus = eventBus;
34
+ this.gridElGetter = gridElGetter;
35
+ /** Currently dragged group ID, `null` when not dragging. */
36
+ this.draggingId = null;
37
+ /** `true` when the dragged node is a group (vs. a leaf). */
38
+ this.draggingIsGroup = false;
39
+ /** Ghost element following the cursor. */
40
+ this.ghostEl = null;
41
+ /** Vertical indicator line shown at the drop target. */
42
+ this.indicatorEl = null;
43
+ /** The grid `.pg-grid` element, captured at drag-start from the getter. */
44
+ this.gridEl = null;
45
+ /** Last computed drop target. */
46
+ this.currentTarget = null;
47
+ /** `true` for the remainder of the current event loop after a drag completes. */
48
+ this._didJustDrag = false;
49
+ // ── Live drag transform state ────────────────────────────────────────────
50
+ /** Injected `<style>` element holding CSS transforms during a drag. */
51
+ this.dragStyleEl = null;
52
+ /** Captured group-cell positions (at drag-start) for the same depth level. */
53
+ this.dragCells = [];
54
+ /** Width of the dragged group cell (pixels). */
55
+ this.dragCellWidth = 0;
56
+ /** Index of the dragged group cell within `dragCells`. */
57
+ this.dragSourceIdx = -1;
58
+ /** Current effective drop index (updated each mousemove). */
59
+ this.dragEffectiveIdx = -1;
60
+ this.boundMouseMove = this.onMouseMove.bind(this);
61
+ this.boundMouseUp = this.onMouseUp.bind(this);
62
+ }
63
+ // ── Public ───────────────────────────────────────────────────────────────
64
+ /**
65
+ * `true` immediately after a drag session ends (cleared after one tick).
66
+ * Used by the header builder to suppress the collapse-toggle click that
67
+ * fires after a drag completes.
68
+ */
69
+ get didJustDrag() { return this._didJustDrag; }
70
+ /**
71
+ * Attach drag listeners to a group header cell element.
72
+ * Drag starts only after the pointer has moved more than 5 px so that a
73
+ * short click still fires the collapse-toggle handler.
74
+ *
75
+ * @param el - The group header `<div>` element.
76
+ * @param group - The group node this cell represents.
77
+ */
78
+ attachGroupDragListeners(el, group) {
79
+ el.addEventListener('mousedown', (e) => {
80
+ if (e.target.closest('.pg-th__resize-handle, .pg-th__collapse-btn'))
81
+ return;
82
+ if (e.button !== 0)
83
+ return;
84
+ const startX = e.clientX;
85
+ let moved = false;
86
+ const onMoveStart = (ev) => {
87
+ if (!moved && Math.abs(ev.clientX - startX) > 5) {
88
+ moved = true;
89
+ document.removeEventListener('mousemove', onMoveStart);
90
+ document.removeEventListener('mouseup', onUpEarly);
91
+ this.startGroupDrag(group, ev.clientX, ev.clientY);
92
+ document.addEventListener('mousemove', this.boundMouseMove);
93
+ document.addEventListener('mouseup', this.boundMouseUp);
94
+ // Intercept the click that would fire on mouseup so collapse does not toggle
95
+ const blockClick = (ce) => {
96
+ ce.stopPropagation();
97
+ document.removeEventListener('click', blockClick, true);
98
+ };
99
+ document.addEventListener('click', blockClick, true);
100
+ }
101
+ };
102
+ const onUpEarly = () => {
103
+ document.removeEventListener('mousemove', onMoveStart);
104
+ document.removeEventListener('mouseup', onUpEarly);
105
+ };
106
+ document.addEventListener('mousemove', onMoveStart);
107
+ document.addEventListener('mouseup', onUpEarly);
108
+ });
109
+ }
110
+ /**
111
+ * Attach drag listeners to a leaf header cell, respecting `marryChildren`.
112
+ *
113
+ * When the leaf's parent group has `marryChildren === true`, dragging the
114
+ * leaf starts a group drag instead of a leaf drag.
115
+ *
116
+ * @param el - The leaf header `<div>` element.
117
+ * @param colDef - The column definition.
118
+ */
119
+ attachLeafDragListeners(el, colDef) {
120
+ const parent = this.groupModel.getParent(colDef.colId);
121
+ if (parent?.marryChildren) {
122
+ const group = this.groupModel.getGroup(parent.groupId);
123
+ if (group)
124
+ this.attachGroupDragListeners(el, group);
125
+ }
126
+ // Non-married leaves use HeaderRenderer's built-in drag
127
+ }
128
+ /** `true` while a drag session is in progress. */
129
+ get isDragging() { return this.draggingId !== null; }
130
+ /** Release all event listeners and remove DOM artefacts. */
131
+ destroy() {
132
+ this.cleanupDrag();
133
+ document.removeEventListener('mousemove', this.boundMouseMove);
134
+ document.removeEventListener('mouseup', this.boundMouseUp);
135
+ }
136
+ // ── Private: drag lifecycle ───────────────────────────────────────────────
137
+ startGroupDrag(group, clientX, clientY) {
138
+ const gridEl = this.gridElGetter();
139
+ if (!gridEl)
140
+ return;
141
+ this.draggingId = group.groupId;
142
+ this.draggingIsGroup = true;
143
+ this.gridEl = gridEl;
144
+ // Ghost chip
145
+ const ghost = createDiv('pg-col-drag-ghost');
146
+ const label = document.createElement('span');
147
+ label.className = 'pg-col-drag-ghost__label';
148
+ label.textContent = group.header;
149
+ ghost.appendChild(label);
150
+ ghost.style.left = `${clientX + 14}px`;
151
+ ghost.style.top = `${clientY}px`;
152
+ document.body.appendChild(ghost);
153
+ this.ghostEl = ghost;
154
+ // Drop indicator
155
+ const indicator = createDiv('pg-group-drop-indicator');
156
+ gridEl.appendChild(indicator);
157
+ this.indicatorEl = indicator;
158
+ document.body.style.cursor = 'grabbing';
159
+ document.body.style.userSelect = 'none';
160
+ gridEl.classList.add('pg-grid--col-dragging');
161
+ // ── Capture group-cell positions for live CSS-transform visual ──────────
162
+ const draggedCell = gridEl.querySelector(`[data-group-id="${group.groupId}"]`);
163
+ const depth = parseInt(draggedCell?.closest('[data-group-depth]')?.getAttribute('data-group-depth') ?? '0', 10);
164
+ const cells = [];
165
+ for (const row of gridEl.querySelectorAll(`[data-group-depth="${depth}"]`)) {
166
+ for (const cell of row.querySelectorAll('[data-group-id]')) {
167
+ cells.push({ groupId: cell.getAttribute('data-group-id') ?? '', rect: cell.getBoundingClientRect() });
168
+ }
169
+ }
170
+ cells.sort((a, b) => a.rect.left - b.rect.left);
171
+ this.dragCells = cells;
172
+ this.dragSourceIdx = cells.findIndex((c) => c.groupId === group.groupId);
173
+ this.dragCellWidth = cells[this.dragSourceIdx]?.rect.width ?? 0;
174
+ this.dragEffectiveIdx = this.dragSourceIdx;
175
+ const styleEl = document.createElement('style');
176
+ styleEl.setAttribute('data-pg-group-drag', '');
177
+ document.head.appendChild(styleEl);
178
+ this.dragStyleEl = styleEl;
179
+ }
180
+ onMouseMove(e) {
181
+ if (!this.draggingId || !this.ghostEl)
182
+ return;
183
+ this.ghostEl.style.left = `${e.clientX + 14}px`;
184
+ this.ghostEl.style.top = `${e.clientY}px`;
185
+ // Visual feedback: turn ghost red when outside grid
186
+ const outside = this.isOutsideGrid(e.clientX, e.clientY);
187
+ this.ghostEl.classList.toggle('pg-col-drag-ghost--outside', outside);
188
+ if (outside) {
189
+ this.currentTarget = null;
190
+ this.updateIndicator(null);
191
+ this.applyDragTransforms(-1);
192
+ return;
193
+ }
194
+ const target = this.hitTest(e.clientX, e.clientY);
195
+ this.currentTarget = target;
196
+ this.updateIndicator(target);
197
+ // Live CSS-transform reordering (mirrors HeaderRenderer column drag visual)
198
+ if (this.dragCells.length > 0) {
199
+ let effectiveIdx = this.dragSourceIdx;
200
+ for (let i = 0; i < this.dragCells.length; i++) {
201
+ if (i === this.dragSourceIdx)
202
+ continue;
203
+ const r = this.dragCells[i].rect;
204
+ if (e.clientX >= r.left && e.clientX < r.right) {
205
+ effectiveIdx = i;
206
+ break;
207
+ }
208
+ }
209
+ // Clamp to edges
210
+ if (e.clientX < (this.dragCells[0]?.rect.left ?? 0))
211
+ effectiveIdx = 0;
212
+ if (e.clientX >= (this.dragCells[this.dragCells.length - 1]?.rect.right ?? 0)) {
213
+ effectiveIdx = this.dragCells.length - 1;
214
+ }
215
+ this.dragEffectiveIdx = effectiveIdx;
216
+ this.applyDragTransforms(effectiveIdx);
217
+ }
218
+ }
219
+ /**
220
+ * Write CSS `transform: translateX()` rules for the live drag preview.
221
+ * Pass `-1` to clear all transforms.
222
+ */
223
+ applyDragTransforms(effectiveIdx) {
224
+ if (!this.dragStyleEl || !this.gridEl)
225
+ return;
226
+ if (effectiveIdx === -1 || effectiveIdx === this.dragSourceIdx) {
227
+ this.dragStyleEl.textContent = '';
228
+ return;
229
+ }
230
+ const gridId = this.gridEl.getAttribute('data-photon-grid-id') ?? '';
231
+ const scope = gridId ? `[data-photon-grid-id="${gridId}"] ` : '';
232
+ const src = this.dragSourceIdx;
233
+ const src_rect = this.dragCells[src]?.rect;
234
+ const tgt_rect = this.dragCells[effectiveIdx]?.rect;
235
+ if (!src_rect || !tgt_rect)
236
+ return;
237
+ const srcOffset = effectiveIdx > src
238
+ ? tgt_rect.right - src_rect.right
239
+ : tgt_rect.left - src_rect.left;
240
+ let css = `${scope}[data-group-id="${this.draggingId}"] { transform: translateX(${srcOffset}px); z-index: 10; position: relative; transition: none; }\n`;
241
+ for (let i = 0; i < this.dragCells.length; i++) {
242
+ if (i === src)
243
+ continue;
244
+ let offset = 0;
245
+ if (effectiveIdx > src && i > src && i <= effectiveIdx)
246
+ offset = -this.dragCellWidth;
247
+ else if (effectiveIdx < src && i >= effectiveIdx && i < src)
248
+ offset = this.dragCellWidth;
249
+ if (offset !== 0) {
250
+ css += `${scope}[data-group-id="${this.dragCells[i].groupId}"] { transform: translateX(${offset}px); }\n`;
251
+ }
252
+ }
253
+ this.dragStyleEl.textContent = css;
254
+ }
255
+ onMouseUp(e) {
256
+ const target = this.currentTarget;
257
+ const id = this.draggingId;
258
+ const isGroup = this.draggingIsGroup;
259
+ const gridEl = this.gridEl;
260
+ const outside = gridEl ? this.isOutsideGrid(e.clientX, e.clientY) : false;
261
+ const onGroupBar = gridEl ? this.isOverGroupingBar(e.clientX, e.clientY) : false;
262
+ this.cleanupDrag();
263
+ this._didJustDrag = true;
264
+ // Clear flag after current event loop so the collapse click is suppressed
265
+ Promise.resolve().then(() => { this._didJustDrag = false; });
266
+ if (!id)
267
+ return;
268
+ // ── Drop: outside grid ──────────────────────────────────────────────────
269
+ if (outside) {
270
+ if (isGroup) {
271
+ const leaves = this.groupModel.getLeavesInGroup(id);
272
+ for (const leaf of leaves) {
273
+ this.columnModel.setColumnVisible(leaf.colId, false);
274
+ }
275
+ }
276
+ return;
277
+ }
278
+ // ── Drop: row-grouping bar ──────────────────────────────────────────────
279
+ if (onGroupBar) {
280
+ if (isGroup) {
281
+ const leaves = this.groupModel.getLeavesInGroup(id);
282
+ const groupableIds = leaves.filter((l) => l.groupable).map((l) => l.colId);
283
+ if (groupableIds.length > 0) {
284
+ // COLUMN_GROUP_CHANGED fires with an array of colIds to add to the
285
+ // grouped-column set; GroupDropZone / GroupingEngine pick this up.
286
+ this.eventBus.emit(GridEventType.COLUMN_GROUP_CHANGED, {
287
+ action: 'add',
288
+ colIds: groupableIds,
289
+ });
290
+ }
291
+ }
292
+ return;
293
+ }
294
+ // ── Drop: use live-transform effective index for precise positioning ──────
295
+ // If the live transform computed a valid effectiveIdx, use that to determine
296
+ // the insert position rather than the hitTest (which can be stale on fast drags).
297
+ const effectiveIdx = this.dragEffectiveIdx;
298
+ const useLiveIdx = effectiveIdx !== -1 && effectiveIdx !== this.dragSourceIdx
299
+ && effectiveIdx < this.dragCells.length;
300
+ const resolvedTarget = useLiveIdx
301
+ ? {
302
+ valid: true,
303
+ targetId: this.dragCells[effectiveIdx].groupId,
304
+ position: effectiveIdx > this.dragSourceIdx ? 'after' : 'before',
305
+ indicatorX: 0,
306
+ }
307
+ : target;
308
+ if (!resolvedTarget?.valid)
309
+ return;
310
+ if (isGroup) {
311
+ // Moving the whole group: insert before/after target
312
+ const targetGroup = this.groupModel.getGroup(resolvedTarget.targetId);
313
+ if (!targetGroup)
314
+ return;
315
+ const targetParent = this.groupModel.getParent(resolvedTarget.targetId);
316
+ const targetParentId = targetParent?.groupId ?? null;
317
+ const insertBeforeId = resolvedTarget.position === 'before' ? resolvedTarget.targetId : null;
318
+ // After-insert: find the node immediately following the target, insert before it
319
+ const insertBeforeNext = resolvedTarget.position === 'after'
320
+ ? this.nextSiblingId(resolvedTarget.targetId)
321
+ : null;
322
+ const finalInsertBefore = insertBeforeId ?? insertBeforeNext;
323
+ // Dissolve solo group if being moved back to its origin group
324
+ const draggedGroup = this.groupModel.getGroup(id);
325
+ if (draggedGroup?.isSoloGroup && draggedGroup.originalParentGroupId === targetParentId) {
326
+ const leafNode = draggedGroup.children[0];
327
+ if (leafNode?.nodeType === "leaf" /* ColumnGroupNodeType.LEAF */) {
328
+ this.groupModel.dissolveGroupIfSolo(id, targetParentId, finalInsertBefore);
329
+ this.columnModel.setColumnVisible(leafNode.colDef.colId, true);
330
+ this.triggerRebuild();
331
+ return;
332
+ }
333
+ }
334
+ this.groupModel.moveGroup(id, targetParentId, finalInsertBefore);
335
+ }
336
+ this.triggerRebuild();
337
+ }
338
+ cleanupDrag() {
339
+ this.draggingId = null;
340
+ this.draggingIsGroup = false;
341
+ this.currentTarget = null;
342
+ this.dragCells = [];
343
+ this.dragCellWidth = 0;
344
+ this.dragSourceIdx = -1;
345
+ this.dragEffectiveIdx = -1;
346
+ this.ghostEl?.remove();
347
+ this.ghostEl = null;
348
+ this.indicatorEl?.remove();
349
+ this.indicatorEl = null;
350
+ this.dragStyleEl?.remove();
351
+ this.dragStyleEl = null;
352
+ this.gridEl?.classList.remove('pg-grid--col-dragging');
353
+ this.gridEl = null;
354
+ document.body.style.cursor = '';
355
+ document.body.style.userSelect = '';
356
+ document.removeEventListener('mousemove', this.boundMouseMove);
357
+ document.removeEventListener('mouseup', this.boundMouseUp);
358
+ }
359
+ // ── Private: drop-target hit test ────────────────────────────────────────
360
+ /**
361
+ * Locate the nearest group header cell to the cursor using
362
+ * `getBoundingClientRect` on all visible `[data-group-id]` elements within
363
+ * the grid. Excludes the element being dragged.
364
+ */
365
+ hitTest(clientX, clientY) {
366
+ if (!this.gridEl)
367
+ return INVALID_TARGET;
368
+ const cells = this.gridEl.querySelectorAll('[data-group-id]');
369
+ const gridRect = this.gridEl.getBoundingClientRect();
370
+ let closest = null;
371
+ let minDist = Infinity;
372
+ for (const cell of cells) {
373
+ const gid = cell.getAttribute('data-group-id') ?? '';
374
+ if (gid === this.draggingId)
375
+ continue;
376
+ const rect = cell.getBoundingClientRect();
377
+ // Y must be within the group row (with 4 px tolerance)
378
+ if (clientY < rect.top - 4 || clientY > rect.bottom + 4)
379
+ continue;
380
+ const midX = rect.left + rect.width / 2;
381
+ const dist = Math.abs(clientX - midX);
382
+ if (dist < minDist) {
383
+ minDist = dist;
384
+ const position = clientX < midX ? 'before' : 'after';
385
+ closest = {
386
+ valid: true,
387
+ targetId: gid,
388
+ position,
389
+ // indicatorX is relative to the grid's left edge
390
+ indicatorX: (position === 'before' ? rect.left : rect.right) - gridRect.left,
391
+ };
392
+ }
393
+ }
394
+ return closest ?? INVALID_TARGET;
395
+ }
396
+ updateIndicator(target) {
397
+ if (!this.indicatorEl)
398
+ return;
399
+ if (!target?.valid) {
400
+ this.indicatorEl.style.display = 'none';
401
+ return;
402
+ }
403
+ this.indicatorEl.style.display = 'block';
404
+ this.indicatorEl.style.left = `${target.indicatorX}px`;
405
+ }
406
+ /** `true` when the cursor is more than 40 px outside the grid boundary. */
407
+ isOutsideGrid(clientX, clientY) {
408
+ if (!this.gridEl)
409
+ return false;
410
+ const rect = this.gridEl.getBoundingClientRect();
411
+ const margin = 40;
412
+ return clientX < rect.left - margin
413
+ || clientX > rect.right + margin
414
+ || clientY < rect.top - margin
415
+ || clientY > rect.bottom + margin;
416
+ }
417
+ /** `true` when the cursor is over the row-grouping bar. */
418
+ isOverGroupingBar(clientX, clientY) {
419
+ if (!this.gridEl)
420
+ return false;
421
+ const bar = this.gridEl.querySelector('.pg-group-drop-zone--top');
422
+ if (!bar)
423
+ return false;
424
+ const rect = bar.getBoundingClientRect();
425
+ return clientX >= rect.left && clientX <= rect.right
426
+ && clientY >= rect.top && clientY <= rect.bottom;
427
+ }
428
+ /**
429
+ * Return the ID of the node immediately after `nodeId` among its siblings.
430
+ * Returns `null` when `nodeId` is the last sibling or is not found.
431
+ */
432
+ nextSiblingId(nodeId) {
433
+ const parent = this.groupModel.getParent(nodeId);
434
+ const list = parent ? parent.children : this.groupModel.rootNodes;
435
+ const idx = list
436
+ .findIndex((n) => (n.nodeType === "group" /* ColumnGroupNodeType.GROUP */ ? n.groupId : n.colDef?.colId) === nodeId);
437
+ if (idx === -1 || idx >= list.length - 1)
438
+ return null;
439
+ const next = list[idx + 1];
440
+ return next.nodeType === "group" /* ColumnGroupNodeType.GROUP */ ? (next.groupId ?? null) : (next.colDef?.colId ?? null);
441
+ }
442
+ // ── Public: leaf clone / extract API ────────────────────────────────────
443
+ /**
444
+ * Extract a leaf from its parent group into a solo clone group WITHOUT
445
+ * reordering `store.columns` via `getAllLeaves()`.
446
+ *
447
+ * Use this when the column has already been repositioned by `moveColumn` or
448
+ * `moveAndPin` — the store order is correct; only the group tree and header
449
+ * need to be updated.
450
+ *
451
+ * The solo group is repositioned to be immediately before `insertBeforeId` in
452
+ * the root node list so that a subsequent `getAllLeaves()` tree sync (triggered
453
+ * by the `-1` sentinel) produces the same order as the flat store.
454
+ *
455
+ * @param colId - The `colId` of the leaf to extract.
456
+ * @param insertBeforeId - Root-level sibling node ID to insert the solo group
457
+ * before. Pass `null` to append at the end of the root list.
458
+ */
459
+ extractLeafToSoloGroup(colId, insertBeforeId) {
460
+ const parent = this.groupModel.getParent(colId);
461
+ if (!parent)
462
+ return;
463
+ const soloId = this.groupModel.createSoloGroupForLeaf(colId);
464
+ if (!soloId)
465
+ return;
466
+ // Reposition so that tree order matches the intended column order
467
+ this.groupModel.moveGroup(soloId, null, insertBeforeId);
468
+ // Full rebuild + store sync via the standard -1 sentinel
469
+ this.triggerRebuild();
470
+ }
471
+ /**
472
+ * Called by `HeaderRenderer.onGlobalMouseUp` when a leaf column that belongs
473
+ * to a group is dropped onto a different group's header cell.
474
+ *
475
+ * **Merge-back**: if the leaf is currently in a solo-clone group whose
476
+ * `originalParentGroupId` matches `targetGroupId`, the clone is dissolved and
477
+ * the leaf is returned to its original group.
478
+ *
479
+ * **Clone**: otherwise a new solo-clone wrapper group (same header as the
480
+ * leaf's current parent) is created and positioned next to the target group.
481
+ *
482
+ * @param colId - The `colId` of the dragged leaf column.
483
+ * @param targetGroupId - The group header the leaf was dropped on.
484
+ */
485
+ createLeafClone(colId, targetGroupId) {
486
+ const parentGroup = this.groupModel.getParent(colId);
487
+ if (!parentGroup)
488
+ return; // standalone leaf — nothing to clone
489
+ // ── Merge-back: solo clone dropped on its original parent ───────────────
490
+ if (parentGroup.isSoloGroup && parentGroup.originalParentGroupId === targetGroupId) {
491
+ this.groupModel.dissolveGroupIfSolo(parentGroup.groupId, targetGroupId, null);
492
+ this.columnModel.setColumnVisible(colId, true);
493
+ this.triggerRebuild();
494
+ return;
495
+ }
496
+ // ── Same parent → no-op ─────────────────────────────────────────────────
497
+ if (parentGroup.groupId === targetGroupId)
498
+ return;
499
+ // ── Clone: extract leaf into a solo wrapper group ───────────────────────
500
+ const soloGroupId = this.groupModel.createSoloGroupForLeaf(colId);
501
+ if (!soloGroupId)
502
+ return;
503
+ // Position the new solo group next to (before) the target group
504
+ const targetParent = this.groupModel.getParent(targetGroupId);
505
+ this.groupModel.moveGroup(soloGroupId, targetParent?.groupId ?? null, targetGroupId);
506
+ this.triggerRebuild();
507
+ }
508
+ /** Emit an event that tells the grid renderer to do a full header rebuild. */
509
+ triggerRebuild() {
510
+ this.eventBus.emit(GridEventType.COLUMN_MOVED, {
511
+ colDef: null,
512
+ fromIndex: -1,
513
+ toIndex: -1,
514
+ });
515
+ }
516
+ }
517
+ //# sourceMappingURL=column-group-drag-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-drag-handler.js","sourceRoot":"","sources":["../../src/column-groups/column-group-drag-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { ColumnStyleManager } from '../renderer/column-style-manager';
2
+ import type { IconRenderer } from '../icons/icon-renderer';
3
+ import type { ColumnGroupDragHandler } from './column-group-drag-handler';
4
+ import { type ColumnTreeNode, type HeaderGroupRow } from './column-group.types';
5
+ /**
6
+ * Options for building the DOM cells in a group header row.
7
+ */
8
+ export interface GroupCellBuildOptions {
9
+ /** Height of a single header row in pixels — used for span calculation. */
10
+ rowHeight: number;
11
+ /** Callback fired when the user clicks or presses Enter/Space on a group cell. */
12
+ onCollapseToggle?: (groupId: string) => void;
13
+ /** Callback fired when the user drags the group resize handle. */
14
+ onGroupResize?: (groupId: string, newWidth: number) => void;
15
+ }
16
+ /**
17
+ * Builds the multi-row grouped header DOM for a single panel.
18
+ *
19
+ * ### Layout model
20
+ *
21
+ * ```
22
+ * pg-header-group-row depth-0 ← group cells (position: absolute)
23
+ * pg-header-group-row depth-1 ← deeper group cells (if nested)
24
+ * pg-header-row ← existing leaf row (built by HeaderRenderer)
25
+ * pg-filter-row ← optional filter row
26
+ * ```
27
+ *
28
+ * Group rows use `position: relative` with absolutely-positioned cells so that
29
+ * any arbitrary column width and nesting depth can be expressed without
30
+ * flex-layout constraints. The rows are direct children of the panel's
31
+ * `pg-panel__header-inner` element, which means they scroll together with the
32
+ * leaf row via the same `translateX` CSS transform.
33
+ *
34
+ * ### Virtualization
35
+ *
36
+ * Group rows render **all** group cells (not just the virtual window slice).
37
+ * Because groups span many leaf columns, the number of group cells is small
38
+ * compared to the number of leaf cells — the perf overhead is negligible.
39
+ * The visible portion is automatically clipped by the panel's `overflow: hidden`.
40
+ */
41
+ export declare class ColumnGroupHeaderBuilder {
42
+ private readonly iconRenderer;
43
+ /** Optional drag handler — wired after construction via {@link setDragConfig}. */
44
+ private dragHandler;
45
+ /** Getter returning the root `.pg-grid` element for drag boundary checks. */
46
+ private gridElGetter;
47
+ constructor(iconRenderer: IconRenderer);
48
+ /**
49
+ * Wire a {@link ColumnGroupDragHandler} into the builder so that each
50
+ * group header cell receives drag-and-drop listeners at build time.
51
+ *
52
+ * Must be called before the first `buildGroupRows` invocation if drag
53
+ * support is needed.
54
+ *
55
+ * @param handler - Fully-constructed drag handler instance.
56
+ * @param gridElGetter - Returns the root `.pg-grid` element (may be `null`
57
+ * before mount).
58
+ */
59
+ setDragConfig(handler: ColumnGroupDragHandler, gridElGetter: () => HTMLElement | null): void;
60
+ /**
61
+ * Build one `HTMLElement` per depth level for the given panel tree.
62
+ *
63
+ * Returns an ordered array of group-row elements (depth 0 first).
64
+ * The leaf row is **not** included — it is built by {@link HeaderRenderer}.
65
+ * Returns an empty array when `maxDepth === 0` (no groups).
66
+ *
67
+ * @param panelNodes - Root-level tree nodes for this panel.
68
+ * @param colStyles - Width manager for resolving leaf column widths.
69
+ * @param maxDepth - Global tree depth (from `ColumnGroupModel.getMaxDepth()`).
70
+ * @param cellOptions - DOM build options (row height, callbacks).
71
+ */
72
+ buildGroupRows(panelNodes: ColumnTreeNode[], colStyles: ColumnStyleManager, maxDepth: number, cellOptions: GroupCellBuildOptions): HTMLElement[];
73
+ /**
74
+ * Rebuild the cells of existing group-row elements in place.
75
+ * Called after a virtual-column-window change or width update.
76
+ *
77
+ * @param groupRowEls - Previously built group-row elements (from `buildGroupRows`).
78
+ * @param panelNodes - Current root nodes for this panel.
79
+ * @param colStyles - Current column widths.
80
+ * @param maxDepth - Global tree depth.
81
+ * @param cellOptions - DOM build options.
82
+ */
83
+ updateGroupRows(groupRowEls: HTMLElement[], panelNodes: ColumnTreeNode[], colStyles: ColumnStyleManager, maxDepth: number, cellOptions: GroupCellBuildOptions): void;
84
+ /**
85
+ * Compute the header layout data without constructing any DOM.
86
+ * Returns one {@link HeaderGroupRow} per depth level (0 to `maxDepth - 1`).
87
+ * Used for testing and by the drag handler for hit-testing.
88
+ *
89
+ * @param panelNodes - Root-level tree nodes for this panel.
90
+ * @param colStyles - Width manager for leaf column widths.
91
+ * @param maxDepth - Maximum nesting depth across the full tree.
92
+ */
93
+ computeLayout(panelNodes: ColumnTreeNode[], colStyles: ColumnStyleManager, maxDepth: number): HeaderGroupRow[];
94
+ private walk;
95
+ /**
96
+ * Walk a subtree and return the `colId` of the first non-hidden leaf.
97
+ * Returns `null` when no visible leaf is found.
98
+ */
99
+ private getFirstVisibleLeafColId;
100
+ private buildGroupRow;
101
+ private populateGroupRow;
102
+ private buildGroupCell;
103
+ private buildDefaultContent;
104
+ private startGroupResize;
105
+ }
106
+ //# sourceMappingURL=column-group-header-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-group-header-builder.d.ts","sourceRoot":"","sources":["../../src/column-groups/column-group-header-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAuB,KAAK,cAAc,EAA+C,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlJ;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,wBAAwB;IAMvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IALzC,kFAAkF;IAClF,OAAO,CAAC,WAAW,CAAwC;IAC3D,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAA2C;gBAElC,YAAY,EAAE,YAAY;IAEvD;;;;;;;;;;OAUG;IACH,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI;IAO5F;;;;;;;;;;;OAWG;IACH,cAAc,CACZ,UAAU,EAAG,cAAc,EAAE,EAC7B,SAAS,EAAI,kBAAkB,EAC/B,QAAQ,EAAK,MAAM,EACnB,WAAW,EAAE,qBAAqB,GACjC,WAAW,EAAE;IAOhB;;;;;;;;;OASG;IACH,eAAe,CACb,WAAW,EAAE,WAAW,EAAE,EAC1B,UAAU,EAAG,cAAc,EAAE,EAC7B,SAAS,EAAI,kBAAkB,EAC/B,QAAQ,EAAK,MAAM,EACnB,WAAW,EAAE,qBAAqB,GACjC,IAAI;IAWP;;;;;;;;OAQG;IACH,aAAa,CACX,UAAU,EAAE,cAAc,EAAE,EAC5B,SAAS,EAAG,kBAAkB,EAC9B,QAAQ,EAAI,MAAM,GACjB,cAAc,EAAE;IAanB,OAAO,CAAC,IAAI;IAmEZ;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IA6EtB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,gBAAgB;CA2BzB"}