drizzle-cube 0.4.28 → 0.4.30

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 (382) hide show
  1. package/dist/adapters/anthropic-BIva8k1r.cjs +1 -0
  2. package/dist/adapters/anthropic-B_rg0BhK.js +140 -0
  3. package/dist/adapters/dist-Boc63-1q.cjs +2 -0
  4. package/dist/adapters/dist-De5fzUEM.js +581 -0
  5. package/dist/adapters/express/index.cjs +2 -10
  6. package/dist/adapters/express/index.js +232 -342
  7. package/dist/adapters/fastify/index.cjs +2 -10
  8. package/dist/adapters/fastify/index.js +275 -424
  9. package/dist/adapters/google-CT4kgmBf.js +154 -0
  10. package/dist/adapters/google-Dgo9-Kb5.cjs +2 -0
  11. package/dist/adapters/handler-B8vuFQYP.cjs +25 -0
  12. package/dist/adapters/handler-D-2-6uLM.js +2951 -0
  13. package/dist/adapters/hono/index.cjs +2 -10
  14. package/dist/adapters/hono/index.js +307 -402
  15. package/dist/adapters/mcp-prompts-BAutSQYA.js +344 -0
  16. package/dist/adapters/mcp-prompts-DsAkafVn.cjs +5 -0
  17. package/dist/adapters/mcp-transport-CuugoG8t.js +7821 -0
  18. package/dist/adapters/mcp-transport-Dpp6hdZe.cjs +253 -0
  19. package/dist/adapters/nextjs/index.cjs +1 -9
  20. package/dist/adapters/nextjs/index.js +377 -600
  21. package/dist/adapters/openai-CjBvA6mK.js +4114 -0
  22. package/dist/adapters/openai-DhLE0A9Z.cjs +1 -0
  23. package/dist/adapters/openai-Zjw4Zo4R.js +153 -0
  24. package/dist/adapters/openai-eJBw3LfQ.cjs +16 -0
  25. package/dist/adapters/types.cjs +0 -1
  26. package/dist/adapters/types.js +0 -1
  27. package/dist/adapters/utils-ChhNGUOF.js +5396 -0
  28. package/dist/adapters/utils-CwJplXR5.cjs +15 -0
  29. package/dist/adapters/utils.cjs +1 -19
  30. package/dist/adapters/utils.js +2 -21333
  31. package/dist/client/charts.js +15 -186
  32. package/dist/client/chunks/DashboardEditModal-C076pscL.js +6678 -0
  33. package/dist/client/chunks/DashboardEditModal-C076pscL.js.map +1 -0
  34. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js +2631 -0
  35. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js.map +1 -0
  36. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js +270 -0
  37. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js.map +1 -0
  38. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js +56 -0
  39. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js.map +1 -0
  40. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js +193 -0
  41. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js.map +1 -0
  42. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js +25 -0
  43. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js.map +1 -0
  44. package/dist/client/chunks/analysis-builder-DF0XntqC.js +6111 -0
  45. package/dist/client/chunks/analysis-builder-DF0XntqC.js.map +1 -0
  46. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js +3114 -0
  47. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js.map +1 -0
  48. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js +803 -0
  49. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js.map +1 -0
  50. package/dist/client/chunks/chart-area-CRJc3KOu.js +449 -0
  51. package/dist/client/chunks/chart-area-CRJc3KOu.js.map +1 -0
  52. package/dist/client/chunks/chart-bar-DD2PjJ5n.js +270 -0
  53. package/dist/client/chunks/chart-bar-DD2PjJ5n.js.map +1 -0
  54. package/dist/client/chunks/chart-box-plot-BcqleldJ.js +377 -0
  55. package/dist/client/chunks/chart-box-plot-BcqleldJ.js.map +1 -0
  56. package/dist/client/chunks/chart-bubble-BmQkVk4K.js +273 -0
  57. package/dist/client/chunks/chart-bubble-BmQkVk4K.js.map +1 -0
  58. package/dist/client/chunks/chart-candlestick-C3Rep469.js +306 -0
  59. package/dist/client/chunks/chart-candlestick-C3Rep469.js.map +1 -0
  60. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js +51 -0
  61. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js.map +1 -0
  62. package/dist/client/chunks/chart-config-area-D_ZufYzg.js +93 -0
  63. package/dist/client/chunks/chart-config-area-D_ZufYzg.js.map +1 -0
  64. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js +87 -0
  65. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js.map +1 -0
  66. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js +35 -0
  67. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js.map +1 -0
  68. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js +82 -0
  69. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js.map +1 -0
  70. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js +72 -0
  71. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js.map +1 -0
  72. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js +30 -0
  73. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js.map +1 -0
  74. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js +93 -0
  75. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js.map +1 -0
  76. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js +64 -0
  77. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js.map +1 -0
  78. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js +91 -0
  79. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js.map +1 -0
  80. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js +94 -0
  81. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js.map +1 -0
  82. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js +75 -0
  83. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js.map +1 -0
  84. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js +47 -0
  85. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js.map +1 -0
  86. package/dist/client/chunks/chart-config-line-B3NgLF7K.js +104 -0
  87. package/dist/client/chunks/chart-config-line-B3NgLF7K.js.map +1 -0
  88. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js +117 -0
  89. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js.map +1 -0
  90. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js +82 -0
  91. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js.map +1 -0
  92. package/dist/client/chunks/chart-config-pie-wY0B52PC.js +68 -0
  93. package/dist/client/chunks/chart-config-pie-wY0B52PC.js.map +1 -0
  94. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js +49 -0
  95. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js.map +1 -0
  96. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js +38 -0
  97. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js.map +1 -0
  98. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js +66 -0
  99. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js.map +1 -0
  100. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js +61 -0
  101. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js.map +1 -0
  102. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js +45 -0
  103. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js.map +1 -0
  104. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js +51 -0
  105. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js.map +1 -0
  106. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js +59 -0
  107. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js.map +1 -0
  108. package/dist/client/chunks/chart-data-table-DehW1C1G.js +4088 -0
  109. package/dist/client/chunks/chart-data-table-DehW1C1G.js.map +1 -0
  110. package/dist/client/chunks/chart-funnel-BjkpnG5g.js +447 -0
  111. package/dist/client/chunks/chart-funnel-BjkpnG5g.js.map +1 -0
  112. package/dist/client/chunks/chart-gauge-BWW_HEfg.js +424 -0
  113. package/dist/client/chunks/chart-gauge-BWW_HEfg.js.map +1 -0
  114. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js +236 -0
  115. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js.map +1 -0
  116. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js +343 -0
  117. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js.map +1 -0
  118. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js +326 -0
  119. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js.map +1 -0
  120. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js +149 -0
  121. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js.map +1 -0
  122. package/dist/client/chunks/chart-line-DOIMkP0b.js +431 -0
  123. package/dist/client/chunks/chart-line-DOIMkP0b.js.map +1 -0
  124. package/dist/client/chunks/chart-markdown-DXxc43w1.js +3457 -0
  125. package/dist/client/chunks/chart-markdown-DXxc43w1.js.map +1 -0
  126. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js +179 -0
  127. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js.map +1 -0
  128. package/dist/client/chunks/chart-pie-BU_FgwDc.js +172 -0
  129. package/dist/client/chunks/chart-pie-BU_FgwDc.js.map +1 -0
  130. package/dist/client/chunks/chart-radar-DlufwnAX.js +154 -0
  131. package/dist/client/chunks/chart-radar-DlufwnAX.js.map +1 -0
  132. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js +148 -0
  133. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js.map +1 -0
  134. package/dist/client/chunks/chart-sankey-FChb26UX.js +222 -0
  135. package/dist/client/chunks/chart-sankey-FChb26UX.js.map +1 -0
  136. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js +255 -0
  137. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js.map +1 -0
  138. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js +221 -0
  139. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js.map +1 -0
  140. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js +298 -0
  141. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js.map +1 -0
  142. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js +237 -0
  143. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js.map +1 -0
  144. package/dist/client/chunks/charts-core-CUVzf4cV.js +215 -0
  145. package/dist/client/chunks/charts-core-CUVzf4cV.js.map +1 -0
  146. package/dist/client/chunks/charts-loader-AGpph8_I.js +259 -0
  147. package/dist/client/chunks/charts-loader-AGpph8_I.js.map +1 -0
  148. package/dist/client/chunks/core-D1TOj17W.js +845 -0
  149. package/dist/client/chunks/core-D1TOj17W.js.map +1 -0
  150. package/dist/client/chunks/dist-DDBeV_JI.js +847 -0
  151. package/dist/client/chunks/dist-DDBeV_JI.js.map +1 -0
  152. package/dist/client/chunks/javascript-BBwTSo6e.js +438 -0
  153. package/dist/client/chunks/javascript-BBwTSo6e.js.map +1 -0
  154. package/dist/client/chunks/json-BpTrLZSh.js +38 -0
  155. package/dist/client/chunks/json-BpTrLZSh.js.map +1 -0
  156. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js +149 -0
  157. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js.map +1 -0
  158. package/dist/client/chunks/providers-DX3Vw5kc.js +7 -0
  159. package/dist/client/chunks/providers-DX3Vw5kc.js.map +1 -0
  160. package/dist/client/chunks/retention-UEXlSdZ-.js +132 -0
  161. package/dist/client/chunks/retention-UEXlSdZ-.js.map +1 -0
  162. package/dist/client/chunks/rolldown-runtime-lc2dmIiU.js +20 -0
  163. package/dist/client/chunks/schema-visualization-ZugB4Io9.js +1073 -0
  164. package/dist/client/chunks/schema-visualization-ZugB4Io9.js.map +1 -0
  165. package/dist/client/chunks/sql-B0chxcEK.js +120 -0
  166. package/dist/client/chunks/sql-B0chxcEK.js.map +1 -0
  167. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js +30 -0
  168. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js.map +1 -0
  169. package/dist/client/chunks/useDebounce-BQjNWndQ.js +1394 -0
  170. package/dist/client/chunks/useDebounce-BQjNWndQ.js.map +1 -0
  171. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js +66 -0
  172. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js.map +1 -0
  173. package/dist/client/chunks/useExplainAI-c_bHxZe5.js +203 -0
  174. package/dist/client/chunks/useExplainAI-c_bHxZe5.js.map +1 -0
  175. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js +37 -0
  176. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js.map +1 -0
  177. package/dist/client/chunks/utils-A54Ny29G.js +128 -0
  178. package/dist/client/chunks/utils-A54Ny29G.js.map +1 -0
  179. package/dist/client/chunks/vendor-CoPBRumI.js +828 -0
  180. package/dist/client/chunks/vendor-CoPBRumI.js.map +1 -0
  181. package/dist/client/components.js +4 -18
  182. package/dist/client/hooks.js +6 -58
  183. package/dist/client/icons.js +2 -15
  184. package/dist/client/index.js +1061 -1295
  185. package/dist/client/index.js.map +1 -1
  186. package/dist/client/providers.js +3 -9
  187. package/dist/client/styles.css +2 -1
  188. package/dist/client/types.d.ts +1 -0
  189. package/dist/client/utils.js +7 -74
  190. package/dist/client-bundle-stats.html +1 -1
  191. package/dist/server/anthropic-BsNspi1r.js +140 -0
  192. package/dist/server/anthropic-DsCEX6Fm.cjs +1 -0
  193. package/dist/server/dist-CMWZC51B.js +581 -0
  194. package/dist/server/dist-DxegvyZF.cjs +2 -0
  195. package/dist/server/google-BXwMolCu.js +154 -0
  196. package/dist/server/google-DzQWXFwF.cjs +2 -0
  197. package/dist/server/index.cjs +109 -127
  198. package/dist/server/index.d.ts +13 -4
  199. package/dist/server/index.js +15089 -34349
  200. package/dist/server/openai-BPhmb8mi.js +4114 -0
  201. package/dist/server/openai-CLsoLaue.cjs +1 -0
  202. package/dist/server/openai-D1kZ5sdM.js +153 -0
  203. package/dist/server/openai-DkOKbVLC.cjs +16 -0
  204. package/package.json +5 -5
  205. package/dist/adapters/anthropic-BTkjgFpT.cjs +0 -1
  206. package/dist/adapters/anthropic-CTu9E801.js +0 -126
  207. package/dist/adapters/google-BAK9pnQf.cjs +0 -2
  208. package/dist/adapters/google-DficVAsJ.js +0 -146
  209. package/dist/adapters/handler-BV2_dul8.js +0 -2713
  210. package/dist/adapters/handler-LMRPeTNJ.cjs +0 -39
  211. package/dist/adapters/index-BgCeQBuN.cjs +0 -2
  212. package/dist/adapters/index-C3PskWTr.js +0 -5353
  213. package/dist/adapters/index-C45_meK_.js +0 -719
  214. package/dist/adapters/index-ht4NPca9.cjs +0 -23
  215. package/dist/adapters/mcp-transport-B6ZudTSk.js +0 -11010
  216. package/dist/adapters/mcp-transport-DCiSGtp1.cjs +0 -257
  217. package/dist/adapters/openai-BvA6eLs8.cjs +0 -1
  218. package/dist/adapters/openai-mcE24du8.js +0 -131
  219. package/dist/client/charts.js.map +0 -1
  220. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js +0 -256
  221. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js.map +0 -1
  222. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js +0 -48
  223. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js.map +0 -1
  224. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js +0 -178
  225. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js.map +0 -1
  226. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js +0 -29
  227. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js.map +0 -1
  228. package/dist/client/chunks/analysis-builder-DMFoAkjT.js +0 -6203
  229. package/dist/client/chunks/analysis-builder-DMFoAkjT.js.map +0 -1
  230. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js +0 -3140
  231. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js.map +0 -1
  232. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js +0 -347
  233. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js.map +0 -1
  234. package/dist/client/chunks/chart-area-CqKRIUpj.js +0 -234
  235. package/dist/client/chunks/chart-area-CqKRIUpj.js.map +0 -1
  236. package/dist/client/chunks/chart-bar-Bl5jvrU_.js +0 -267
  237. package/dist/client/chunks/chart-bar-Bl5jvrU_.js.map +0 -1
  238. package/dist/client/chunks/chart-box-plot-CzMb00z_.js +0 -322
  239. package/dist/client/chunks/chart-box-plot-CzMb00z_.js.map +0 -1
  240. package/dist/client/chunks/chart-bubble-BF8Z52eW.js +0 -249
  241. package/dist/client/chunks/chart-bubble-BF8Z52eW.js.map +0 -1
  242. package/dist/client/chunks/chart-candlestick-ByWS945g.js +0 -269
  243. package/dist/client/chunks/chart-candlestick-ByWS945g.js.map +0 -1
  244. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js +0 -50
  245. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js.map +0 -1
  246. package/dist/client/chunks/chart-config-area-CK_GVApT.js +0 -77
  247. package/dist/client/chunks/chart-config-area-CK_GVApT.js.map +0 -1
  248. package/dist/client/chunks/chart-config-bar-C8uzktxl.js +0 -71
  249. package/dist/client/chunks/chart-config-bar-C8uzktxl.js.map +0 -1
  250. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js +0 -38
  251. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js.map +0 -1
  252. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js +0 -71
  253. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js.map +0 -1
  254. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js +0 -70
  255. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js.map +0 -1
  256. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js +0 -28
  257. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js.map +0 -1
  258. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js +0 -92
  259. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js.map +0 -1
  260. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js +0 -64
  261. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js.map +0 -1
  262. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js +0 -77
  263. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js.map +0 -1
  264. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js +0 -97
  265. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js.map +0 -1
  266. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js +0 -75
  267. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js.map +0 -1
  268. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js +0 -47
  269. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js.map +0 -1
  270. package/dist/client/chunks/chart-config-line-JNagi9tf.js +0 -88
  271. package/dist/client/chunks/chart-config-line-JNagi9tf.js.map +0 -1
  272. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js +0 -97
  273. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js.map +0 -1
  274. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js +0 -70
  275. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js.map +0 -1
  276. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js +0 -39
  277. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js.map +0 -1
  278. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js +0 -44
  279. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js.map +0 -1
  280. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js +0 -37
  281. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js.map +0 -1
  282. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js +0 -61
  283. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js.map +0 -1
  284. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js +0 -53
  285. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js.map +0 -1
  286. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js +0 -50
  287. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js.map +0 -1
  288. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js +0 -47
  289. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js.map +0 -1
  290. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js +0 -60
  291. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js.map +0 -1
  292. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js +0 -293
  293. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js.map +0 -1
  294. package/dist/client/chunks/chart-funnel-WmuoWlCq.js +0 -259
  295. package/dist/client/chunks/chart-funnel-WmuoWlCq.js.map +0 -1
  296. package/dist/client/chunks/chart-gauge-Cot4By-w.js +0 -374
  297. package/dist/client/chunks/chart-gauge-Cot4By-w.js.map +0 -1
  298. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js +0 -231
  299. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js.map +0 -1
  300. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js +0 -351
  301. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js.map +0 -1
  302. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js +0 -476
  303. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js.map +0 -1
  304. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js +0 -165
  305. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js.map +0 -1
  306. package/dist/client/chunks/chart-line-3Nf-EPqJ.js +0 -450
  307. package/dist/client/chunks/chart-line-3Nf-EPqJ.js.map +0 -1
  308. package/dist/client/chunks/chart-markdown-BT_-MBq1.js +0 -2721
  309. package/dist/client/chunks/chart-markdown-BT_-MBq1.js.map +0 -1
  310. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js +0 -114
  311. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js.map +0 -1
  312. package/dist/client/chunks/chart-pie-DblG6w7g.js +0 -137
  313. package/dist/client/chunks/chart-pie-DblG6w7g.js.map +0 -1
  314. package/dist/client/chunks/chart-radar-BHZbeeTg.js +0 -129
  315. package/dist/client/chunks/chart-radar-BHZbeeTg.js.map +0 -1
  316. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js +0 -119
  317. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js.map +0 -1
  318. package/dist/client/chunks/chart-sankey-E8vYKjQF.js +0 -189
  319. package/dist/client/chunks/chart-sankey-E8vYKjQF.js.map +0 -1
  320. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js +0 -202
  321. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js.map +0 -1
  322. package/dist/client/chunks/chart-sunburst-BgnTKolT.js +0 -188
  323. package/dist/client/chunks/chart-sunburst-BgnTKolT.js.map +0 -1
  324. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js +0 -284
  325. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js.map +0 -1
  326. package/dist/client/chunks/chart-waterfall-BeIhCm83.js +0 -191
  327. package/dist/client/chunks/chart-waterfall-BeIhCm83.js.map +0 -1
  328. package/dist/client/chunks/charts-core-BUUO36OM.js +0 -692
  329. package/dist/client/chunks/charts-core-BUUO36OM.js.map +0 -1
  330. package/dist/client/chunks/charts-loader-goTYnavu.js +0 -258
  331. package/dist/client/chunks/charts-loader-goTYnavu.js.map +0 -1
  332. package/dist/client/chunks/components-BFgYvFq6.js +0 -10066
  333. package/dist/client/chunks/components-BFgYvFq6.js.map +0 -1
  334. package/dist/client/chunks/core-Y9e-sNfb.js +0 -1068
  335. package/dist/client/chunks/core-Y9e-sNfb.js.map +0 -1
  336. package/dist/client/chunks/flow-utils-CjQZG5qq.js +0 -16
  337. package/dist/client/chunks/flow-utils-CjQZG5qq.js.map +0 -1
  338. package/dist/client/chunks/funnel-utils-CyonoNeC.js +0 -135
  339. package/dist/client/chunks/funnel-utils-CyonoNeC.js.map +0 -1
  340. package/dist/client/chunks/icons-CwvgmdIP.js +0 -1636
  341. package/dist/client/chunks/icons-CwvgmdIP.js.map +0 -1
  342. package/dist/client/chunks/index-CApFCBF9.js +0 -81
  343. package/dist/client/chunks/index-CApFCBF9.js.map +0 -1
  344. package/dist/client/chunks/index-_2PSgbkC.js +0 -1046
  345. package/dist/client/chunks/index-_2PSgbkC.js.map +0 -1
  346. package/dist/client/chunks/javascript-DII1YQGr.js +0 -659
  347. package/dist/client/chunks/javascript-DII1YQGr.js.map +0 -1
  348. package/dist/client/chunks/json-C_6Prymp.js +0 -39
  349. package/dist/client/chunks/json-C_6Prymp.js.map +0 -1
  350. package/dist/client/chunks/providers-Ds7DRmnO.js +0 -554
  351. package/dist/client/chunks/providers-Ds7DRmnO.js.map +0 -1
  352. package/dist/client/chunks/retention-CzCo8262.js +0 -120
  353. package/dist/client/chunks/retention-CzCo8262.js.map +0 -1
  354. package/dist/client/chunks/schema-visualization-B97a1Ybu.js +0 -772
  355. package/dist/client/chunks/schema-visualization-B97a1Ybu.js.map +0 -1
  356. package/dist/client/chunks/sql-IeKX8fQ8.js +0 -616
  357. package/dist/client/chunks/sql-IeKX8fQ8.js.map +0 -1
  358. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js +0 -34
  359. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js.map +0 -1
  360. package/dist/client/chunks/theme-Dp3hFed1.js +0 -112
  361. package/dist/client/chunks/theme-Dp3hFed1.js.map +0 -1
  362. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js +0 -1231
  363. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js.map +0 -1
  364. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js +0 -182
  365. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js.map +0 -1
  366. package/dist/client/chunks/vendor-B2EH3V58.js +0 -2892
  367. package/dist/client/chunks/vendor-B2EH3V58.js.map +0 -1
  368. package/dist/client/components.js.map +0 -1
  369. package/dist/client/hooks.js.map +0 -1
  370. package/dist/client/icons.js.map +0 -1
  371. package/dist/client/providers.js.map +0 -1
  372. package/dist/client/utils.js.map +0 -1
  373. package/dist/server/anthropic-BTkjgFpT.cjs +0 -1
  374. package/dist/server/anthropic-CTu9E801.js +0 -126
  375. package/dist/server/google-BAK9pnQf.cjs +0 -2
  376. package/dist/server/google-DficVAsJ.js +0 -146
  377. package/dist/server/index-BgCeQBuN.cjs +0 -2
  378. package/dist/server/index-C3PskWTr.js +0 -5353
  379. package/dist/server/index-C45_meK_.js +0 -719
  380. package/dist/server/index-ht4NPca9.cjs +0 -23
  381. package/dist/server/openai-BvA6eLs8.cjs +0 -1
  382. package/dist/server/openai-mcE24du8.js +0 -131
