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,388 @@
1
+ import { GridEventType } from '../types/event.types';
2
+ import { detailNodeId } from '../types/row.types';
3
+ import { createDiv } from './dom-utils';
4
+ /**
5
+ * Inset (px, all sides) applied to `.pg-row--detail-container` in `base-styles.ts`
6
+ * so the nested grid never touches the detail row's edges. Auto-height must add
7
+ * this back in — `box-sizing: border-box` means the padding eats into the row's
8
+ * own height, so the row needs to be taller than the nested grid's content by
9
+ * exactly this much on top and bottom, or the nested grid would be clipped.
10
+ */
11
+ const DETAIL_ROW_PADDING_PX = 20;
12
+ /** Fallback for `MasterDetailConfig.keepDetailGridsCount` when unset. */
13
+ const DEFAULT_KEEP_DETAIL_GRIDS_COUNT = 10;
14
+ /**
15
+ * Renders Master/Detail rows as a full-width layer spanning the parent
16
+ * grid's `bodyWrapEl`, independent of the left/center/right pinned-column
17
+ * panels `BodyRenderer` owns.
18
+ *
19
+ * Living outside those panels is what makes the detail section span the
20
+ * full grid width regardless of pinned columns and stay put during
21
+ * horizontal scroll: its content wrapper only ever receives the vertical
22
+ * `--pg-scroll-y` transform (see `base-styles.ts`), never the horizontal one.
23
+ *
24
+ * Detail containers are cached by `nodeId` and reused across renders exactly
25
+ * like `BodyRenderer.renderedRowMap` — a nested `GridCore` instance is
26
+ * expensive to construct (it builds an entire independent grid), so it is
27
+ * created lazily on first expand. While a row remains expanded but scrolls
28
+ * outside the virtualized render window, its container is hidden
29
+ * (`display: none`) rather than destroyed, trading a small constant amount
30
+ * of retained memory (bounded by how many rows a user has actually expanded)
31
+ * for avoiding repeated fetch/mount/destroy churn on every scroll frame.
32
+ *
33
+ * On collapse, the entry is likewise not destroyed immediately — it moves
34
+ * into {@link collapsedCache}, an LRU keyed by `MasterDetailConfig.keepDetailGridsCount`,
35
+ * so re-expanding the same row restores the nested grid's live state (sort,
36
+ * column order/width, scroll, selection) instead of rebuilding from scratch.
37
+ * Only once evicted from that bounded cache is the instance actually destroyed.
38
+ */
39
+ export class DetailRowRenderer {
40
+ constructor() {
41
+ this.layerEl = null;
42
+ this.contentEl = null;
43
+ this.entries = new Map();
44
+ /**
45
+ * Collapsed entries kept alive for instant, stateful re-expansion. Map
46
+ * insertion order doubles as LRU order — re-inserting a key on access
47
+ * moves it to the end, and eviction always removes the first (oldest) key.
48
+ */
49
+ this.collapsedCache = new Map();
50
+ this.masterDetailEngine = null;
51
+ this.nestedGridFactory = null;
52
+ this.iconRenderer = null;
53
+ this.themeManager = null;
54
+ this.parentApi = null;
55
+ /** Forwards a wheel delta to the parent grid's own vertical scroll. Set by `GridRenderer` so nested grids never capture wheel gestures for themselves. */
56
+ this.parentScrollForwarder = null;
57
+ }
58
+ /** Mounts the full-width overlay layer as a sibling of the left/center/right body panels. */
59
+ mount(bodyWrapEl) {
60
+ this.layerEl = createDiv('pg-detail-layer');
61
+ this.contentEl = createDiv('pg-detail-layer__content');
62
+ this.layerEl.appendChild(this.contentEl);
63
+ bodyWrapEl.appendChild(this.layerEl);
64
+ }
65
+ /** Wires collaborators. Called once from `GridCore.buildContext` via `GridRenderer.setMasterDetailConfig`. */
66
+ setDependencies(engine, factory, iconRenderer, themeManager) {
67
+ this.masterDetailEngine = engine;
68
+ this.nestedGridFactory = factory;
69
+ this.iconRenderer = iconRenderer;
70
+ this.themeManager = themeManager;
71
+ }
72
+ /**
73
+ * Wires the callback used to redirect wheel gestures over any nested grid
74
+ * to the parent's own vertical scroll — see `attachWheelForwarding`.
75
+ */
76
+ setParentScrollForwarder(fn) {
77
+ this.parentScrollForwarder = fn;
78
+ }
79
+ /** Late-bound once `GridApi` exists (after `GridCore`'s constructor finishes building context). Passed through to `detailRendererFn` as `parentApi`. */
80
+ setParentApi(api) {
81
+ this.parentApi = api;
82
+ }
83
+ /**
84
+ * Reconciles the overlay layer against the current detail rows.
85
+ *
86
+ * @param windowedDetailRows - `type === 'detail'` rows within the current
87
+ * virtualized render window — these get built/shown.
88
+ * @param allDetailNodeIds - every `type === 'detail'` node id currently in
89
+ * `visibleRows` (not just the window) — anything cached but absent here
90
+ * was collapsed or its parent row was removed, and is torn down.
91
+ */
92
+ sync(windowedDetailRows, allDetailNodeIds) {
93
+ if (!this.contentEl || !this.masterDetailEngine)
94
+ return;
95
+ for (const [nodeId, entry] of this.entries) {
96
+ // Entries already shrinking out via `beginCollapse` manage their own
97
+ // teardown (transitionend / fallback timer) — leave them alone here,
98
+ // or the animation would be skipped and the row would vanish instantly.
99
+ if (entry.collapsing)
100
+ continue;
101
+ if (!allDetailNodeIds.has(nodeId)) {
102
+ this.destroyEntry(entry);
103
+ this.entries.delete(nodeId);
104
+ }
105
+ }
106
+ const windowedIds = new Set(windowedDetailRows.map((r) => r.nodeId));
107
+ for (const [nodeId, entry] of this.entries) {
108
+ if (entry.collapsing)
109
+ continue;
110
+ if (!windowedIds.has(nodeId))
111
+ entry.containerEl.style.display = 'none';
112
+ }
113
+ for (const row of windowedDetailRows) {
114
+ let entry = this.entries.get(row.nodeId);
115
+ if (!entry) {
116
+ entry = this.reviveOrBuildEntry(row);
117
+ this.entries.set(row.nodeId, entry);
118
+ this.playEnterAnimation(entry);
119
+ }
120
+ entry.containerEl.style.display = '';
121
+ if (!entry.contentBuilt)
122
+ this.tryBuildContent(entry, row);
123
+ }
124
+ }
125
+ /** Reuses a cached collapsed entry (preserving its nested grid's live state) when one exists, otherwise builds a fresh one. */
126
+ reviveOrBuildEntry(row) {
127
+ const cached = this.collapsedCache.get(row.nodeId);
128
+ if (cached) {
129
+ this.collapsedCache.delete(row.nodeId);
130
+ return cached;
131
+ }
132
+ return this.buildEntry(row);
133
+ }
134
+ /**
135
+ * Begins the shrink/fade-out for `parentNodeId`'s detail row, called by
136
+ * `GridCore` synchronously on collapse-click — **before** the pipeline
137
+ * re-runs. This timing matters: once `MasterDetailEngine.injectDetailRows`
138
+ * drops the row, `RowPositionSheet`'s rule for it disappears for good on
139
+ * the very next render, so the current `top`/`height` must be captured and
140
+ * frozen as inline styles now, while they're still valid, or there would be
141
+ * nothing correct to animate from.
142
+ */
143
+ beginCollapse(parentNodeId) {
144
+ if (!this.contentEl)
145
+ return;
146
+ const nodeId = detailNodeId(parentNodeId);
147
+ const entry = this.entries.get(nodeId);
148
+ if (!entry || entry.collapsing)
149
+ return;
150
+ entry.collapsing = true;
151
+ const parentRect = this.contentEl.getBoundingClientRect();
152
+ const rect = entry.containerEl.getBoundingClientRect();
153
+ entry.containerEl.style.top = `${rect.top - parentRect.top}px`;
154
+ entry.containerEl.style.height = `${rect.height}px`;
155
+ // Force layout so the frozen top/height commit as a distinct paint —
156
+ // otherwise the browser may coalesce this write with the shrink below
157
+ // into a single frame and skip the transition entirely.
158
+ void entry.containerEl.offsetHeight;
159
+ let finished = false;
160
+ const finish = () => {
161
+ if (finished)
162
+ return;
163
+ finished = true;
164
+ entry.containerEl.removeEventListener('transitionend', onTransitionEnd);
165
+ if (this.entries.get(nodeId) === entry) {
166
+ this.entries.delete(nodeId);
167
+ this.cacheCollapsedEntry(nodeId, entry);
168
+ }
169
+ };
170
+ const onTransitionEnd = (e) => {
171
+ if (e.propertyName === 'height')
172
+ finish();
173
+ };
174
+ entry.containerEl.addEventListener('transitionend', onTransitionEnd);
175
+ // Safety net — guarantees cleanup even if the element is hidden/removed
176
+ // from layout mid-transition and never fires `transitionend`.
177
+ setTimeout(finish, 260);
178
+ requestAnimationFrame(() => {
179
+ entry.containerEl.classList.add('pg-row--detail-collapsing');
180
+ entry.containerEl.style.height = '0px';
181
+ });
182
+ }
183
+ /**
184
+ * Fades a freshly-created detail entry in. Height is left to the
185
+ * `pg-row--detail-container` CSS transition — the value `RowPositionSheet`
186
+ * assigns naturally animates from the initial (min/cached) height to the
187
+ * auto-measured one once the nested grid finishes its first render.
188
+ */
189
+ playEnterAnimation(entry) {
190
+ entry.containerEl.classList.add('pg-row--detail-entering');
191
+ requestAnimationFrame(() => {
192
+ requestAnimationFrame(() => {
193
+ entry.containerEl.classList.remove('pg-row--detail-entering');
194
+ });
195
+ });
196
+ }
197
+ destroy() {
198
+ for (const entry of this.entries.values())
199
+ this.destroyEntry(entry);
200
+ this.entries.clear();
201
+ for (const entry of this.collapsedCache.values())
202
+ this.destroyEntry(entry);
203
+ this.collapsedCache.clear();
204
+ this.layerEl?.remove();
205
+ this.layerEl = null;
206
+ this.contentEl = null;
207
+ }
208
+ /** The nested `GridCore` instance mounted for `parentNodeId`'s detail row, or `undefined` if not expanded/not yet built. Backs `GridApi.getDetailGridApi`. */
209
+ getNestedInstance(parentNodeId) {
210
+ return this.entries.get(detailNodeId(parentNodeId))?.instance ?? undefined;
211
+ }
212
+ // ─── Private ────────────────────────────────────────────────────────────
213
+ buildEntry(row) {
214
+ const containerEl = createDiv('pg-row pg-row--detail-container');
215
+ containerEl.setAttribute('data-node-id', row.nodeId);
216
+ this.contentEl.appendChild(containerEl);
217
+ return { containerEl, instance: null, contentBuilt: false, collapsing: false, cleanupFns: [] };
218
+ }
219
+ /**
220
+ * Moves a just-collapsed entry into {@link collapsedCache} instead of
221
+ * destroying it, so the next expand of the same row is instant and starts
222
+ * from exactly where the user left it. Clears the transient collapse
223
+ * animation's inline `top`/`height` overrides first — `RowPositionSheet`
224
+ * governs this row's position again the moment its node id reappears in
225
+ * the pipeline output on re-expand.
226
+ */
227
+ cacheCollapsedEntry(nodeId, entry) {
228
+ entry.collapsing = false;
229
+ entry.containerEl.classList.remove('pg-row--detail-collapsing');
230
+ entry.containerEl.style.removeProperty('top');
231
+ entry.containerEl.style.removeProperty('height');
232
+ entry.containerEl.style.display = 'none';
233
+ // Re-inserting moves the key to the end for LRU-by-insertion-order.
234
+ this.collapsedCache.delete(nodeId);
235
+ this.collapsedCache.set(nodeId, entry);
236
+ const keepCount = this.masterDetailEngine?.getConfig()?.keepDetailGridsCount ?? DEFAULT_KEEP_DETAIL_GRIDS_COUNT;
237
+ while (this.collapsedCache.size > keepCount) {
238
+ const oldestKey = this.collapsedCache.keys().next().value;
239
+ if (oldestKey === undefined)
240
+ break;
241
+ const oldest = this.collapsedCache.get(oldestKey);
242
+ this.collapsedCache.delete(oldestKey);
243
+ this.destroyEntry(oldest);
244
+ }
245
+ }
246
+ /**
247
+ * Builds real detail content once the row's data is ready — shows a
248
+ * loading indicator instead while `getDetailData` is still in flight, and
249
+ * retries on the next `sync()` call (triggered by
250
+ * `MasterDetailEngine`'s refresh callback when the fetch resolves).
251
+ */
252
+ tryBuildContent(entry, row) {
253
+ const engine = this.masterDetailEngine;
254
+ const parentNodeId = row.parentNodeId;
255
+ if (engine.isPending(parentNodeId)) {
256
+ if (!entry.containerEl.querySelector('.pg-detail-loading')) {
257
+ entry.containerEl.appendChild(this.buildLoadingIndicator());
258
+ }
259
+ return;
260
+ }
261
+ entry.containerEl.innerHTML = '';
262
+ const config = engine.getConfig();
263
+ if (config?.detailRendererFn) {
264
+ const result = config.detailRendererFn({
265
+ rowData: row.data,
266
+ nodeId: parentNodeId,
267
+ containerEl: entry.containerEl,
268
+ parentApi: this.parentApi,
269
+ });
270
+ if (result && result !== entry.containerEl)
271
+ entry.containerEl.appendChild(result);
272
+ entry.contentBuilt = true;
273
+ return;
274
+ }
275
+ const nestedHost = createDiv('pg-detail-nested-grid-host');
276
+ entry.containerEl.appendChild(nestedHost);
277
+ const nestedOptions = engine.resolveDetailGridOptions(row, this.themeManager.getActiveTheme());
278
+ const instance = this.nestedGridFactory(nestedHost, nestedOptions);
279
+ entry.instance = instance;
280
+ entry.contentBuilt = true;
281
+ if (config?.detailResizable) {
282
+ this.attachResizeHandle(entry, parentNodeId);
283
+ }
284
+ else if (config?.detailAutoHeight !== false) {
285
+ this.observeAutoHeight(entry, parentNodeId, instance);
286
+ }
287
+ this.attachWheelForwarding(entry, instance);
288
+ }
289
+ /**
290
+ * Chains vertical wheel scroll between a nested grid and the parent, the
291
+ * same way a native scrollable element nested in another one behaves:
292
+ * the nested grid scrolls its own content first, and only once it has
293
+ * reached its scroll boundary in the gesture's direction does the
294
+ * remaining scroll pass through to the parent grid's own vertical scroll.
295
+ * This is what makes an unlimited-height parent and a height-constrained
296
+ * detail section (`detailMaxHeight`, `detailAutoHeight: false`) both fully
297
+ * usable by wheel alone. Horizontal gestures are left alone entirely: the
298
+ * nested grid has its own columns and always scrolls them itself.
299
+ *
300
+ * Attached in the *capture* phase on `entry.containerEl` — an ancestor of
301
+ * the nested grid's own wheel listener (added in the bubble phase by
302
+ * `ScrollController.mount`). Capture fires first, so returning early here
303
+ * (nested can still scroll) simply lets that bubble-phase listener handle
304
+ * the event normally; forwarding instead calls `stopPropagation` to keep
305
+ * the event from ever reaching it, so there is no double-scroll either way.
306
+ */
307
+ attachWheelForwarding(entry, instance) {
308
+ const handler = (e) => {
309
+ if (e.ctrlKey)
310
+ return; // let pinch-to-zoom through, matching ScrollController.onWheel's own guard
311
+ if (Math.abs(e.deltaX) > Math.abs(e.deltaY))
312
+ return; // horizontal-dominant: let the nested grid scroll itself
313
+ const nestedCanContinue = e.deltaY < 0 ? instance.api.canScrollUp() : instance.api.canScrollDown();
314
+ if (nestedCanContinue)
315
+ return; // let the nested grid's own scroll handle it
316
+ e.preventDefault();
317
+ e.stopPropagation();
318
+ this.parentScrollForwarder?.(e.deltaY);
319
+ };
320
+ entry.containerEl.addEventListener('wheel', handler, { capture: true, passive: false });
321
+ entry.cleanupFns.push(() => entry.containerEl.removeEventListener('wheel', handler, { capture: true }));
322
+ }
323
+ /**
324
+ * Tracks the nested grid's natural content height by reading the
325
+ * `--pg-content-height` CSS var its own `GridRenderer` already maintains
326
+ * (`grid-renderer.ts` `performRender`), plus header/footer chrome —
327
+ * recomputed whenever the nested grid re-renders. This avoids the
328
+ * `ResizeObserver` feedback loop that would occur from measuring a
329
+ * container whose height is itself derived from this same computation
330
+ * (the nested grid's `.pg-grid` root is `height: 100%` of its host, so
331
+ * observing the host's rendered size would just echo back what we set it to).
332
+ */
333
+ observeAutoHeight(entry, parentNodeId, instance) {
334
+ const wrapperEl = entry.containerEl.querySelector('.pg-grid');
335
+ if (!wrapperEl)
336
+ return;
337
+ const recompute = () => {
338
+ const totalContentPx = parseFloat(wrapperEl.style.getPropertyValue('--pg-content-height')) || 0;
339
+ const headerEl = wrapperEl.querySelector('.pg-grid__header');
340
+ const footerEl = wrapperEl.querySelector('.pg-grid__footer');
341
+ const chrome = (headerEl?.offsetHeight ?? 0) + (footerEl?.offsetHeight ?? 0) + 2; // + border
342
+ this.masterDetailEngine.setDetailHeight(parentNodeId, chrome + totalContentPx + DETAIL_ROW_PADDING_PX * 2);
343
+ };
344
+ const unsubscribe = instance.api.on(GridEventType.ROWS_RENDERED, () => requestAnimationFrame(recompute));
345
+ entry.cleanupFns.push(unsubscribe);
346
+ requestAnimationFrame(recompute);
347
+ }
348
+ /** Bottom-edge drag handle — mutually exclusive with auto-height; the user's explicit size takes priority. */
349
+ attachResizeHandle(entry, parentNodeId) {
350
+ const handle = createDiv('pg-detail-resize-handle');
351
+ handle.setAttribute('data-detail-resize-handle', '');
352
+ entry.containerEl.appendChild(handle);
353
+ let startY = 0;
354
+ let startHeight = 0;
355
+ const onMouseMove = (e) => {
356
+ this.masterDetailEngine.setDetailHeight(parentNodeId, startHeight + (e.clientY - startY));
357
+ };
358
+ const onMouseUp = () => {
359
+ document.removeEventListener('mousemove', onMouseMove);
360
+ document.removeEventListener('mouseup', onMouseUp);
361
+ };
362
+ const onMouseDown = (e) => {
363
+ e.preventDefault();
364
+ startY = e.clientY;
365
+ startHeight = entry.containerEl.getBoundingClientRect().height;
366
+ document.addEventListener('mousemove', onMouseMove);
367
+ document.addEventListener('mouseup', onMouseUp);
368
+ };
369
+ handle.addEventListener('mousedown', onMouseDown);
370
+ entry.cleanupFns.push(() => {
371
+ handle.removeEventListener('mousedown', onMouseDown);
372
+ onMouseUp();
373
+ });
374
+ }
375
+ buildLoadingIndicator() {
376
+ const el = createDiv('pg-detail-loading');
377
+ el.appendChild(this.iconRenderer.render('loading', { size: 20, spin: true }));
378
+ this.iconRenderer.injectSpinKeyframes();
379
+ return el;
380
+ }
381
+ destroyEntry(entry) {
382
+ for (const fn of entry.cleanupFns)
383
+ fn();
384
+ entry.instance?.destroy();
385
+ entry.containerEl.remove();
386
+ }
387
+ }
388
+ //# sourceMappingURL=detail-row-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-row-renderer.js","sourceRoot":"","sources":["../../src/renderer/detail-row-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare function createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attrs?: Record<string, string | number | boolean>, cssText?: string): HTMLElementTagNameMap[K];
2
+ export declare function createDiv(className?: string, cssText?: string): HTMLDivElement;
3
+ export declare function setStyles(el: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
4
+ export declare function clearChildren(el: HTMLElement): void;
5
+ export declare function replaceChildren(el: HTMLElement, ...children: Node[]): void;
6
+ export declare function addClasses(el: HTMLElement, ...classes: string[]): void;
7
+ export declare function removeClasses(el: HTMLElement, ...classes: string[]): void;
8
+ export declare function toggleClass(el: HTMLElement, cls: string, condition: boolean): void;
9
+ export declare function getScrollbarWidth(): number;
10
+ export declare function measureTextWidth(text: string, font: string): number;
11
+ export declare function clamp(value: number, min: number, max: number): number;
12
+ export declare function getElementOffset(el: HTMLElement): {
13
+ top: number;
14
+ left: number;
15
+ };
16
+ export declare function isScrolledIntoView(el: HTMLElement, container: HTMLElement): boolean;
17
+ export declare function scrollIntoViewIfNeeded(el: HTMLElement, container: HTMLElement): void;
18
+ export declare function debounce<T extends (...args: unknown[]) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
19
+ export declare function throttle<T extends (...args: unknown[]) => void>(fn: T, interval: number): (...args: Parameters<T>) => void;
20
+ export declare function raf(fn: () => void): () => void;
21
+ export declare function rafLoop(fn: (dt: number) => void): () => void;
22
+ //# sourceMappingURL=dom-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-utils.d.ts","sourceRoot":"","sources":["../../src/renderer/dom-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,qBAAqB,EACjE,GAAG,EAAE,CAAC,EACN,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,EACrD,OAAO,CAAC,EAAE,MAAM,GACf,qBAAqB,CAAC,CAAC,CAAC,CAW1B;AAED,wBAAgB,SAAS,CACvB,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CAKhB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAErF;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAEnD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAG1E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAItE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAIzE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAMlF;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAS1C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO,CAInF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAQpF;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAC7D,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAC7D,EAAE,EAAE,CAAC,EACL,QAAQ,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASlC;AAED,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG9C;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAU5D"}
@@ -0,0 +1,132 @@
1
+ export function createElement(tag, attrs = {}, cssText) {
2
+ const el = document.createElement(tag);
3
+ for (const [key, val] of Object.entries(attrs)) {
4
+ if (typeof val === 'boolean') {
5
+ if (val)
6
+ el.setAttribute(key, '');
7
+ }
8
+ else {
9
+ el.setAttribute(key, String(val));
10
+ }
11
+ }
12
+ if (cssText)
13
+ el.style.cssText = cssText;
14
+ return el;
15
+ }
16
+ export function createDiv(className, cssText) {
17
+ const el = document.createElement('div');
18
+ if (className)
19
+ el.className = className;
20
+ if (cssText)
21
+ el.style.cssText = cssText;
22
+ return el;
23
+ }
24
+ export function setStyles(el, styles) {
25
+ Object.assign(el.style, styles);
26
+ }
27
+ export function clearChildren(el) {
28
+ while (el.firstChild)
29
+ el.removeChild(el.firstChild);
30
+ }
31
+ export function replaceChildren(el, ...children) {
32
+ clearChildren(el);
33
+ for (const child of children)
34
+ el.appendChild(child);
35
+ }
36
+ export function addClasses(el, ...classes) {
37
+ for (const cls of classes) {
38
+ if (cls)
39
+ el.classList.add(cls);
40
+ }
41
+ }
42
+ export function removeClasses(el, ...classes) {
43
+ for (const cls of classes) {
44
+ if (cls)
45
+ el.classList.remove(cls);
46
+ }
47
+ }
48
+ export function toggleClass(el, cls, condition) {
49
+ if (condition) {
50
+ el.classList.add(cls);
51
+ }
52
+ else {
53
+ el.classList.remove(cls);
54
+ }
55
+ }
56
+ export function getScrollbarWidth() {
57
+ const outer = document.createElement('div');
58
+ outer.style.cssText = 'visibility:hidden;overflow:scroll;position:absolute;top:-9999px;';
59
+ document.body.appendChild(outer);
60
+ const inner = document.createElement('div');
61
+ outer.appendChild(inner);
62
+ const width = outer.offsetWidth - inner.offsetWidth;
63
+ document.body.removeChild(outer);
64
+ return width;
65
+ }
66
+ export function measureTextWidth(text, font) {
67
+ const canvas = document.createElement('canvas');
68
+ const ctx = canvas.getContext('2d');
69
+ if (!ctx)
70
+ return text.length * 8;
71
+ ctx.font = font;
72
+ return ctx.measureText(text).width;
73
+ }
74
+ export function clamp(value, min, max) {
75
+ return Math.min(max, Math.max(min, value));
76
+ }
77
+ export function getElementOffset(el) {
78
+ const rect = el.getBoundingClientRect();
79
+ return {
80
+ top: rect.top + window.scrollY,
81
+ left: rect.left + window.scrollX,
82
+ };
83
+ }
84
+ export function isScrolledIntoView(el, container) {
85
+ const elRect = el.getBoundingClientRect();
86
+ const containerRect = container.getBoundingClientRect();
87
+ return elRect.top >= containerRect.top && elRect.bottom <= containerRect.bottom;
88
+ }
89
+ export function scrollIntoViewIfNeeded(el, container) {
90
+ const elRect = el.getBoundingClientRect();
91
+ const containerRect = container.getBoundingClientRect();
92
+ if (elRect.top < containerRect.top) {
93
+ container.scrollTop -= containerRect.top - elRect.top;
94
+ }
95
+ else if (elRect.bottom > containerRect.bottom) {
96
+ container.scrollTop += elRect.bottom - containerRect.bottom;
97
+ }
98
+ }
99
+ export function debounce(fn, delay) {
100
+ let timer = null;
101
+ return (...args) => {
102
+ if (timer)
103
+ clearTimeout(timer);
104
+ timer = setTimeout(() => fn(...args), delay);
105
+ };
106
+ }
107
+ export function throttle(fn, interval) {
108
+ let lastCall = 0;
109
+ return (...args) => {
110
+ const now = performance.now();
111
+ if (now - lastCall >= interval) {
112
+ lastCall = now;
113
+ fn(...args);
114
+ }
115
+ };
116
+ }
117
+ export function raf(fn) {
118
+ let id = requestAnimationFrame(fn);
119
+ return () => cancelAnimationFrame(id);
120
+ }
121
+ export function rafLoop(fn) {
122
+ let last = 0;
123
+ let id;
124
+ const tick = (ts) => {
125
+ fn(ts - last);
126
+ last = ts;
127
+ id = requestAnimationFrame(tick);
128
+ };
129
+ id = requestAnimationFrame(tick);
130
+ return () => cancelAnimationFrame(id);
131
+ }
132
+ //# sourceMappingURL=dom-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-utils.js","sourceRoot":"","sources":["../../src/renderer/dom-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { EventBus } from '../event-bus/event-bus';
2
+ import type { IconRenderer } from '../icons/icon-renderer';
3
+ import type { PaginationEngine } from '../engines/pagination/pagination-engine';
4
+ export interface FooterRendererOptions {
5
+ showPagination?: boolean;
6
+ showRowCount?: boolean;
7
+ footerHeight?: number;
8
+ }
9
+ export declare class FooterRenderer {
10
+ private eventBus;
11
+ private iconRenderer;
12
+ private paginationEngine;
13
+ private footerEl;
14
+ private pageInfoEl;
15
+ private pageInputEl;
16
+ constructor(eventBus: EventBus, iconRenderer: IconRenderer, paginationEngine: PaginationEngine);
17
+ render(containerEl: HTMLElement, options?: FooterRendererOptions): HTMLElement;
18
+ updatePaginationState(): void;
19
+ destroy(): void;
20
+ private buildPaginationControls;
21
+ private buildNavButton;
22
+ private buildPageSizeSelect;
23
+ private getConfig;
24
+ }
25
+ //# sourceMappingURL=footer-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/footer-renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IAP1B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAAiC;gBAG1C,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB;IAG5C,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,qBAA0B,GAAG,WAAW;IAoBlF,qBAAqB,IAAI,IAAI;IA+B7B,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,SAAS;CAUlB"}