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,96 @@
1
+ import { GridEventType } from '../types/event.types';
2
+ import { ChartDataTransformer } from './chart-data-transformer';
3
+ import { ChartRenderer } from './chart-renderer';
4
+ import { createDiv } from '../renderer/dom-utils';
5
+ export class ChartEngine {
6
+ constructor(eventBus) {
7
+ this.eventBus = eventBus;
8
+ this.charts = new Map();
9
+ this.transformer = new ChartDataTransformer();
10
+ }
11
+ createChart(parentEl, config, rows, columns) {
12
+ const existing = this.charts.get(config.chartId);
13
+ if (existing) {
14
+ this.destroyChart(config.chartId);
15
+ }
16
+ const containerEl = createDiv('pg-chart');
17
+ containerEl.setAttribute('data-chart-id', config.chartId);
18
+ if (config.title) {
19
+ const titleEl = createDiv('pg-chart__title');
20
+ titleEl.textContent = config.title;
21
+ containerEl.appendChild(titleEl);
22
+ }
23
+ const canvas = document.createElement('canvas');
24
+ canvas.className = 'pg-chart__canvas';
25
+ containerEl.appendChild(canvas);
26
+ parentEl.appendChild(containerEl);
27
+ const chartRenderer = new ChartRenderer(canvas);
28
+ const activeChart = {
29
+ config,
30
+ containerEl,
31
+ canvas,
32
+ renderer: chartRenderer,
33
+ };
34
+ this.charts.set(config.chartId, activeChart);
35
+ this.renderChart(config.chartId, rows, columns);
36
+ this.eventBus.emit(GridEventType.CHART_CREATED, { chartId: config.chartId });
37
+ return config.chartId;
38
+ }
39
+ renderChart(chartId, rows, columns) {
40
+ const chart = this.charts.get(chartId);
41
+ if (!chart)
42
+ return;
43
+ const { config } = chart;
44
+ let chartData;
45
+ if (config.labelColId && config.valueColIds) {
46
+ chartData = this.transformer.fromSelectedColumns(rows, columns, config.labelColId, config.valueColIds);
47
+ }
48
+ else {
49
+ const firstLabelCol = columns.find((c) => c.type === 'string' || c.type === 'dropdown');
50
+ const numberCols = columns.filter((c) => c.type === 'number' || c.type === 'currency');
51
+ if (!firstLabelCol || numberCols.length === 0)
52
+ return;
53
+ chartData = this.transformer.transform(rows, {
54
+ labelField: firstLabelCol.field,
55
+ valueFields: numberCols.slice(0, 3).map((c) => c.field),
56
+ ...config.transformOptions,
57
+ });
58
+ }
59
+ chart.renderer.render(chartData, {
60
+ type: config.type,
61
+ width: config.width ?? 600,
62
+ height: config.height ?? 320,
63
+ ...config.renderOptions,
64
+ });
65
+ }
66
+ updateChartData(chartId, rows, columns) {
67
+ this.renderChart(chartId, rows, columns);
68
+ }
69
+ destroyChart(chartId) {
70
+ const chart = this.charts.get(chartId);
71
+ if (!chart)
72
+ return;
73
+ chart.renderer.destroy();
74
+ chart.containerEl.remove();
75
+ this.charts.delete(chartId);
76
+ this.eventBus.emit(GridEventType.CHART_DESTROYED, { chartId });
77
+ }
78
+ destroyAll() {
79
+ for (const chartId of this.charts.keys()) {
80
+ this.destroyChart(chartId);
81
+ }
82
+ }
83
+ getChart(chartId) {
84
+ return this.charts.get(chartId);
85
+ }
86
+ getAllChartIds() {
87
+ return Array.from(this.charts.keys());
88
+ }
89
+ exportChartAsImage(chartId, format = 'png') {
90
+ const chart = this.charts.get(chartId);
91
+ if (!chart)
92
+ return null;
93
+ return chart.canvas.toDataURL(`image/${format}`, 0.95);
94
+ }
95
+ }
96
+ //# sourceMappingURL=chart-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-engine.js","sourceRoot":"","sources":["../../src/chart/chart-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { ChartData } from './chart-data-transformer';
2
+ export type ChartPanelType = 'column-grouped' | 'column-stacked' | 'column-100stacked' | 'bar-grouped' | 'bar-stacked' | 'bar-100stacked' | 'pie' | 'doughnut' | 'line' | 'area' | 'scatter' | 'polar' | 'funnel';
3
+ export declare class ChartPanel {
4
+ private containerEl;
5
+ private backdropEl;
6
+ private cardEl;
7
+ private canvasEl;
8
+ private dotsMenuEl;
9
+ private dotsBtnEl;
10
+ private fullscreenBtnEl;
11
+ private legendEl;
12
+ private renderer;
13
+ private resizeObserver;
14
+ private isFullscreen;
15
+ private currentData;
16
+ private currentType;
17
+ private currentTitle;
18
+ /** Dataset indices the user has toggled off via the legend. */
19
+ private hiddenSeries;
20
+ /** Current top-left position of the card within the backdrop. */
21
+ private panelX;
22
+ private panelY;
23
+ constructor(containerEl: HTMLElement);
24
+ open(type: ChartPanelType, title: string, data: ChartData | null): void;
25
+ close(): void;
26
+ private buildDom;
27
+ /**
28
+ * Position the card at the center of the backdrop.
29
+ * Called once after building the DOM and on fullscreen exit.
30
+ */
31
+ private centerPanel;
32
+ private applyPosition;
33
+ /**
34
+ * Wire drag-to-move onto the header bar.
35
+ * Clamped strictly within the backdrop bounds so the panel never escapes the grid.
36
+ */
37
+ private attachDrag;
38
+ private closeDotsMenu;
39
+ private toggleFullscreen;
40
+ private renderChart;
41
+ /**
42
+ * Populates the HTML legend bar with one clickable button per dataset.
43
+ * Each button acts as a toggle: clicking animates the corresponding bars
44
+ * in or out and dims the legend entry to signal its state.
45
+ */
46
+ private buildLegend;
47
+ /**
48
+ * Toggles a dataset's visibility with a smooth bar-height animation.
49
+ * The legend item is dimmed while its series is hidden.
50
+ */
51
+ private handleLegendToggle;
52
+ private downloadChart;
53
+ }
54
+ //# sourceMappingURL=chart-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-panel.d.ts","sourceRoot":"","sources":["../../src/chart/chart-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,GACzD,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAChD,KAAK,GAAG,UAAU,GAClB,MAAM,GAAG,MAAM,GACf,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AASnC,qBAAa,UAAU;IAqBT,OAAO,CAAC,WAAW;IApB/B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAM;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,YAAY,CAAqB;IAEzC,iEAAiE;IACjE,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;gBAEC,WAAW,EAAE,WAAW;IAE5C,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAcvE,KAAK,IAAI,IAAI;IAgBb,OAAO,CAAC,QAAQ;IA2HhB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;IAMrB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,WAAW;IAwBnB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,aAAa;CA8BtB"}
@@ -0,0 +1,350 @@
1
+ import { ChartRenderer } from './chart-renderer';
2
+ const ICON_EMPTY_CHART = `<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/><line x1="7" y1="15" x2="7" y2="17"/><line x1="12" y1="12" x2="12" y2="17"/><line x1="17" y1="14" x2="17" y2="17"/></svg>`;
3
+ const ICON_CLOSE = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>`;
4
+ const ICON_FULLSCREEN = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/></svg>`;
5
+ const ICON_FULLSCREEN_EXIT = `<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"/></svg>`;
6
+ const ICON_DOTS = `<svg width="4" height="16" viewBox="0 0 4 16" fill="currentColor"><circle cx="2" cy="2" r="1.5"/><circle cx="2" cy="8" r="1.5"/><circle cx="2" cy="14" r="1.5"/></svg>`;
7
+ const ICON_DOWNLOAD = `<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>`;
8
+ export class ChartPanel {
9
+ constructor(containerEl) {
10
+ this.containerEl = containerEl;
11
+ this.backdropEl = null;
12
+ this.cardEl = null;
13
+ this.canvasEl = null;
14
+ this.dotsMenuEl = null;
15
+ this.dotsBtnEl = null;
16
+ this.fullscreenBtnEl = null;
17
+ this.legendEl = null;
18
+ this.renderer = null;
19
+ this.resizeObserver = null;
20
+ this.isFullscreen = false;
21
+ this.currentData = null;
22
+ this.currentType = 'column-grouped';
23
+ this.currentTitle = '';
24
+ /** Dataset indices the user has toggled off via the legend. */
25
+ this.hiddenSeries = new Set();
26
+ /** Current top-left position of the card within the backdrop. */
27
+ this.panelX = 0;
28
+ this.panelY = 0;
29
+ }
30
+ open(type, title, data) {
31
+ this.close();
32
+ this.currentType = type;
33
+ this.currentTitle = title;
34
+ this.currentData = data;
35
+ this.isFullscreen = false;
36
+ this.hiddenSeries = new Set();
37
+ this.buildDom(title, data === null);
38
+ if (data !== null) {
39
+ if (data.datasets.length > 1)
40
+ this.buildLegend(data);
41
+ this.renderChart();
42
+ }
43
+ }
44
+ close() {
45
+ this.resizeObserver?.disconnect();
46
+ this.resizeObserver = null;
47
+ this.renderer?.destroy();
48
+ this.renderer = null;
49
+ this.backdropEl?.remove();
50
+ this.backdropEl = null;
51
+ this.cardEl = null;
52
+ this.canvasEl = null;
53
+ this.dotsMenuEl = null;
54
+ this.dotsBtnEl = null;
55
+ this.fullscreenBtnEl = null;
56
+ this.legendEl = null;
57
+ this.currentData = null;
58
+ }
59
+ buildDom(title, isEmpty) {
60
+ const backdrop = document.createElement('div');
61
+ backdrop.className = 'pg-chart-panel-backdrop pg-chart-panel-backdrop--open';
62
+ backdrop.addEventListener('mousedown', (e) => {
63
+ if (e.target === backdrop)
64
+ this.close();
65
+ });
66
+ const card = document.createElement('div');
67
+ card.className = 'pg-chart-panel';
68
+ backdrop.appendChild(card);
69
+ // Header
70
+ const header = document.createElement('div');
71
+ header.className = 'pg-chart-panel__header';
72
+ const titleEl = document.createElement('div');
73
+ titleEl.className = 'pg-chart-panel__title';
74
+ titleEl.textContent = isEmpty ? 'Chart Range' : title;
75
+ const actions = document.createElement('div');
76
+ actions.className = 'pg-chart-panel__actions';
77
+ const fullscreenBtn = document.createElement('button');
78
+ fullscreenBtn.className = 'pg-chart-panel__action-btn';
79
+ fullscreenBtn.title = 'Toggle fullscreen';
80
+ fullscreenBtn.innerHTML = ICON_FULLSCREEN;
81
+ fullscreenBtn.addEventListener('click', () => this.toggleFullscreen());
82
+ const closeBtn = document.createElement('button');
83
+ closeBtn.className = 'pg-chart-panel__action-btn';
84
+ closeBtn.title = 'Close';
85
+ closeBtn.innerHTML = ICON_CLOSE;
86
+ closeBtn.addEventListener('click', () => this.close());
87
+ actions.appendChild(fullscreenBtn);
88
+ actions.appendChild(closeBtn);
89
+ header.appendChild(titleEl);
90
+ header.appendChild(actions);
91
+ card.appendChild(header);
92
+ // Body
93
+ const body = document.createElement('div');
94
+ body.className = 'pg-chart-panel__body';
95
+ if (isEmpty) {
96
+ const emptyEl = document.createElement('div');
97
+ emptyEl.className = 'pg-chart-panel__empty';
98
+ emptyEl.innerHTML = `
99
+ <span class="pg-chart-panel__empty-icon">${ICON_EMPTY_CHART}</span>
100
+ <span class="pg-chart-panel__empty-text">No chart data available</span>
101
+ <span class="pg-chart-panel__empty-sub">Select cells that include Number, Currency, or Percentage columns</span>
102
+ `;
103
+ body.appendChild(emptyEl);
104
+ }
105
+ else {
106
+ const canvas = document.createElement('canvas');
107
+ canvas.className = 'pg-chart-panel__canvas';
108
+ body.appendChild(canvas);
109
+ const dotsBtn = document.createElement('button');
110
+ dotsBtn.className = 'pg-chart-panel__dots-btn';
111
+ dotsBtn.title = 'Download';
112
+ dotsBtn.innerHTML = ICON_DOTS;
113
+ const dotsMenu = document.createElement('div');
114
+ dotsMenu.className = 'pg-chart-panel__dots-menu';
115
+ const pngItem = document.createElement('button');
116
+ pngItem.className = 'pg-chart-panel__dots-item';
117
+ pngItem.innerHTML = `${ICON_DOWNLOAD} Download PNG`;
118
+ pngItem.addEventListener('click', () => { this.downloadChart('png'); this.closeDotsMenu(); });
119
+ const jpegItem = document.createElement('button');
120
+ jpegItem.className = 'pg-chart-panel__dots-item';
121
+ jpegItem.innerHTML = `${ICON_DOWNLOAD} Download JPEG`;
122
+ jpegItem.addEventListener('click', () => { this.downloadChart('jpeg'); this.closeDotsMenu(); });
123
+ dotsMenu.appendChild(pngItem);
124
+ dotsMenu.appendChild(jpegItem);
125
+ dotsBtn.addEventListener('click', (e) => {
126
+ e.stopPropagation();
127
+ const isOpen = dotsMenu.classList.contains('pg-chart-panel__dots-menu--open');
128
+ if (isOpen) {
129
+ this.closeDotsMenu();
130
+ }
131
+ else {
132
+ dotsMenu.classList.add('pg-chart-panel__dots-menu--open');
133
+ dotsBtn.classList.add('pg-chart-panel__dots-btn--active');
134
+ setTimeout(() => {
135
+ document.addEventListener('mousedown', () => this.closeDotsMenu(), { once: true });
136
+ });
137
+ }
138
+ });
139
+ body.appendChild(dotsBtn);
140
+ body.appendChild(dotsMenu);
141
+ this.canvasEl = canvas;
142
+ this.dotsMenuEl = dotsMenu;
143
+ this.dotsBtnEl = dotsBtn;
144
+ this.resizeObserver = new ResizeObserver(() => { this.renderChart(); });
145
+ this.resizeObserver.observe(body);
146
+ }
147
+ card.appendChild(body);
148
+ // Legend sits below the body in the card's flex column; height is 0 when
149
+ // empty (single-series chart) so it never wastes space.
150
+ const legend = document.createElement('div');
151
+ legend.className = 'pg-chart-panel__legend';
152
+ card.appendChild(legend);
153
+ this.legendEl = legend;
154
+ this.containerEl.appendChild(backdrop);
155
+ this.backdropEl = backdrop;
156
+ this.cardEl = card;
157
+ this.fullscreenBtnEl = fullscreenBtn;
158
+ this.centerPanel();
159
+ this.attachDrag(header);
160
+ }
161
+ /**
162
+ * Position the card at the center of the backdrop.
163
+ * Called once after building the DOM and on fullscreen exit.
164
+ */
165
+ centerPanel() {
166
+ if (!this.backdropEl || !this.cardEl)
167
+ return;
168
+ const bw = this.backdropEl.offsetWidth;
169
+ const bh = this.backdropEl.offsetHeight;
170
+ const cw = this.cardEl.offsetWidth;
171
+ const ch = this.cardEl.offsetHeight;
172
+ this.panelX = Math.max(0, (bw - cw) / 2);
173
+ this.panelY = Math.max(0, (bh - ch) / 2);
174
+ this.applyPosition();
175
+ }
176
+ applyPosition() {
177
+ if (!this.cardEl)
178
+ return;
179
+ this.cardEl.style.left = `${this.panelX}px`;
180
+ this.cardEl.style.top = `${this.panelY}px`;
181
+ }
182
+ /**
183
+ * Wire drag-to-move onto the header bar.
184
+ * Clamped strictly within the backdrop bounds so the panel never escapes the grid.
185
+ */
186
+ attachDrag(header) {
187
+ header.addEventListener('mousedown', (e) => {
188
+ if (this.isFullscreen)
189
+ return;
190
+ if (e.target.closest('button'))
191
+ return;
192
+ e.preventDefault();
193
+ const startMX = e.clientX;
194
+ const startMY = e.clientY;
195
+ const startPX = this.panelX;
196
+ const startPY = this.panelY;
197
+ header.classList.add('pg-chart-panel__header--dragging');
198
+ this.cardEl?.classList.add('pg-chart-panel--dragging');
199
+ const onMove = (mv) => {
200
+ if (!this.backdropEl || !this.cardEl)
201
+ return;
202
+ const maxX = this.backdropEl.offsetWidth - this.cardEl.offsetWidth;
203
+ const maxY = this.backdropEl.offsetHeight - this.cardEl.offsetHeight;
204
+ this.panelX = Math.max(0, Math.min(startPX + mv.clientX - startMX, maxX));
205
+ this.panelY = Math.max(0, Math.min(startPY + mv.clientY - startMY, maxY));
206
+ this.applyPosition();
207
+ };
208
+ const onUp = () => {
209
+ header.classList.remove('pg-chart-panel__header--dragging');
210
+ this.cardEl?.classList.remove('pg-chart-panel--dragging');
211
+ document.removeEventListener('mousemove', onMove);
212
+ document.removeEventListener('mouseup', onUp);
213
+ };
214
+ document.addEventListener('mousemove', onMove);
215
+ document.addEventListener('mouseup', onUp);
216
+ });
217
+ }
218
+ closeDotsMenu() {
219
+ this.dotsMenuEl?.classList.remove('pg-chart-panel__dots-menu--open');
220
+ this.dotsBtnEl?.classList.remove('pg-chart-panel__dots-btn--active');
221
+ }
222
+ toggleFullscreen() {
223
+ if (!this.cardEl || !this.fullscreenBtnEl)
224
+ return;
225
+ this.isFullscreen = !this.isFullscreen;
226
+ this.cardEl.classList.toggle('pg-chart-panel--fullscreen', this.isFullscreen);
227
+ this.fullscreenBtnEl.innerHTML = this.isFullscreen ? ICON_FULLSCREEN_EXIT : ICON_FULLSCREEN;
228
+ this.fullscreenBtnEl.title = this.isFullscreen ? 'Exit fullscreen' : 'Toggle fullscreen';
229
+ if (this.isFullscreen) {
230
+ // Inset 16px from each edge to match calc(100% - 32px) dimensions
231
+ this.panelX = 0;
232
+ this.panelY = 0;
233
+ this.applyPosition();
234
+ }
235
+ else {
236
+ // Re-centre after layout recalculates the shrunk card dimensions
237
+ setTimeout(() => { this.centerPanel(); this.renderChart(); }, 50);
238
+ return;
239
+ }
240
+ setTimeout(() => this.renderChart(), 50);
241
+ }
242
+ renderChart() {
243
+ if (!this.canvasEl || !this.currentData || !this.cardEl)
244
+ return;
245
+ const body = this.canvasEl.parentElement;
246
+ if (!body)
247
+ return;
248
+ const w = body.clientWidth - 16;
249
+ const h = body.clientHeight - 16;
250
+ if (w <= 0 || h <= 0)
251
+ return;
252
+ if (!this.renderer) {
253
+ this.renderer = new ChartRenderer(this.canvasEl);
254
+ }
255
+ this.renderer.render(this.currentData, {
256
+ type: this.currentType,
257
+ width: w,
258
+ height: h,
259
+ showLegend: false,
260
+ showGrid: true,
261
+ animationDuration: 400,
262
+ });
263
+ }
264
+ /**
265
+ * Populates the HTML legend bar with one clickable button per dataset.
266
+ * Each button acts as a toggle: clicking animates the corresponding bars
267
+ * in or out and dims the legend entry to signal its state.
268
+ */
269
+ buildLegend(data) {
270
+ if (!this.legendEl)
271
+ return;
272
+ this.legendEl.innerHTML = '';
273
+ data.datasets.forEach((ds, i) => {
274
+ const item = document.createElement('button');
275
+ item.type = 'button';
276
+ item.className = 'pg-chart-panel__legend-item';
277
+ const swatch = document.createElement('span');
278
+ swatch.className = 'pg-chart-panel__legend-swatch';
279
+ swatch.style.background = ds.color ?? '#008FFB';
280
+ const label = document.createElement('span');
281
+ label.className = 'pg-chart-panel__legend-label';
282
+ label.textContent = ds.label;
283
+ item.appendChild(swatch);
284
+ item.appendChild(label);
285
+ item.addEventListener('click', () => this.handleLegendToggle(i));
286
+ this.legendEl.appendChild(item);
287
+ });
288
+ }
289
+ /**
290
+ * Toggles a dataset's visibility with a smooth bar-height animation.
291
+ * The legend item is dimmed while its series is hidden.
292
+ */
293
+ handleLegendToggle(index) {
294
+ if (!this.renderer || !this.currentData || !this.canvasEl)
295
+ return;
296
+ const body = this.canvasEl.parentElement;
297
+ if (!body)
298
+ return;
299
+ const w = body.clientWidth - 16;
300
+ const h = body.clientHeight - 16;
301
+ if (w <= 0 || h <= 0)
302
+ return;
303
+ const nowVisible = this.hiddenSeries.has(index); // toggling TO visible if currently hidden
304
+ if (nowVisible) {
305
+ this.hiddenSeries.delete(index);
306
+ }
307
+ else {
308
+ this.hiddenSeries.add(index);
309
+ }
310
+ const item = this.legendEl?.children[index];
311
+ item?.classList.toggle('pg-chart-panel__legend-item--hidden', !nowVisible);
312
+ this.renderer.toggleSeries(index, nowVisible, this.currentData, {
313
+ type: this.currentType,
314
+ width: w,
315
+ height: h,
316
+ showLegend: false,
317
+ showGrid: true,
318
+ animationDuration: 400,
319
+ });
320
+ }
321
+ downloadChart(format) {
322
+ if (!this.canvasEl)
323
+ return;
324
+ let sourceCanvas = this.canvasEl;
325
+ // JPEG has no alpha channel — composite onto a white background so
326
+ // transparent areas don't render as solid black.
327
+ if (format === 'jpeg') {
328
+ const offscreen = document.createElement('canvas');
329
+ offscreen.width = this.canvasEl.width;
330
+ offscreen.height = this.canvasEl.height;
331
+ const ctx = offscreen.getContext('2d');
332
+ if (ctx) {
333
+ ctx.fillStyle = '#ffffff';
334
+ ctx.fillRect(0, 0, offscreen.width, offscreen.height);
335
+ ctx.drawImage(this.canvasEl, 0, 0);
336
+ sourceCanvas = offscreen;
337
+ }
338
+ }
339
+ const mimeType = format === 'png' ? 'image/png' : 'image/jpeg';
340
+ const dataUrl = sourceCanvas.toDataURL(mimeType, 0.95);
341
+ const a = document.createElement('a');
342
+ a.href = dataUrl;
343
+ a.download = `${this.currentTitle || 'chart'}.${format}`;
344
+ // Must be in the DOM for the click to trigger a download in all browsers.
345
+ document.body.appendChild(a);
346
+ a.click();
347
+ document.body.removeChild(a);
348
+ }
349
+ }
350
+ //# sourceMappingURL=chart-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-panel.js","sourceRoot":"","sources":["../../src/chart/chart-panel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import type { ChartData } from './chart-data-transformer';
2
+ import type { ChartPanelType } from './chart-panel';
3
+ export interface ChartRenderOptions {
4
+ type: ChartPanelType | 'bar' | 'line' | 'pie' | 'doughnut';
5
+ width?: number;
6
+ height?: number;
7
+ padding?: number;
8
+ showLegend?: boolean;
9
+ showGrid?: boolean;
10
+ showValues?: boolean;
11
+ barWidth?: number;
12
+ lineWidth?: number;
13
+ smooth?: boolean;
14
+ fontFamily?: string;
15
+ fontSize?: number;
16
+ textColor?: string;
17
+ gridColor?: string;
18
+ backgroundColor?: string;
19
+ animationDuration?: number;
20
+ }
21
+ export declare class ChartRenderer {
22
+ private canvas;
23
+ private ctx;
24
+ private animProgress;
25
+ private rafId;
26
+ private hoverX;
27
+ private hoverY;
28
+ private hoverRafId;
29
+ /** Smoothly lerped cursor-Y used to animate the tooltip like ApexCharts. */
30
+ private tooltipSmoothedY;
31
+ private lastData;
32
+ private lastOptions;
33
+ /** Per-dataset scale multiplier used by toggle animations (0 = hidden, 1 = full). */
34
+ private seriesScales;
35
+ /** Active RAF IDs for per-series toggle animations, keyed by dataset index. */
36
+ private seriesToggleRafs;
37
+ constructor(canvas: HTMLCanvasElement);
38
+ render(data: ChartData, opts?: ChartRenderOptions): void;
39
+ destroy(): void;
40
+ /**
41
+ * Animate a single dataset in or out without re-running the full chart animation.
42
+ * Each dataset's bar heights are multiplied by a per-series scale factor that is
43
+ * smoothly interpolated from its current value to 0 (hide) or 1 (show).
44
+ *
45
+ * @param index - Index in `data.datasets` to animate.
46
+ * @param toVisible - `true` = grow bars into view; `false` = shrink bars to zero.
47
+ * @param data - Full chart data including the toggled series.
48
+ * @param opts - Render options matching the current chart configuration.
49
+ */
50
+ toggleSeries(index: number, toVisible: boolean, data: ChartData, opts?: ChartRenderOptions): void;
51
+ private attachEvents;
52
+ private scheduleHoverRedraw;
53
+ /**
54
+ * Eases `tooltipSmoothedY` toward the raw cursor Y (`hoverY`) by a lerp
55
+ * factor that produces an ApexCharts-style lag behind fast movement.
56
+ *
57
+ * @returns `true` when another frame is still required to complete the easing.
58
+ */
59
+ private stepTooltipLerp;
60
+ private drawHover;
61
+ private drawCartesianHover;
62
+ private drawBarHover;
63
+ private drawTooltip;
64
+ private animate;
65
+ private getPlotArea;
66
+ private draw;
67
+ private drawColumnGrouped;
68
+ private drawColumnStacked;
69
+ private drawColumn100Stacked;
70
+ private drawBarGrouped;
71
+ private drawBarStacked;
72
+ private drawBar100Stacked;
73
+ private drawLine;
74
+ private drawArea;
75
+ private drawPie;
76
+ private drawScatter;
77
+ private drawPolar;
78
+ private drawFunnel;
79
+ private drawGridLines;
80
+ /**
81
+ * Draws relative (0–100 %) Y-axis gridlines for multi-series charts where each
82
+ * dataset is normalised to its own maximum, making the shared axis unitless.
83
+ */
84
+ private drawGridLinesRelative;
85
+ private drawLegend;
86
+ private drawAxes;
87
+ private niceMax;
88
+ private getLabelStep;
89
+ private easeOutQuart;
90
+ private truncate;
91
+ private formatNum;
92
+ }
93
+ //# sourceMappingURL=chart-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-renderer.d.ts","sourceRoot":"","sources":["../../src/chart/chart-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAuB;IAGpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAAuB;IACzC,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,WAAW,CAA6C;IAEhE,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAAgB;IACpC,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,MAAM,EAAE,iBAAiB;IAQrC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,kBAA+C,GAAG,IAAI;IAwBpF,OAAO,IAAI,IAAI;IAaf;;;;;;;;;OASG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAE,kBAA+C,GAAG,IAAI;IAkC7H,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,mBAAmB;IAkB3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,kBAAkB;IA6E1B,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,WAAW;IAuHnB,OAAO,CAAC,OAAO;IAkBf,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,IAAI;IAmCZ,OAAO,CAAC,iBAAiB;IAoEzB,OAAO,CAAC,iBAAiB;IAoDzB,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,cAAc;IAwEtB,OAAO,CAAC,iBAAiB;IAmEzB,OAAO,CAAC,QAAQ;IAmDhB,OAAO,CAAC,QAAQ;IAqDhB,OAAO,CAAC,OAAO;IAwDf,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,SAAS;IA0DjB,OAAO,CAAC,UAAU;IAyClB,OAAO,CAAC,aAAa;IAmBrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CAMlB"}