@@ -1,189 +0,0 @@
1
- import { jsx as c, jsxs as s } from "react/jsx-runtime";
2
- import L, { useRef as R, useState as E, useEffect as O, useMemo as N } from "react";
3
- import { ResponsiveContainer as F, Sankey as W, Tooltip as A } from "recharts";
4
- import { c as j } from "./charts-core-BUUO36OM.js";
5
- import { i as p } from "./flow-utils-CjQZG5qq.js";
6
- const g = {
7
- before: "#F97316",
8
- // orange-500 - for steps before
9
- start: "#3B82F6",
10
- // blue-500 - for starting step
11
- after: "#10B981"
12
- // emerald-500 - for steps after
13
- };
14
- function M(e, t) {
15
- if (t && t.length > 0) {
16
- const n = Math.abs(e);
17
- return t[n % t.length];
18
- }
19
- return e < 0 ? g.before : e === 0 ? g.start : g.after;
20
- }
21
- function T(e, t) {
22
- if (!e.nodes || e.nodes.length === 0) return null;
23
- const n = /* @__PURE__ */ new Map();
24
- e.nodes.forEach((r, o) => {
25
- n.set(r.id, o);
26
- });
27
- const l = e.nodes.map((r) => ({
28
- name: r.name,
29
- fill: M(r.layer, t),
30
- layer: r.layer,
31
- value: r.value
32
- })), i = e.links.map((r) => {
33
- const o = n.get(r.source), a = n.get(r.target);
34
- return o === void 0 || a === void 0 ? (console.warn(`Sankey: Could not resolve link ${r.source} -> ${r.target}`), null) : {
35
- source: o,
36
- target: a,
37
- value: r.value
38
- };
39
- }).filter((r) => r !== null);
40
- return { nodes: l, links: i };
41
- }
42
- function y(e) {
43
- if (!e || e.length === 0) return null;
44
- if (p(e[0]))
45
- return e[0];
46
- if (p(e))
47
- return e;
48
- const t = e;
49
- return t.nodes && t.links ? t : null;
50
- }
51
- function _({
52
- x: e,
53
- y: t,
54
- width: n,
55
- height: l,
56
- payload: i,
57
- containerWidth: r,
58
- showLabels: o = !0
59
- }) {
60
- const a = e > r / 2, u = a ? e - 6 : e + n + 6, h = a ? "end" : "start";
61
- return /* @__PURE__ */ s("g", { children: [
62
- /* @__PURE__ */ c(
63
- "rect",
64
- {
65
- x: e,
66
- y: t,
67
- width: n,
68
- height: l,
69
- fill: i.fill,
70
- rx: 2,
71
- ry: 2
72
- }
73
- ),
74
- o && /* @__PURE__ */ s(
75
- "text",
76
- {
77
- x: u,
78
- y: t + l / 2,
79
- textAnchor: h,
80
- dominantBaseline: "middle",
81
- className: "dc:text-xs dc:fill-dc-text",
82
- style: { fontSize: 11 },
83
- children: [
84
- i.name,
85
- i.value !== void 0 && /* @__PURE__ */ s("tspan", { className: "dc:fill-dc-text-secondary", dx: 4, children: [
86
- "(",
87
- i.value.toLocaleString(),
88
- ")"
89
- ] })
90
- ]
91
- }
92
- )
93
- ] });
94
- }
95
- function z({ active: e, payload: t }) {
96
- if (!e || !t || t.length === 0) return null;
97
- const n = t[0].payload;
98
- return n.source && n.target ? /* @__PURE__ */ s("div", { className: "bg-dc-surface dc:border border-dc-border dc:rounded-md dc:px-3 dc:py-2 dc:shadow-lg dc:text-sm", children: [
99
- /* @__PURE__ */ s("div", { className: "dc:font-medium text-dc-text", children: [
100
- n.source.name,
101
- " → ",
102
- n.target.name
103
- ] }),
104
- /* @__PURE__ */ s("div", { className: "text-dc-text-secondary dc:mt-1", children: [
105
- /* @__PURE__ */ c("span", { className: "dc:font-medium", children: n.value.toLocaleString() }),
106
- " entities"
107
- ] })
108
- ] }) : /* @__PURE__ */ s("div", { className: "bg-dc-surface dc:border border-dc-border dc:rounded-md dc:px-3 dc:py-2 dc:shadow-lg dc:text-sm", children: [
109
- /* @__PURE__ */ c("div", { className: "dc:font-medium text-dc-text", children: n.name }),
110
- n.value !== void 0 && /* @__PURE__ */ s("div", { className: "text-dc-text-secondary dc:mt-1", children: [
111
- /* @__PURE__ */ c("span", { className: "dc:font-medium", children: n.value.toLocaleString() }),
112
- " entities"
113
- ] })
114
- ] });
115
- }
116
- const K = L.memo(function({
117
- data: t,
118
- height: n = "100%",
119
- colorPalette: l,
120
- displayConfig: i
121
- }) {
122
- const r = R(null), [o, a] = E(800);
123
- O(() => {
124
- const d = () => {
125
- r.current && a(r.current.offsetWidth);
126
- };
127
- return d(), window.addEventListener("resize", d), () => window.removeEventListener("resize", d);
128
- }, []);
129
- const u = i, h = parseFloat(String(u?.linkOpacity || "0.5")), b = u?.nodeWidth ?? 10, S = u?.nodePadding ?? 50, w = u?.showNodeLabels !== !1, x = N(() => {
130
- const d = y(t || []);
131
- return d ? T(d, l?.colors || j) : null;
132
- }, [t, l]), f = N(() => {
133
- const d = y(t || []);
134
- if (!d) return null;
135
- const k = d.nodes.filter((m) => m.layer === 0).reduce((m, v) => m + (v.value || 0), 0), C = d.links.reduce((m, v) => m + v.value, 0);
136
- return {
137
- nodeCount: d.nodes.length,
138
- linkCount: d.links.length,
139
- totalEntities: k,
140
- totalPaths: C
141
- };
142
- }, [t]);
143
- return !t || t.length === 0 || !x || x.nodes.length === 0 ? /* @__PURE__ */ c(
144
- "div",
145
- {
146
- className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
147
- style: { height: n },
148
- children: /* @__PURE__ */ s("div", { className: "dc:text-center", children: [
149
- /* @__PURE__ */ c("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No flow data" }),
150
- /* @__PURE__ */ c("div", { className: "dc:text-xs text-dc-text-secondary", children: "Configure a flow analysis with a starting step and event dimension" })
151
- ] })
152
- }
153
- ) : /* @__PURE__ */ s("div", { ref: r, className: "dc:relative dc:w-full dc:h-full dc:flex dc:flex-col", style: { height: n }, children: [
154
- /* @__PURE__ */ c("div", { className: "dc:flex-1 dc:min-h-0", children: /* @__PURE__ */ c(F, { width: "100%", height: "100%", children: /* @__PURE__ */ c(
155
- W,
156
- {
157
- data: x,
158
- nodeWidth: b,
159
- nodePadding: S,
160
- margin: { top: 20, right: 20, bottom: 20, left: 20 },
161
- link: {
162
- stroke: "var(--dc-border)",
163
- strokeOpacity: h
164
- },
165
- node: (d) => /* @__PURE__ */ c(_, { ...d, containerWidth: o, showLabels: w }),
166
- children: /* @__PURE__ */ c(A, { content: /* @__PURE__ */ c(z, {}) })
167
- }
168
- ) }) }),
169
- !u?.hideSummaryFooter && f && /* @__PURE__ */ c("div", { className: "dc:flex-shrink-0 dc:px-4 dc:py-2 dc:border-t border-dc-border bg-dc-surface-secondary", children: /* @__PURE__ */ s("div", { className: "dc:flex dc:items-center dc:justify-between dc:text-sm", children: [
170
- /* @__PURE__ */ s("div", { className: "text-dc-text-muted", children: [
171
- /* @__PURE__ */ c("span", { className: "dc:font-medium", children: f.nodeCount }),
172
- " events"
173
- ] }),
174
- /* @__PURE__ */ s("div", { className: "text-dc-text", children: [
175
- /* @__PURE__ */ c("span", { className: "text-dc-text-muted", children: "Paths:" }),
176
- " ",
177
- /* @__PURE__ */ c("span", { className: "dc:font-medium", children: f.linkCount })
178
- ] }),
179
- /* @__PURE__ */ s("div", { className: "text-dc-text-muted", children: [
180
- /* @__PURE__ */ c("span", { className: "dc:font-medium", children: f.totalEntities.toLocaleString() }),
181
- " starting entities"
182
- ] })
183
- ] }) })
184
- ] });
185
- });
186
- export {
187
- K as default
188
- };
189
- //# sourceMappingURL=chart-sankey-E8vYKjQF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-sankey-E8vYKjQF.js","sources":["../../../src/client/components/charts/SankeyChart.tsx"],"sourcesContent":["/**\n * SankeyChart Component\n *\n * Visualizes flow data using Sankey diagrams showing paths between states.\n * Works with data from flow queries which provide nodes and links.\n *\n * The chart displays:\n * - Nodes representing events at different layers (before, start, after)\n * - Links showing the flow of entities between adjacent nodes\n * - Values indicating count of entities following each path\n */\n\nimport React, { useMemo, useRef, useState, useEffect } from 'react'\nimport { Sankey, Tooltip, ResponsiveContainer } from 'recharts'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport type { ChartProps } from '../../types'\nimport type { FlowChartData } from '../../types/flow'\nimport { isSankeyData } from '../../types/flow'\n\n/**\n * Color palette for Sankey nodes based on layer\n */\nconst SANKEY_COLORS = {\n before: '#F97316', // orange-500 - for steps before\n start: '#3B82F6', // blue-500 - for starting step\n after: '#10B981', // emerald-500 - for steps after\n}\n\n/**\n * Get color for a node based on its layer\n */\nfunction getNodeColor(layer: number, colorPalette?: string[]): string {\n if (colorPalette && colorPalette.length > 0) {\n // Use palette colors cycling through\n const absLayer = Math.abs(layer)\n return colorPalette[absLayer % colorPalette.length]\n }\n\n if (layer < 0) return SANKEY_COLORS.before\n if (layer === 0) return SANKEY_COLORS.start\n return SANKEY_COLORS.after\n}\n\n/**\n * Transform FlowChartData to Recharts Sankey format\n */\nfunction transformToRechartsFormat(\n data: FlowChartData,\n colorPalette?: string[]\n): {\n nodes: Array<{ name: string; fill: string; layer: number; value?: number }>\n links: Array<{ source: number; target: number; value: number }>\n} | null {\n if (!data.nodes || data.nodes.length === 0) return null\n\n // Create node index map for link resolution\n const nodeIndexMap = new Map<string, number>()\n data.nodes.forEach((node, index) => {\n nodeIndexMap.set(node.id, index)\n })\n\n // Transform nodes\n const nodes = data.nodes.map((node) => ({\n name: node.name,\n fill: getNodeColor(node.layer, colorPalette),\n layer: node.layer,\n value: node.value,\n }))\n\n // Transform links - resolve string IDs to numeric indices\n const links = data.links\n .map((link) => {\n const sourceIndex = nodeIndexMap.get(link.source)\n const targetIndex = nodeIndexMap.get(link.target)\n\n if (sourceIndex === undefined || targetIndex === undefined) {\n console.warn(`Sankey: Could not resolve link ${link.source} -> ${link.target}`)\n return null\n }\n\n return {\n source: sourceIndex,\n target: targetIndex,\n value: link.value,\n }\n })\n .filter((link): link is { source: number; target: number; value: number } => link !== null)\n\n return { nodes, links }\n}\n\n/**\n * Extract FlowChartData from various data formats\n */\nfunction extractFlowData(data: unknown[]): FlowChartData | null {\n if (!data || data.length === 0) return null\n\n // If first element is already FlowChartData (server returns as single-row array)\n if (isSankeyData(data[0])) {\n return data[0] as FlowChartData\n }\n\n // If data itself is FlowChartData shape\n if (isSankeyData(data)) {\n return data as unknown as FlowChartData\n }\n\n // Check if data is an array with nodes and links at top level\n const asAny = data as unknown as Record<string, unknown>\n if (asAny.nodes && asAny.links) {\n return asAny as unknown as FlowChartData\n }\n\n return null\n}\n\n/**\n * Custom node renderer for Sankey chart\n * Displays the node rectangle with label and value\n */\nfunction SankeyNode({\n x,\n y,\n width,\n height,\n payload,\n containerWidth,\n showLabels = true,\n}: {\n x: number\n y: number\n width: number\n height: number\n payload: { name: string; value?: number; fill: string }\n containerWidth: number\n showLabels?: boolean\n}) {\n // Determine if label should be on the left or right based on position\n const isRightSide = x > containerWidth / 2\n const labelX = isRightSide ? x - 6 : x + width + 6\n const textAnchor = isRightSide ? 'end' : 'start'\n\n return (\n <g>\n {/* Node rectangle */}\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={payload.fill}\n rx={2}\n ry={2}\n />\n {/* Node label - only shown if showLabels is true */}\n {showLabels && (\n <text\n x={labelX}\n y={y + height / 2}\n textAnchor={textAnchor}\n dominantBaseline=\"middle\"\n className=\"dc:text-xs dc:fill-dc-text\"\n style={{ fontSize: 11 }}\n >\n {payload.name}\n {payload.value !== undefined && (\n <tspan className=\"dc:fill-dc-text-secondary\" dx={4}>\n ({payload.value.toLocaleString()})\n </tspan>\n )}\n </text>\n )}\n </g>\n )\n}\n\n/**\n * Custom tooltip for Sankey chart\n */\nfunction SankeyTooltip({ active, payload }: {\n active?: boolean\n payload?: Array<{ payload: { name: string; value: number; source?: { name: string }; target?: { name: string } } }>\n}) {\n if (!active || !payload || payload.length === 0) return null\n\n const data = payload[0].payload\n\n // Check if this is a link (has source/target) or a node\n if (data.source && data.target) {\n return (\n <div className=\"bg-dc-surface dc:border border-dc-border dc:rounded-md dc:px-3 dc:py-2 dc:shadow-lg dc:text-sm\">\n <div className=\"dc:font-medium text-dc-text\">\n {data.source.name} → {data.target.name}\n </div>\n <div className=\"text-dc-text-secondary dc:mt-1\">\n <span className=\"dc:font-medium\">{data.value.toLocaleString()}</span> entities\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"bg-dc-surface dc:border border-dc-border dc:rounded-md dc:px-3 dc:py-2 dc:shadow-lg dc:text-sm\">\n <div className=\"dc:font-medium text-dc-text\">{data.name}</div>\n {data.value !== undefined && (\n <div className=\"text-dc-text-secondary dc:mt-1\">\n <span className=\"dc:font-medium\">{data.value.toLocaleString()}</span> entities\n </div>\n )}\n </div>\n )\n}\n\n/**\n * SankeyChart Component\n *\n * Renders a Sankey diagram visualization from FlowChartData.\n * Shows flow paths with nodes at each layer and links between them.\n */\nconst SankeyChart = React.memo(function SankeyChart({\n data,\n height = '100%',\n colorPalette,\n displayConfig,\n}: ChartProps) {\n // Track container width for label positioning\n const containerRef = useRef<HTMLDivElement>(null)\n const [containerWidth, setContainerWidth] = useState(800)\n\n useEffect(() => {\n const updateWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth)\n }\n }\n updateWidth()\n window.addEventListener('resize', updateWidth)\n return () => window.removeEventListener('resize', updateWidth)\n }, [])\n\n // Get display config options\n // Use custom properties from displayConfig if available, otherwise use defaults\n const displayConfigAny = displayConfig as Record<string, unknown> | undefined\n const linkOpacity = parseFloat(String(displayConfigAny?.linkOpacity || '0.5'))\n const nodeWidth = (displayConfigAny?.nodeWidth as number) ?? 10\n const nodePadding = (displayConfigAny?.nodePadding as number) ?? 50\n const showNodeLabels = displayConfigAny?.showNodeLabels !== false // Default true\n\n // Extract and transform data\n const flowData = useMemo(() => {\n const extracted = extractFlowData(data || [])\n if (!extracted) return null\n\n return transformToRechartsFormat(extracted, colorPalette?.colors || CHART_COLORS)\n }, [data, colorPalette])\n\n // Calculate summary stats\n const summaryStats = useMemo(() => {\n const extracted = extractFlowData(data || [])\n if (!extracted) return null\n\n const totalEntities = extracted.nodes\n .filter((n) => n.layer === 0)\n .reduce((sum, n) => sum + (n.value || 0), 0)\n\n const totalPaths = extracted.links.reduce((sum, l) => sum + l.value, 0)\n\n return {\n nodeCount: extracted.nodes.length,\n linkCount: extracted.links.length,\n totalEntities,\n totalPaths,\n }\n }, [data])\n\n // Handle no data\n if (!data || data.length === 0 || !flowData || flowData.nodes.length === 0) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No flow data</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n Configure a flow analysis with a starting step and event dimension\n </div>\n </div>\n </div>\n )\n }\n\n return (\n <div ref={containerRef} className=\"dc:relative dc:w-full dc:h-full dc:flex dc:flex-col\" style={{ height }}>\n {/* Sankey Diagram */}\n <div className=\"dc:flex-1 dc:min-h-0\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <Sankey\n data={flowData}\n nodeWidth={nodeWidth}\n nodePadding={nodePadding}\n margin={{ top: 20, right: 20, bottom: 20, left: 20 }}\n link={{\n stroke: 'var(--dc-border)',\n strokeOpacity: linkOpacity,\n }}\n node={(props: any) => (\n <SankeyNode {...props} containerWidth={containerWidth} showLabels={showNodeLabels} />\n )}\n >\n <Tooltip content={<SankeyTooltip />} />\n </Sankey>\n </ResponsiveContainer>\n </div>\n\n {/* Summary Footer */}\n {!(displayConfigAny?.hideSummaryFooter) && summaryStats && (\n <div className=\"dc:flex-shrink-0 dc:px-4 dc:py-2 dc:border-t border-dc-border bg-dc-surface-secondary\">\n <div className=\"dc:flex dc:items-center dc:justify-between dc:text-sm\">\n <div className=\"text-dc-text-muted\">\n <span className=\"dc:font-medium\">{summaryStats.nodeCount}</span> events\n </div>\n <div className=\"text-dc-text\">\n <span className=\"text-dc-text-muted\">Paths:</span>{' '}\n <span className=\"dc:font-medium\">{summaryStats.linkCount}</span>\n </div>\n <div className=\"text-dc-text-muted\">\n <span className=\"dc:font-medium\">{summaryStats.totalEntities.toLocaleString()}</span> starting entities\n </div>\n </div>\n </div>\n )}\n </div>\n )\n})\n\nexport default SankeyChart\n"],"names":["SANKEY_COLORS","getNodeColor","layer","colorPalette","absLayer","transformToRechartsFormat","data","nodeIndexMap","node","index","nodes","links","link","sourceIndex","targetIndex","extractFlowData","isSankeyData","asAny","SankeyNode","x","y","width","height","payload","containerWidth","showLabels","isRightSide","labelX","textAnchor","jsx","jsxs","SankeyTooltip","active","SankeyChart","React","displayConfig","containerRef","useRef","setContainerWidth","useState","useEffect","updateWidth","displayConfigAny","linkOpacity","nodeWidth","nodePadding","showNodeLabels","flowData","useMemo","extracted","CHART_COLORS","summaryStats","totalEntities","n","sum","totalPaths","l","ResponsiveContainer","Sankey","props","Tooltip"],"mappings":"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"}
@@ -1,202 +0,0 @@
1
- import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
- import O, { useState as Y } from "react";
3
- import { ScatterChart as B, CartesianGrid as C, XAxis as U, YAxis as W, Tooltip as $, Legend as J, Scatter as z } from "recharts";
4
- import { u as Q, g as V, d as F, e as I, i as _, C as Z, a as q, f as k, c as D } from "./charts-core-BUUO36OM.js";
5
- const ne = O.memo(function({
6
- data: g,
7
- chartConfig: i,
8
- displayConfig: p = {},
9
- queryObject: v,
10
- height: m = "100%",
11
- colorPalette: b
12
- }) {
13
- const [G, T] = Y(null), x = Q();
14
- try {
15
- const u = {
16
- showLegend: p?.showLegend ?? !0,
17
- showGrid: p?.showGrid ?? !0,
18
- showTooltip: p?.showTooltip ?? !0
19
- }, A = p?.xAxisFormat, y = p?.leftYAxisFormat;
20
- if (!g || g.length === 0)
21
- return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted", style: { height: m }, children: /* @__PURE__ */ c("div", { className: "dc:text-center", children: [
22
- /* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No data available" }),
23
- /* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-secondary", children: "No data points to display in scatter chart" })
24
- ] }) });
25
- let a, l, E = [];
26
- if (i?.xAxis && i?.yAxis) {
27
- a = Array.isArray(i.xAxis) ? i.xAxis[0] : i.xAxis, l = Array.isArray(i.yAxis) ? i.yAxis[0] : i.yAxis;
28
- const t = i.series;
29
- E = t ? Array.isArray(t) ? t : [t] : [];
30
- } else if (i?.x && i?.y)
31
- a = i.x, l = Array.isArray(i.y) ? i.y[0] : i.y;
32
- else
33
- return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning", style: { height: m }, children: /* @__PURE__ */ c("div", { className: "dc:text-center", children: [
34
- /* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Configuration Error" }),
35
- /* @__PURE__ */ e("div", { className: "dc:text-xs", children: "Invalid or missing chart axis configuration" })
36
- ] }) });
37
- if (!a || !l)
38
- return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning", style: { height: m }, children: /* @__PURE__ */ c("div", { className: "dc:text-center", children: [
39
- /* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Configuration Error" }),
40
- /* @__PURE__ */ e("div", { className: "dc:text-xs", children: "Missing required X-axis or Y-axis fields" })
41
- ] }) });
42
- const M = (v?.timeDimensions || []).map((t) => t.dimension);
43
- let N, d = {};
44
- if (E.length > 0) {
45
- const t = E[0];
46
- g.forEach((s) => {
47
- const n = String(s[t] || "Default");
48
- d[n] || (d[n] = []);
49
- const f = V(v, a), h = F(s[a], f) || s[a], o = I(s[l]), S = typeof h == "string" ? parseFloat(h) : h;
50
- if (_(S) && o !== null) {
51
- const j = {};
52
- M.forEach((w) => {
53
- if (s[w]) {
54
- const K = V(v, w);
55
- j[w] = F(s[w], K);
56
- }
57
- }), d[n].push({
58
- x: S,
59
- y: o,
60
- name: n,
61
- timeValues: j,
62
- originalItem: s
63
- });
64
- }
65
- }), N = Object.keys(d).flatMap((s) => d[s]);
66
- } else {
67
- const t = V(v, a);
68
- N = g.map((r) => {
69
- const s = F(r[a], t) || r[a], n = I(r[l]), f = typeof s == "string" ? parseFloat(s) : s, h = {};
70
- return M.forEach((o) => {
71
- if (r[o]) {
72
- const S = V(v, o);
73
- h[o] = F(r[o], S);
74
- }
75
- }), {
76
- x: f,
77
- y: n,
78
- name: "Point",
79
- timeValues: h,
80
- originalItem: r,
81
- isValid: _(f) && n !== null
82
- };
83
- }).filter((r) => r.isValid);
84
- }
85
- if (!N || N.length === 0)
86
- return /* @__PURE__ */ e("div", { className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted", style: { height: m }, children: /* @__PURE__ */ c("div", { className: "dc:text-center", children: [
87
- /* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "No valid data" }),
88
- /* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-secondary", children: "No valid data points for scatter chart after transformation" })
89
- ] }) });
90
- const L = Object.keys(d), R = L.length > 1 && L.length <= 20, X = u.showLegend && R, H = {
91
- ...Z,
92
- left: 40
93
- // Increased from 20 to 40 for Y-axis label space
94
- };
95
- return /* @__PURE__ */ e(q, { height: m, children: /* @__PURE__ */ c(B, { margin: H, accessibilityLayer: !1, children: [
96
- u.showGrid && /* @__PURE__ */ e(C, { strokeDasharray: "3 3" }),
97
- /* @__PURE__ */ e(
98
- U,
99
- {
100
- type: "number",
101
- dataKey: "x",
102
- name: A?.label || x(a),
103
- tick: { fontSize: 12 },
104
- tickFormatter: A ? (t) => k(t, A) : void 0
105
- }
106
- ),
107
- /* @__PURE__ */ e(
108
- W,
109
- {
110
- type: "number",
111
- dataKey: "y",
112
- name: y?.label || x(l),
113
- tick: { fontSize: 12 },
114
- tickFormatter: y ? (t) => k(t, y) : void 0,
115
- label: { value: y?.label || x(l), angle: -90, position: "left", style: { textAnchor: "middle", fontSize: "12px" } }
116
- }
117
- ),
118
- u.showTooltip && /* @__PURE__ */ e(
119
- $,
120
- {
121
- cursor: { strokeDasharray: "3 3" },
122
- content: ({ active: t, payload: r }) => {
123
- if (!t || !r || r.length === 0) return null;
124
- const s = r[0]?.payload;
125
- return s ? /* @__PURE__ */ c("div", { style: {
126
- backgroundColor: "white",
127
- border: "1px solid #e5e7eb",
128
- borderRadius: "0.5rem",
129
- fontSize: "0.875rem",
130
- color: "#1f2937",
131
- boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
132
- padding: "8px 12px"
133
- }, children: [
134
- /* @__PURE__ */ e("div", { style: { fontWeight: 600, marginBottom: "4px" }, children: s.name }),
135
- s.timeValues && Object.keys(s.timeValues).length > 0 && /* @__PURE__ */ e("div", { style: { marginBottom: "4px", color: "#6b7280" }, children: Object.entries(s.timeValues).map(([n, f]) => /* @__PURE__ */ c("div", { children: [
136
- x(n),
137
- ": ",
138
- f
139
- ] }, n)) }),
140
- /* @__PURE__ */ c("div", { children: [
141
- A?.label || x(a),
142
- ": ",
143
- k(s.x, A)
144
- ] }),
145
- /* @__PURE__ */ c("div", { children: [
146
- y?.label || x(l),
147
- ": ",
148
- k(s.y, y)
149
- ] })
150
- ] }) : null;
151
- }
152
- }
153
- ),
154
- X && /* @__PURE__ */ e(
155
- J,
156
- {
157
- wrapperStyle: { fontSize: "12px", paddingTop: "10px" },
158
- iconType: "circle",
159
- iconSize: 8,
160
- layout: "horizontal",
161
- align: "center",
162
- verticalAlign: "bottom",
163
- onMouseEnter: (t) => T(String(t.dataKey || "")),
164
- onMouseLeave: () => T(null)
165
- }
166
- ),
167
- R ? (
168
- // Multiple series
169
- L.map((t, r) => /* @__PURE__ */ e(
170
- z,
171
- {
172
- name: t,
173
- data: d[t],
174
- fill: b?.colors && b.colors[r % b.colors.length] || D[r % D.length],
175
- fillOpacity: G ? G === t ? 1 : 0.3 : 1
176
- },
177
- t
178
- ))
179
- ) : (
180
- // Single series
181
- /* @__PURE__ */ e(
182
- z,
183
- {
184
- name: "Data",
185
- data: N,
186
- fill: b?.colors && b.colors[0] || D[0]
187
- }
188
- )
189
- )
190
- ] }) });
191
- } catch (u) {
192
- return /* @__PURE__ */ e("div", { className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4", style: { height: m }, children: /* @__PURE__ */ c("div", { className: "dc:text-center", children: [
193
- /* @__PURE__ */ e("div", { className: "dc:text-sm dc:font-semibold dc:mb-1", children: "Scatter Chart Error" }),
194
- /* @__PURE__ */ e("div", { className: "dc:text-xs dc:mb-2", children: u instanceof Error ? u.message : "Unknown rendering error" }),
195
- /* @__PURE__ */ e("div", { className: "dc:text-xs text-dc-text-muted", children: "Check the data and configuration" })
196
- ] }) });
197
- }
198
- });
199
- export {
200
- ne as default
201
- };
202
- //# sourceMappingURL=chart-scatter-Bbxqi0iw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart-scatter-Bbxqi0iw.js","sources":["../../../src/client/components/charts/ScatterChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Legend, Tooltip } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, parseNumericValue, isValidNumericValue, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst ScatterChart = React.memo(function ScatterChart({ \n data, \n chartConfig, \n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n // Use specialized hook to avoid re-renders from unrelated context changes\n const getFieldLabel = useCubeFieldLabel()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n // Extract axis format configs\n // For scatter charts, xAxis uses xAxisFormat, yAxis uses leftYAxisFormat\n const xAxisFormat = displayConfig?.xAxisFormat\n const yAxisFormat = displayConfig?.leftYAxisFormat\n\n if (!data || data.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No data available</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">No data points to display in scatter chart</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisField: string\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - handle both string and array values\n xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis\n yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis\n // Normalize series to array\n const seriesConfig = chartConfig.series\n seriesFields = seriesConfig ? (Array.isArray(seriesConfig) ? seriesConfig : [seriesConfig]) : []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format (adapt for scatter chart)\n xAxisField = chartConfig.x\n yAxisField = Array.isArray(chartConfig.y) ? chartConfig.y[0] : chartConfig.y\n } else {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Configuration Error</div>\n <div className=\"dc:text-xs\">Invalid or missing chart axis configuration</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Configuration Error</div>\n <div className=\"dc:text-xs\">Missing required X-axis or Y-axis fields</div>\n </div>\n </div>\n )\n }\n\n // Extract time dimensions from query for tooltip display\n const timeDimensions = queryObject?.timeDimensions || []\n const timeDimensionFields = timeDimensions.map((td: any) => td.dimension)\n\n // Transform data for scatter plot\n // Null handling: Filter out data points where x or y coordinates are null\n let scatterData: any[]\n let seriesGroups: { [key: string]: any[] } = {}\n\n if (seriesFields.length > 0) {\n // Group data by series field\n const seriesField = seriesFields[0]\n data.forEach(item => {\n const seriesValue = String(item[seriesField] || 'Default')\n if (!seriesGroups[seriesValue]) {\n seriesGroups[seriesValue] = []\n }\n\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n\n // Only add point if both x and y are valid numbers\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n if (isValidNumericValue(xNum) && yValue !== null) {\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n seriesGroups[seriesValue].push({\n x: xNum,\n y: yValue,\n name: seriesValue,\n timeValues,\n originalItem: item\n })\n }\n })\n\n // Collect all valid points from all series for validation\n // (The actual rendering uses seriesGroups with series separated)\n const seriesKeys = Object.keys(seriesGroups)\n scatterData = seriesKeys.flatMap(key => seriesGroups[key])\n } else {\n // Single series scatter plot\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n scatterData = data\n .map(item => {\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n return {\n x: xNum,\n y: yValue,\n name: `Point`,\n timeValues,\n originalItem: item,\n isValid: isValidNumericValue(xNum) && yValue !== null\n }\n })\n .filter(point => point.isValid)\n }\n \n // Validate transformed data\n if (!scatterData || scatterData.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">No valid data</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">No valid data points for scatter chart after transformation</div>\n </div>\n </div>\n )\n }\n\n const seriesKeys = Object.keys(seriesGroups)\n // Limit series to prevent performance issues with high-cardinality fields (e.g., dates)\n // If more than 20 unique series, fall back to single-series mode\n const MAX_SERIES = 20\n const hasSeries = seriesKeys.length > 1 && seriesKeys.length <= MAX_SERIES\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend && hasSeries\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsScatterChart margin={chartMargins} accessibilityLayer={false}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xAxisFormat?.label || getFieldLabel(xAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={xAxisFormat ? (value) => formatAxisValue(value, xAxisFormat) : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yAxisFormat?.label || getFieldLabel(yAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={yAxisFormat ? (value) => formatAxisValue(value, yAxisFormat) : undefined}\n label={{ value: yAxisFormat?.label || getFieldLabel(yAxisField), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <Tooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null\n // Only show the first (active) point\n const point = payload[0]?.payload\n if (!point) return null\n\n return (\n <div style={{\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n color: '#1f2937',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n padding: '8px 12px'\n }}>\n <div style={{ fontWeight: 600, marginBottom: '4px' }}>{point.name}</div>\n {/* Show time dimension values if present */}\n {point.timeValues && Object.keys(point.timeValues).length > 0 && (\n <div style={{ marginBottom: '4px', color: '#6b7280' }}>\n {Object.entries(point.timeValues).map(([field, value]) => (\n <div key={field}>{getFieldLabel(field)}: {value as string}</div>\n ))}\n </div>\n )}\n <div>{xAxisFormat?.label || getFieldLabel(xAxisField)}: {formatAxisValue(point.x, xAxisFormat)}</div>\n <div>{yAxisFormat?.label || getFieldLabel(yAxisField)}: {formatAxisValue(point.y, yAxisFormat)}</div>\n </div>\n )\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {hasSeries ? (\n // Multiple series\n seriesKeys.map((seriesKey, index) => (\n <Scatter\n key={seriesKey}\n name={seriesKey}\n data={seriesGroups[seriesKey]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))\n ) : (\n // Single series\n <Scatter\n name=\"Data\"\n data={scatterData}\n fill={(colorPalette?.colors && colorPalette.colors[0]) || CHART_COLORS[0]}\n />\n )}\n </RechartsScatterChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'ScatterChart rendering error\n return (\n <div className=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">Scatter Chart Error</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n})\n\nexport default ScatterChart"],"names":["ScatterChart","React","data","chartConfig","displayConfig","queryObject","height","colorPalette","hoveredLegend","setHoveredLegend","useState","getFieldLabel","useCubeFieldLabel","safeDisplayConfig","xAxisFormat","yAxisFormat","jsx","jsxs","xAxisField","yAxisField","seriesFields","seriesConfig","timeDimensionFields","td","scatterData","seriesGroups","seriesField","item","seriesValue","xGranularity","getFieldGranularity","xValue","formatTimeValue","yValue","parseNumericValue","xNum","isValidNumericValue","timeValues","field","granularity","key","point","seriesKeys","hasSeries","showLegend","chartMargins","CHART_MARGINS","ChartContainer","RechartsScatterChart","CartesianGrid","XAxis","value","formatAxisValue","YAxis","Tooltip","active","payload","Legend","o","seriesKey","index","Scatter","CHART_COLORS","error"],"mappings":"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"}