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,296 @@
1
+ import { GridEventType } from '../../types/event.types';
2
+ import { resolveEdges, buildTree, flattenTree } from './tree-node';
3
+ /**
4
+ * Orchestrates Tree Data end to end: builds the hierarchy from raw row data,
5
+ * filters it, sorts it, and flattens it into the plain `RowNode[]` the rest
6
+ * of the pipeline already expects. Plays the same role for self-referential
7
+ * hierarchies that `GroupingEngine` plays for column-value grouping —
8
+ * expansion state lives in the separate `TreeExpansionService`, and
9
+ * filtering/sorting are done by *calling* `FilterEngine`/`SortEngine`, never
10
+ * by re-implementing condition matching or comparison here.
11
+ */
12
+ export class TreeDataService {
13
+ constructor(store, eventBus, filterEngine, sortEngine, expansionService) {
14
+ this.store = store;
15
+ this.eventBus = eventBus;
16
+ this.filterEngine = filterEngine;
17
+ this.sortEngine = sortEngine;
18
+ this.expansionService = expansionService;
19
+ this.config = null;
20
+ /** The last-built, unfiltered/unsorted tree — kept so `moveNode`/`loadChildren`/selection cascades can resolve a node by id without re-walking raw data. */
21
+ this.lastRoots = [];
22
+ this.lastNodesById = new Map();
23
+ /** Node ids already evaluated against `defaultExpanded` — mirrors `MasterDetailEngine.defaultAppliedNodeIds` so a user-collapsed node is never silently re-expanded on the next pipeline run. */
24
+ this.defaultAppliedNodeIds = new Set();
25
+ this.pendingLoadNodeIds = new Set();
26
+ this.refreshCallback = null;
27
+ }
28
+ /** Applies the grid's `treeData` option block. Called once from `GridCore.initialize`. */
29
+ configure(config) {
30
+ this.config = config?.enabled ? config : null;
31
+ }
32
+ isEnabled() {
33
+ return this.config !== null;
34
+ }
35
+ getConfig() {
36
+ return this.config;
37
+ }
38
+ /** Registers the callback used to re-run the pipeline after an async lazy-load resolves or a reparent commits. Wired from `GridCore`. */
39
+ setRefreshCallback(fn) {
40
+ this.refreshCallback = fn;
41
+ }
42
+ /** `'parentId'`/`'childrenField'` hierarchies are stored data and can be mutated by drag-to-reparent; `'dataPath'`/`'custom'` are derived and read-only. */
43
+ supportsReparenting() {
44
+ return this.config?.mode === 'parentId' || this.config?.mode === 'childrenField';
45
+ }
46
+ /**
47
+ * The full build → filter → sort → flatten sequence `GridApi.applyPipeline`
48
+ * calls when Tree Data is enabled, replacing the flat filter/sort/group
49
+ * steps for this pipeline run.
50
+ */
51
+ getFlatVisibleRows(allRows, columns) {
52
+ if (!this.config)
53
+ return allRows;
54
+ let roots = this.buildRoots(allRows);
55
+ this.applyDefaultExpansion(roots);
56
+ roots = this.filterTree(roots, columns);
57
+ roots = this.sortTree(roots, columns);
58
+ return flattenTree(roots, this.expansionService.getExpandedIds());
59
+ }
60
+ /** O(n) hierarchy construction from the grid's raw (flat, un-treed) row data. Caches the result for `moveNode`/`loadChildren`/selection-cascade lookups. */
61
+ buildRoots(allRows) {
62
+ if (!this.config)
63
+ return [];
64
+ const rawRecords = allRows.map((r) => r.data);
65
+ const edges = resolveEdges(this.config, rawRecords);
66
+ const roots = buildTree(edges, allRows[0]?.height ?? 50);
67
+ this.lastRoots = roots;
68
+ this.lastNodesById = new Map();
69
+ const index = (nodes) => {
70
+ for (const node of nodes) {
71
+ this.lastNodesById.set(node.nodeId, node);
72
+ if (node.children.length > 0)
73
+ index(node.children);
74
+ }
75
+ };
76
+ index(roots);
77
+ return roots;
78
+ }
79
+ /**
80
+ * Tree-aware filtering: a node survives if it matches the active filters
81
+ * itself (via `FilterEngine.matchesRow` — the exact predicate the flat
82
+ * path uses) **or** any descendant does, so a matching leaf's ancestor
83
+ * chain stays visible. Builds filtered node copies rather than mutating
84
+ * the cached hierarchy, so `lastRoots`/`lastNodesById` stay the true,
85
+ * unfiltered tree for reparenting/selection.
86
+ */
87
+ filterTree(roots, columns) {
88
+ if (!this.filterEngine.hasActiveFilters())
89
+ return roots;
90
+ const filterNode = (node) => {
91
+ const filteredChildren = node.children
92
+ .map(filterNode)
93
+ .filter((n) => n !== null);
94
+ const selfMatches = this.filterEngine.matchesRow(node, columns);
95
+ if (!selfMatches && filteredChildren.length === 0)
96
+ return null;
97
+ return { ...node, children: filteredChildren, hasChildren: filteredChildren.length > 0 || node.hasChildren };
98
+ };
99
+ return roots.map(filterNode).filter((n) => n !== null);
100
+ }
101
+ /**
102
+ * Tree-aware sorting: reuses `SortEngine.applySorting` completely
103
+ * unchanged, once per sibling array (including the roots array itself).
104
+ * `applySorting` already no-ops when no sort is configured, so an
105
+ * unsorted tree walk costs one cheap pass with zero allocation.
106
+ */
107
+ sortTree(roots, columns) {
108
+ const sortChildren = (nodes) => {
109
+ const sorted = this.sortEngine.applySorting(nodes, columns);
110
+ for (const node of sorted) {
111
+ if (node.children.length > 0)
112
+ node.children = sortChildren(node.children);
113
+ }
114
+ return sorted;
115
+ };
116
+ return sortChildren(roots);
117
+ }
118
+ /**
119
+ * Computes `RowNode.subtreeEndTop` for every tree row in the final,
120
+ * laid-out `visibleRows` array. Must run *after* `RowModel.setVisibleRows`
121
+ * assigns `top`/`height` — subtree extents can't be known before layout —
122
+ * so `GridApi.applyPipeline` calls this as a separate step, not from
123
+ * `getFlatVisibleRows`. One O(n) stack-based pass: whenever a row appears
124
+ * whose `level` is <= an open ancestor's level, that ancestor's subtree
125
+ * just ended at the new row's `top`.
126
+ */
127
+ annotateSubtreeExtents(rows) {
128
+ if (!this.config || rows.length === 0)
129
+ return;
130
+ const stack = [];
131
+ for (const row of rows) {
132
+ if (row.type !== 'data')
133
+ continue;
134
+ while (stack.length > 0 && stack[stack.length - 1].level >= row.level) {
135
+ stack.pop().subtreeEndTop = row.top;
136
+ }
137
+ stack.push(row);
138
+ }
139
+ const lastRow = rows[rows.length - 1];
140
+ const end = lastRow.top + lastRow.height;
141
+ for (const open of stack)
142
+ open.subtreeEndTop = end;
143
+ }
144
+ getNode(nodeId) {
145
+ return this.lastNodesById.get(nodeId);
146
+ }
147
+ /** The full, unfiltered/unsorted hierarchy from the most recent `getFlatVisibleRows`/`buildRoots` call — what `expandAllTreeNodes`/`collapseAllTreeNodes` walk. */
148
+ getRoots() {
149
+ return this.lastRoots;
150
+ }
151
+ /**
152
+ * Mutates the underlying raw hierarchy so a subsequent pipeline run
153
+ * rebuilds the tree with `draggedId` under its new parent, then requests a
154
+ * refresh — never hand-splices `visibleRows`, since tree mode always
155
+ * rebuilds it from raw data on every pipeline run anyway.
156
+ *
157
+ * `position: 'before'/'after'` reparents onto the *same parent as*
158
+ * `targetId`; precise sibling ordering within that parent is not yet
159
+ * tracked (a follow-up — see plan notes), so the node lands as that
160
+ * parent's last child rather than at the exact hover position.
161
+ */
162
+ moveNode(draggedId, targetId, position) {
163
+ if (!this.config || !this.supportsReparenting()) {
164
+ console.warn(`[PhotonGrid] Tree Data drag-to-reparent isn't supported for mode "${this.config?.mode}" (only "parentId"/"childrenField" have a mutable hierarchy).`);
165
+ return false;
166
+ }
167
+ const dragged = this.lastNodesById.get(draggedId);
168
+ const target = this.lastNodesById.get(targetId);
169
+ if (!dragged || !target || dragged.isTreeFiller || target.isTreeFiller)
170
+ return false;
171
+ const newParent = position === 'inside' ? target : target.parent;
172
+ if (newParent === dragged || this.isDescendantOf(newParent, dragged))
173
+ return false; // never drop a node inside its own subtree
174
+ if (this.config.mode === 'parentId') {
175
+ const idField = this.config.idField ?? 'id';
176
+ const parentIdField = this.config.parentIdField ?? 'parentId';
177
+ dragged.data[parentIdField] = newParent ? newParent.data[idField] : null;
178
+ }
179
+ else {
180
+ this.reparentChildrenField(dragged, newParent);
181
+ }
182
+ this.refreshCallback?.();
183
+ return true;
184
+ }
185
+ /** `'childrenField'` mode: splice the raw record out of its old parent's `children` array and into the new one — both are live references shared with `RowModel`'s raw data, so this mutation is visible on the next pipeline run. */
186
+ reparentChildrenField(dragged, newParent) {
187
+ const childrenField = this.config.childrenField ?? 'children';
188
+ const oldParentChildren = dragged.parent
189
+ ? (dragged.parent.data[childrenField] ?? [])
190
+ : null;
191
+ if (oldParentChildren) {
192
+ const idx = oldParentChildren.indexOf(dragged.data);
193
+ if (idx !== -1)
194
+ oldParentChildren.splice(idx, 1);
195
+ }
196
+ if (newParent) {
197
+ const newSiblings = newParent.data[childrenField] ?? [];
198
+ newSiblings.push(dragged.data);
199
+ newParent.data[childrenField] = newSiblings;
200
+ }
201
+ }
202
+ isDescendantOf(candidate, ancestor) {
203
+ let node = candidate;
204
+ while (node) {
205
+ if (node === ancestor)
206
+ return true;
207
+ node = node.parent;
208
+ }
209
+ return false;
210
+ }
211
+ /**
212
+ * Lazy-loads a node's children via `TreeDataConfig.lazyLoadChildren`.
213
+ * No-ops if lazy loading isn't configured, children are already loaded, or
214
+ * a fetch for this node is already in flight. On resolve, appends the
215
+ * fetched raw records as children of `node.data` (mode-appropriate: sets
216
+ * `parentId` for `'parentId'` mode, pushes into the `children` array for
217
+ * `'childrenField'` mode) and refreshes.
218
+ */
219
+ loadChildren(nodeId) {
220
+ const fn = this.config?.lazyLoadChildren;
221
+ const node = this.lastNodesById.get(nodeId);
222
+ if (!fn || !node || node.childrenLoaded || this.pendingLoadNodeIds.has(nodeId))
223
+ return;
224
+ this.pendingLoadNodeIds.add(nodeId);
225
+ fn(node)
226
+ .then((children) => {
227
+ this.attachLoadedChildren(node, children);
228
+ node.childrenLoaded = true;
229
+ this.eventBus.emit(GridEventType.TREE_CHILDREN_LOADED, { nodeId, children });
230
+ })
231
+ .catch((err) => {
232
+ console.error(`[PhotonGrid] treeData.lazyLoadChildren failed for node "${nodeId}":`, err);
233
+ })
234
+ .finally(() => {
235
+ this.pendingLoadNodeIds.delete(nodeId);
236
+ this.refreshCallback?.();
237
+ });
238
+ }
239
+ isLoadPending(nodeId) {
240
+ return this.pendingLoadNodeIds.has(nodeId);
241
+ }
242
+ attachLoadedChildren(node, children) {
243
+ if (!this.config)
244
+ return;
245
+ if (this.config.mode === 'parentId') {
246
+ const idField = this.config.idField ?? 'id';
247
+ const parentIdField = this.config.parentIdField ?? 'parentId';
248
+ const parentId = node.data[idField];
249
+ for (const child of children)
250
+ child[parentIdField] = parentId;
251
+ }
252
+ else if (this.config.mode === 'childrenField') {
253
+ const childrenField = this.config.childrenField ?? 'children';
254
+ node.data[childrenField] = children;
255
+ }
256
+ }
257
+ /**
258
+ * Applies `TreeDataConfig.defaultExpanded` — but only to nodes never seen
259
+ * before (tracked in `defaultAppliedNodeIds`, mirroring
260
+ * `MasterDetailEngine.defaultAppliedNodeIds`). This runs on *every*
261
+ * pipeline refresh (including the one right after a user collapses a
262
+ * node), so re-evaluating already-seen nodes here would immediately
263
+ * stomp a manual collapse back open — the exact bug this guard prevents.
264
+ * `maxLevel` is `Infinity` for `defaultExpanded: true` (expand everything)
265
+ * or the configured depth for a number.
266
+ */
267
+ applyDefaultExpansion(roots) {
268
+ const { defaultExpanded } = this.config ?? {};
269
+ if (!defaultExpanded)
270
+ return;
271
+ const maxLevel = defaultExpanded === true ? Infinity : defaultExpanded;
272
+ const toExpand = [];
273
+ const collect = (nodes) => {
274
+ for (const node of nodes) {
275
+ const isEligible = node.level < maxLevel && (node.children.length > 0 || node.hasChildren);
276
+ if (isEligible && !this.defaultAppliedNodeIds.has(node.nodeId)) {
277
+ this.defaultAppliedNodeIds.add(node.nodeId);
278
+ toExpand.push(node);
279
+ }
280
+ if (node.children.length > 0)
281
+ collect(node.children);
282
+ }
283
+ };
284
+ collect(roots);
285
+ for (const node of toExpand)
286
+ this.expansionService.expand(node);
287
+ }
288
+ destroy() {
289
+ this.lastRoots = [];
290
+ this.lastNodesById.clear();
291
+ this.defaultAppliedNodeIds.clear();
292
+ this.pendingLoadNodeIds.clear();
293
+ this.refreshCallback = null;
294
+ }
295
+ }
296
+ //# sourceMappingURL=tree-data-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-data-service.js","sourceRoot":"","sources":["../../../src/engines/tree/tree-data-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { RowNode } from '../../types/row.types';
2
+ import type { GridStore } from '../../core/grid-store';
3
+ import type { EventBus } from '../../event-bus/event-bus';
4
+ /**
5
+ * Owns Tree Data's expand/collapse state — `expandedTreeNodeIds` on
6
+ * `GridStore` — and nothing else. Deliberately kept separate from
7
+ * `TreeDataService` (which builds/filters/sorts the hierarchy) even though
8
+ * `GroupingEngine` inlines this exact same responsibility for column-value
9
+ * groups; splitting it out here is what the tree feature asked for, and
10
+ * doesn't require touching grouping's already-working code to match.
11
+ *
12
+ * Method shapes mirror `GroupingEngine.expandGroup`/`collapseGroup`/
13
+ * `toggleGroup`/`isGroupExpanded` (`grouping-engine.ts:72-107`) almost
14
+ * verbatim — same pattern, different key namespace.
15
+ */
16
+ export declare class TreeExpansionService {
17
+ private store;
18
+ private eventBus;
19
+ constructor(store: GridStore, eventBus: EventBus);
20
+ expand(node: RowNode): void;
21
+ collapse(node: RowNode): void;
22
+ toggle(node: RowNode): void;
23
+ isExpanded(nodeId: string): boolean;
24
+ /** Expands every node in `roots` (and their descendants) — "expand all". */
25
+ expandAll(roots: RowNode[]): void;
26
+ collapseAll(): void;
27
+ /**
28
+ * Expands every node whose depth is less than `maxLevel` — backs
29
+ * `TreeDataConfig.defaultExpanded` when it's a number (e.g. `1` expands
30
+ * just the roots). `maxLevel <= 0` leaves everything collapsed.
31
+ */
32
+ expandToLevel(roots: RowNode[], maxLevel: number): void;
33
+ getExpandedIds(): ReadonlySet<string>;
34
+ }
35
+ //# sourceMappingURL=tree-expansion-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-expansion-service.d.ts","sourceRoot":"","sources":["../../../src/engines/tree/tree-expansion-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;gBADR,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ;IAG5B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAO3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAO7B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK3B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAInC,4EAA4E;IAC5E,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAYjC,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkBvD,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC;CAGtC"}
@@ -0,0 +1,84 @@
1
+ import { GridEventType } from '../../types/event.types';
2
+ /**
3
+ * Owns Tree Data's expand/collapse state — `expandedTreeNodeIds` on
4
+ * `GridStore` — and nothing else. Deliberately kept separate from
5
+ * `TreeDataService` (which builds/filters/sorts the hierarchy) even though
6
+ * `GroupingEngine` inlines this exact same responsibility for column-value
7
+ * groups; splitting it out here is what the tree feature asked for, and
8
+ * doesn't require touching grouping's already-working code to match.
9
+ *
10
+ * Method shapes mirror `GroupingEngine.expandGroup`/`collapseGroup`/
11
+ * `toggleGroup`/`isGroupExpanded` (`grouping-engine.ts:72-107`) almost
12
+ * verbatim — same pattern, different key namespace.
13
+ */
14
+ export class TreeExpansionService {
15
+ constructor(store, eventBus) {
16
+ this.store = store;
17
+ this.eventBus = eventBus;
18
+ }
19
+ expand(node) {
20
+ const ids = new Set(this.store.get('expandedTreeNodeIds'));
21
+ ids.add(node.nodeId);
22
+ this.store.set('expandedTreeNodeIds', ids);
23
+ this.eventBus.emit(GridEventType.TREE_NODE_EXPANDED, { nodeId: node.nodeId, row: node });
24
+ }
25
+ collapse(node) {
26
+ const ids = new Set(this.store.get('expandedTreeNodeIds'));
27
+ ids.delete(node.nodeId);
28
+ this.store.set('expandedTreeNodeIds', ids);
29
+ this.eventBus.emit(GridEventType.TREE_NODE_COLLAPSED, { nodeId: node.nodeId, row: node });
30
+ }
31
+ toggle(node) {
32
+ if (this.isExpanded(node.nodeId))
33
+ this.collapse(node);
34
+ else
35
+ this.expand(node);
36
+ }
37
+ isExpanded(nodeId) {
38
+ return this.store.get('expandedTreeNodeIds').has(nodeId);
39
+ }
40
+ /** Expands every node in `roots` (and their descendants) — "expand all". */
41
+ expandAll(roots) {
42
+ const ids = new Set();
43
+ const collect = (nodes) => {
44
+ for (const node of nodes) {
45
+ if (node.children.length > 0 || node.hasChildren)
46
+ ids.add(node.nodeId);
47
+ if (node.children.length > 0)
48
+ collect(node.children);
49
+ }
50
+ };
51
+ collect(roots);
52
+ this.store.set('expandedTreeNodeIds', ids);
53
+ }
54
+ collapseAll() {
55
+ this.store.set('expandedTreeNodeIds', new Set());
56
+ }
57
+ /**
58
+ * Expands every node whose depth is less than `maxLevel` — backs
59
+ * `TreeDataConfig.defaultExpanded` when it's a number (e.g. `1` expands
60
+ * just the roots). `maxLevel <= 0` leaves everything collapsed.
61
+ */
62
+ expandToLevel(roots, maxLevel) {
63
+ if (maxLevel <= 0) {
64
+ this.collapseAll();
65
+ return;
66
+ }
67
+ const ids = new Set();
68
+ const collect = (nodes) => {
69
+ for (const node of nodes) {
70
+ if (node.level < maxLevel && (node.children.length > 0 || node.hasChildren)) {
71
+ ids.add(node.nodeId);
72
+ if (node.children.length > 0)
73
+ collect(node.children);
74
+ }
75
+ }
76
+ };
77
+ collect(roots);
78
+ this.store.set('expandedTreeNodeIds', ids);
79
+ }
80
+ getExpandedIds() {
81
+ return this.store.get('expandedTreeNodeIds');
82
+ }
83
+ }
84
+ //# sourceMappingURL=tree-expansion-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-expansion-service.js","sourceRoot":"","sources":["../../../src/engines/tree/tree-expansion-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { RowNode } from '../../types/row.types';
2
+ import type { TreeDataConfig, TreeEdge } from '../../types/tree-data.types';
3
+ /**
4
+ * Resolves raw row data into `{id, parentId, record}` edges, ready for
5
+ * {@link buildTree}. Dispatches on `config.mode` — this is the only place
6
+ * that branches on hierarchy source; everything downstream is source-agnostic.
7
+ */
8
+ export declare function resolveEdges(config: TreeDataConfig, rawRecords: Record<string, unknown>[]): TreeEdge[];
9
+ /**
10
+ * `childrenField` mode: input is already nested (`data[i][childrenField]` is
11
+ * an array of raw child records, not `RowNode`s), so it needs one O(n) DFS
12
+ * walk before it can be treated like every other mode's flat edge list.
13
+ *
14
+ * Ids fall back to a positional path (`"0"`, `"0.1"`, `"0.1.2"`, ...) when a
15
+ * record has no `idField` value — stable across rebuilds as long as the
16
+ * caller's array order/shape doesn't change between pipeline runs, which is
17
+ * what keeps `expandedTreeNodeIds` (keyed by these ids) from losing state on
18
+ * every `refresh()`.
19
+ */
20
+ export declare function flattenNestedChildren(rootsRaw: Record<string, unknown>[], childrenField: string, idField: string): TreeEdge[];
21
+ /**
22
+ * Builds the `RowNode` tree from resolved edges — classic two-pass O(n)
23
+ * construction (no O(n²) parent scanning): pass 1 creates every node keyed
24
+ * by id, pass 2 wires `children`/`parent`/`level` by looking up each edge's
25
+ * `parentId`. An edge whose `parentId` doesn't resolve to a known id (a
26
+ * dangling reference, or a genuine root) becomes a root.
27
+ *
28
+ * `expanded` is intentionally left `false` here — it's set per-node by
29
+ * {@link flattenTree} at flatten time, since expansion state is external,
30
+ * mutable, and this function is called fresh on every pipeline run.
31
+ */
32
+ export declare function buildTree(edges: TreeEdge[], defaultRowHeight?: number): RowNode[];
33
+ /**
34
+ * Flattens an expanded subset of the tree into the flat `RowNode[]` every
35
+ * downstream consumer (pagination, Master/Detail injection, virtualization)
36
+ * already expects — mirrors `flattenGroupTree` (`group-node.ts`) exactly:
37
+ * push a node, recurse into its children only if it's expanded.
38
+ */
39
+ export declare function flattenTree(roots: RowNode[], expandedIds: ReadonlySet<string>): RowNode[];
40
+ //# sourceMappingURL=tree-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node.d.ts","sourceRoot":"","sources":["../../../src/engines/tree/tree-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAwB5E;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACpC,QAAQ,EAAE,CAaZ;AAkED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,QAAQ,EAAE,CAqBZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,SAAK,GAAG,OAAO,EAAE,CA+C7E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAazF"}