drizzle-cube 0.5.8 → 0.6.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 (725) hide show
  1. package/README.md +2 -0
  2. package/dist/adapters/express/index.cjs +1 -1
  3. package/dist/adapters/{adapters/express → express}/index.d.ts +3 -3
  4. package/dist/adapters/express/index.js +50 -50
  5. package/dist/adapters/fastify/index.cjs +1 -1
  6. package/dist/adapters/{adapters/fastify → fastify}/index.d.ts +3 -3
  7. package/dist/adapters/fastify/index.js +78 -78
  8. package/dist/adapters/google-BOnRIN1w.cjs +2 -0
  9. package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
  10. package/dist/adapters/{handler-Cx8QYLk6.js → handler-CfgE0JSL.js} +499 -576
  11. package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
  12. package/dist/adapters/hono/agent-handler.d.ts +9 -0
  13. package/dist/adapters/hono/index.cjs +2 -2
  14. package/dist/adapters/{adapters/hono → hono}/index.d.ts +4 -4
  15. package/dist/adapters/hono/index.js +205 -175
  16. package/dist/adapters/hono/mcp-handler.d.ts +37 -0
  17. package/dist/adapters/locale-DDvZDFVn.js +8114 -0
  18. package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
  19. package/dist/adapters/{adapters/locale.d.ts → locale.d.ts} +1 -1
  20. package/dist/adapters/mcp-tools-handlers.d.ts +18 -0
  21. package/dist/adapters/mcp-tools.cjs +1 -1
  22. package/dist/adapters/{adapters/mcp-tools.d.ts → mcp-tools.d.ts} +5 -5
  23. package/dist/adapters/mcp-tools.js +49 -38
  24. package/dist/adapters/mcp-transport-B7ddET3M.cjs +40 -0
  25. package/dist/adapters/mcp-transport-Dfuj4j4q.js +591 -0
  26. package/dist/adapters/{adapters/mcp-transport.d.ts → mcp-transport.d.ts} +3 -3
  27. package/dist/adapters/nextjs/index.cjs +1 -1
  28. package/dist/adapters/{adapters/nextjs → nextjs}/index.d.ts +3 -3
  29. package/dist/adapters/nextjs/index.js +190 -197
  30. package/dist/adapters/nextjs/mcp-handler.d.ts +36 -0
  31. package/dist/adapters/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
  32. package/dist/adapters/openai-vXvLni8v.cjs +1 -0
  33. package/dist/adapters/{adapters/types.d.ts → types.d.ts} +1 -1
  34. package/dist/adapters/{utils-D9JPLmfl.js → utils-BPWZsX7k.js} +1271 -1218
  35. package/dist/adapters/utils-_whV4fXL.cjs +128 -0
  36. package/dist/adapters/utils.cjs +1 -1
  37. package/dist/adapters/{adapters/utils.d.ts → utils.d.ts} +17 -92
  38. package/dist/adapters/utils.js +2 -2
  39. package/dist/cli/index.cjs +2 -2
  40. package/dist/client/adapters/adapterRegistry.d.ts +2 -2
  41. package/dist/client/adapters/flowModeAdapter.d.ts +2 -2
  42. package/dist/client/adapters/funnelModeAdapter.d.ts +2 -2
  43. package/dist/client/adapters/index.d.ts +9 -9
  44. package/dist/client/adapters/modeAdapter.d.ts +1 -1
  45. package/dist/client/adapters/queryModeAdapter.d.ts +3 -3
  46. package/dist/client/adapters/retentionModeAdapter.d.ts +2 -2
  47. package/dist/client/charts/ChartLoader.d.ts +3 -17
  48. package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
  49. package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
  50. package/dist/client/charts/chartConfigRegistry.d.ts +1 -1
  51. package/dist/client/charts/chartPlugin.d.ts +3 -3
  52. package/dist/client/charts/lazyChartConfigRegistry.d.ts +2 -2
  53. package/dist/client/charts.d.ts +8 -8
  54. package/dist/client/charts.js +14 -13
  55. package/dist/client/chunks/{DashboardEditModal-CjCIAT-J.js → DashboardEditModal-okVfH8ZK.js} +5296 -4544
  56. package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
  57. package/dist/client/chunks/{RetentionCombinedChart-BPkfcTa8.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
  58. package/dist/client/chunks/RetentionCombinedChart-BgbDhsPz.js.map +1 -0
  59. package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
  60. package/dist/client/chunks/RetentionHeatmap-DjXZaTPq.js.map +1 -0
  61. package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
  62. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
  63. package/dist/client/chunks/{analysis-builder-shared-CYVwSPqt.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
  64. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
  65. package/dist/client/chunks/{chart-activity-grid-DmruKPab.js → chart-activity-grid-DX0SJbxs.js} +635 -492
  66. package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
  67. package/dist/client/chunks/chart-area-of01_62R.js +775 -0
  68. package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
  69. package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
  70. package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
  71. package/dist/client/chunks/{chart-box-plot-DYKfyOI8.js → chart-box-plot-kkBixZ27.js} +2 -2
  72. package/dist/client/chunks/chart-box-plot-kkBixZ27.js.map +1 -0
  73. package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
  74. package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
  75. package/dist/client/chunks/{chart-candlestick-Dwc92Mrj.js → chart-candlestick-DZp19Tzh.js} +2 -2
  76. package/dist/client/chunks/chart-candlestick-DZp19Tzh.js.map +1 -0
  77. package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +1 -1
  78. package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
  79. package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
  80. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
  81. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
  82. package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
  83. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
  84. package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +1 -1
  85. package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +1 -1
  86. package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +1 -1
  87. package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +1 -1
  88. package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
  89. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
  90. package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +1 -1
  91. package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
  92. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
  93. package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
  94. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
  95. package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
  96. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
  97. package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
  98. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
  99. package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +1 -1
  100. package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +1 -1
  101. package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
  102. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
  103. package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
  104. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
  105. package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
  106. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
  107. package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +1 -1
  108. package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +1 -1
  109. package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +1 -1
  110. package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
  111. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
  112. package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
  113. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
  114. package/dist/client/chunks/{chart-data-table-BO4sXsim.js → chart-data-table-CKauQXme.js} +1046 -1121
  115. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
  116. package/dist/client/chunks/{chart-funnel-DnWRsmnS.js → chart-funnel-CToKSBaL.js} +184 -222
  117. package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
  118. package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
  119. package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
  120. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
  121. package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
  122. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
  123. package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
  124. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
  125. package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
  126. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
  127. package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
  128. package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
  129. package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
  130. package/dist/client/chunks/{chart-markdown-dgUetjyM.js → chart-markdown-CV75S_zL.js} +2 -2
  131. package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
  132. package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js → chart-measure-profile-Ket8fJyf.js} +7 -7
  133. package/dist/client/chunks/chart-measure-profile-Ket8fJyf.js.map +1 -0
  134. package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
  135. package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
  136. package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
  137. package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
  138. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
  139. package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
  140. package/dist/client/chunks/{chart-sankey-M3XpO_ah.js → chart-sankey-DjrvKw6K.js} +36 -39
  141. package/dist/client/chunks/chart-sankey-DjrvKw6K.js.map +1 -0
  142. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
  143. package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
  144. package/dist/client/chunks/{chart-sunburst-A_u6lqlS.js → chart-sunburst-leGpuDj7.js} +3 -3
  145. package/dist/client/chunks/chart-sunburst-leGpuDj7.js.map +1 -0
  146. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
  147. package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
  148. package/dist/client/chunks/{chart-waterfall-BuhMoagf.js → chart-waterfall-DyvQReN5.js} +7 -7
  149. package/dist/client/chunks/chart-waterfall-DyvQReN5.js.map +1 -0
  150. package/dist/client/chunks/{charts-core-jRtb0S2M.js → charts-core-DaXSt1Dd.js} +2 -2
  151. package/dist/client/chunks/charts-core-DaXSt1Dd.js.map +1 -0
  152. package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
  153. package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
  154. package/dist/client/chunks/{nl-NL-CpVs7ox3.js → nl-NL-2zTAWTej.js} +2 -1
  155. package/dist/client/chunks/{nl-NL-CpVs7ox3.js.map → nl-NL-2zTAWTej.js.map} +1 -1
  156. package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
  157. package/dist/client/chunks/{schema-visualization-DE09kQE3.js → schema-visualization-Cb_E9_Gd.js} +12 -12
  158. package/dist/client/chunks/schema-visualization-Cb_E9_Gd.js.map +1 -0
  159. package/dist/client/chunks/{useDirtyStateTracking-CoeQbprt.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
  160. package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
  161. package/dist/client/chunks/{useExplainAI-DlnXWdmz.js → useExplainAI-evnZkjCY.js} +14 -14
  162. package/dist/client/chunks/useExplainAI-evnZkjCY.js.map +1 -0
  163. package/dist/client/chunks/{utils-CTKNaXS8.js → utils-3P6z1vz5.js} +2 -2
  164. package/dist/client/chunks/utils-3P6z1vz5.js.map +1 -0
  165. package/dist/client/chunks/{vendor-CPIYyeuD.js → vendor-DSpR0IW6.js} +43 -43
  166. package/dist/client/chunks/{vendor-CPIYyeuD.js.map → vendor-DSpR0IW6.js.map} +1 -1
  167. package/dist/client/client/BatchCoordinator.d.ts +1 -1
  168. package/dist/client/client/CubeClient.d.ts +1 -1
  169. package/dist/client/components/AIAssistant/index.d.ts +3 -3
  170. package/dist/client/components/AIAssistant/utils.d.ts +1 -1
  171. package/dist/client/components/AgenticNotebook/ChatMessage.d.ts +1 -1
  172. package/dist/client/components/AgenticNotebook/NotebookCanvas.d.ts +1 -1
  173. package/dist/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +1 -1
  174. package/dist/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +2 -2
  175. package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
  176. package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
  177. package/dist/client/components/AgenticNotebook/index.d.ts +2 -2
  178. package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
  179. package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
  180. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
  181. package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +4 -4
  182. package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
  183. package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +2 -2
  184. package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +2 -2
  185. package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +2 -2
  186. package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
  187. package/dist/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +1 -1
  188. package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
  189. package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
  190. package/dist/client/components/AnalysisBuilder/AnalysisResultsPanel.d.ts +1 -1
  191. package/dist/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +1 -1
  192. package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
  193. package/dist/client/components/AnalysisBuilder/BreakdownItemCard.d.ts +1 -1
  194. package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
  195. package/dist/client/components/AnalysisBuilder/BreakdownSection.d.ts +1 -1
  196. package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
  197. package/dist/client/components/AnalysisBuilder/ExecutionPlanPanel.d.ts +1 -1
  198. package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
  199. package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +1 -1
  200. package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
  201. package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
  202. package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
  203. package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
  204. package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -2
  205. package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
  206. package/dist/client/components/AnalysisBuilder/FlowConfigPanel.d.ts +1 -1
  207. package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
  208. package/dist/client/components/AnalysisBuilder/FlowModeContent.d.ts +3 -3
  209. package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
  210. package/dist/client/components/AnalysisBuilder/FunnelBindingKeySelector.d.ts +1 -1
  211. package/dist/client/components/AnalysisBuilder/FunnelConfigPanel.d.ts +1 -1
  212. package/dist/client/components/AnalysisBuilder/FunnelModeContent.d.ts +2 -2
  213. package/dist/client/components/AnalysisBuilder/FunnelStepCard.d.ts +1 -1
  214. package/dist/client/components/AnalysisBuilder/FunnelStepList.d.ts +1 -1
  215. package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
  216. package/dist/client/components/AnalysisBuilder/MetricItemCard.d.ts +1 -1
  217. package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
  218. package/dist/client/components/AnalysisBuilder/MetricsSection.d.ts +1 -1
  219. package/dist/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +2 -2
  220. package/dist/client/components/AnalysisBuilder/RetentionModeContent.d.ts +3 -3
  221. package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
  222. package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
  223. package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
  224. package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
  225. package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
  226. package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
  227. package/dist/client/components/AnalysisBuilder/index.d.ts +1 -1
  228. package/dist/client/components/AnalysisBuilder/types.d.ts +28 -28
  229. package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
  230. package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
  231. package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +7 -2
  232. package/dist/client/components/AnalysisBuilder/utils/filterUtils.d.ts +1 -1
  233. package/dist/client/components/AnalysisBuilder/utils/index.d.ts +6 -6
  234. package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +2 -2
  235. package/dist/client/components/AnalysisBuilder/utils/recentFieldsUtils.d.ts +2 -2
  236. package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
  237. package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
  238. package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
  239. package/dist/client/components/AnalysisBuilder/utils/storageUtils.d.ts +2 -2
  240. package/dist/client/components/AnalysisBuilderLazy.d.ts +1 -1
  241. package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
  242. package/dist/client/components/AnalyticsPortlet.d.ts +1 -1
  243. package/dist/client/components/ChartTypeSelector.d.ts +2 -2
  244. package/dist/client/components/DashboardFilterPanel.d.ts +1 -1
  245. package/dist/client/components/DashboardFilters/CompactFilterBar.d.ts +1 -1
  246. package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
  247. package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +2 -2
  248. package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
  249. package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +2 -2
  250. package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
  251. package/dist/client/components/DashboardFilters/EditModeFilterList.d.ts +1 -1
  252. package/dist/client/components/DashboardFilters/FilterChip.d.ts +1 -1
  253. package/dist/client/components/DashboardFilters/FilterEditModal.d.ts +2 -2
  254. package/dist/client/components/DashboardFilters/FilterValuePopover.d.ts +1 -1
  255. package/dist/client/components/DashboardFilters/ReadOnlyFilterList.d.ts +2 -2
  256. package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
  257. package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
  258. package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
  259. package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
  260. package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
  261. package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
  262. package/dist/client/components/DashboardGrid.d.ts +2 -2
  263. package/dist/client/components/DashboardPortletCard.d.ts +2 -57
  264. package/dist/client/components/DebugModal.d.ts +2 -2
  265. package/dist/client/components/DrillBreadcrumb.d.ts +1 -1
  266. package/dist/client/components/DrillMenu.d.ts +1 -1
  267. package/dist/client/components/FloatingEditToolbar.d.ts +1 -1
  268. package/dist/client/components/MobileStackedLayout.d.ts +2 -2
  269. package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
  270. package/dist/client/components/PortletContainer.d.ts +1 -1
  271. package/dist/client/components/PortletFilterConfigModal.d.ts +1 -1
  272. package/dist/client/components/RowManagedLayout.d.ts +1 -1
  273. package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
  274. package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
  275. package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
  276. package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
  277. package/dist/client/components/TextPortletModal.d.ts +2 -2
  278. package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
  279. package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
  280. package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
  281. package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
  282. package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
  283. package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
  284. package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
  285. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
  286. package/dist/client/components/charts/ActivityGridChart.config.d.ts +1 -1
  287. package/dist/client/components/charts/ActivityGridChart.d.ts +1 -1
  288. package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
  289. package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
  290. package/dist/client/components/charts/AreaChart.config.d.ts +1 -1
  291. package/dist/client/components/charts/AreaChart.d.ts +1 -1
  292. package/dist/client/components/charts/AxisFormatControls.d.ts +4 -2
  293. package/dist/client/components/charts/BarChart.config.d.ts +1 -1
  294. package/dist/client/components/charts/BarChart.d.ts +1 -1
  295. package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
  296. package/dist/client/components/charts/BarSeries.d.ts +29 -0
  297. package/dist/client/components/charts/BoxPlotChart.config.d.ts +1 -1
  298. package/dist/client/components/charts/BoxPlotChart.d.ts +1 -1
  299. package/dist/client/components/charts/BubbleChart.config.d.ts +1 -1
  300. package/dist/client/components/charts/BubbleChart.d.ts +1 -1
  301. package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
  302. package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
  303. package/dist/client/components/charts/CandlestickChart.config.d.ts +1 -1
  304. package/dist/client/components/charts/CandlestickChart.d.ts +1 -1
  305. package/dist/client/components/charts/ChartStates.d.ts +38 -0
  306. package/dist/client/components/charts/DataTable.config.d.ts +1 -1
  307. package/dist/client/components/charts/DataTable.d.ts +1 -1
  308. package/dist/client/components/charts/FunnelChart.config.d.ts +1 -1
  309. package/dist/client/components/charts/FunnelChart.d.ts +1 -1
  310. package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
  311. package/dist/client/components/charts/FunnelViews.d.ts +16 -0
  312. package/dist/client/components/charts/GaugeChart.config.d.ts +1 -1
  313. package/dist/client/components/charts/GaugeChart.d.ts +1 -1
  314. package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
  315. package/dist/client/components/charts/HeatMapChart.config.d.ts +1 -1
  316. package/dist/client/components/charts/HeatMapChart.d.ts +1 -1
  317. package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
  318. package/dist/client/components/charts/KpiDelta.config.d.ts +1 -1
  319. package/dist/client/components/charts/KpiDelta.d.ts +1 -1
  320. package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
  321. package/dist/client/components/charts/KpiNumber.config.d.ts +1 -1
  322. package/dist/client/components/charts/KpiNumber.d.ts +1 -1
  323. package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
  324. package/dist/client/components/charts/KpiStates.d.ts +19 -0
  325. package/dist/client/components/charts/KpiText.config.d.ts +1 -1
  326. package/dist/client/components/charts/KpiText.d.ts +1 -1
  327. package/dist/client/components/charts/LineChart.config.d.ts +1 -1
  328. package/dist/client/components/charts/LineChart.d.ts +1 -1
  329. package/dist/client/components/charts/MarkdownChart.config.d.ts +1 -1
  330. package/dist/client/components/charts/MarkdownChart.d.ts +1 -1
  331. package/dist/client/components/charts/MeasureProfileChart.config.d.ts +1 -1
  332. package/dist/client/components/charts/MeasureProfileChart.d.ts +1 -1
  333. package/dist/client/components/charts/PieChart.config.d.ts +1 -1
  334. package/dist/client/components/charts/PieChart.d.ts +1 -1
  335. package/dist/client/components/charts/RadarChart.config.d.ts +1 -1
  336. package/dist/client/components/charts/RadarChart.d.ts +1 -1
  337. package/dist/client/components/charts/RadialBarChart.config.d.ts +1 -1
  338. package/dist/client/components/charts/RadialBarChart.d.ts +1 -1
  339. package/dist/client/components/charts/RetentionCombinedChart.config.d.ts +1 -1
  340. package/dist/client/components/charts/RetentionCombinedChart.d.ts +1 -1
  341. package/dist/client/components/charts/RetentionHeatmap.config.d.ts +1 -1
  342. package/dist/client/components/charts/RetentionHeatmap.d.ts +1 -1
  343. package/dist/client/components/charts/SankeyChart.config.d.ts +1 -1
  344. package/dist/client/components/charts/SankeyChart.d.ts +1 -1
  345. package/dist/client/components/charts/ScatterChart.config.d.ts +1 -1
  346. package/dist/client/components/charts/ScatterChart.d.ts +1 -1
  347. package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
  348. package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
  349. package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
  350. package/dist/client/components/charts/SunburstChart.config.d.ts +1 -1
  351. package/dist/client/components/charts/SunburstChart.d.ts +1 -1
  352. package/dist/client/components/charts/TreeMapChart.config.d.ts +1 -1
  353. package/dist/client/components/charts/TreeMapChart.d.ts +1 -1
  354. package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
  355. package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
  356. package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
  357. package/dist/client/components/charts/WaterfallChart.config.d.ts +1 -1
  358. package/dist/client/components/charts/WaterfallChart.d.ts +1 -1
  359. package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
  360. package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
  361. package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
  362. package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
  363. package/dist/client/components/charts/index.d.ts +21 -21
  364. package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
  365. package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
  366. package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
  367. package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
  368. package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
  369. package/dist/client/components/dashboard/DashboardContext.d.ts +6 -6
  370. package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
  371. package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
  372. package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
  373. package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
  374. package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
  375. package/dist/client/components/dashboard/index.d.ts +7 -7
  376. package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
  377. package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
  378. package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
  379. package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
  380. package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
  381. package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
  382. package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
  383. package/dist/client/components/shared/DateRangeFilter.d.ts +1 -1
  384. package/dist/client/components/shared/FilterBuilder.d.ts +1 -1
  385. package/dist/client/components/shared/FilterGroup.d.ts +1 -1
  386. package/dist/client/components/shared/FilterItem.d.ts +1 -1
  387. package/dist/client/components/shared/FilterValueSelector.d.ts +1 -1
  388. package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
  389. package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
  390. package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
  391. package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
  392. package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
  393. package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
  394. package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
  395. package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
  396. package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
  397. package/dist/client/components/shared/types.d.ts +8 -8
  398. package/dist/client/components/shared/utils.d.ts +7 -46
  399. package/dist/client/components.d.ts +11 -11
  400. package/dist/client/components.js +3 -3
  401. package/dist/client/hooks/agentChatStream.d.ts +39 -0
  402. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
  403. package/dist/client/hooks/dashboard/layoutUtils.d.ts +1 -1
  404. package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
  405. package/dist/client/hooks/dashboard/useGridLayoutEngine.d.ts +1 -1
  406. package/dist/client/hooks/dashboard/useRowLayoutEngine.d.ts +1 -1
  407. package/dist/client/hooks/drillNavigation.d.ts +25 -0
  408. package/dist/client/hooks/queries/index.d.ts +9 -9
  409. package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +2 -2
  410. package/dist/client/hooks/queries/useCubeMetaQuery.d.ts +2 -2
  411. package/dist/client/hooks/queries/useDryRunQuery.d.ts +2 -2
  412. package/dist/client/hooks/queries/useExplainAI.d.ts +1 -1
  413. package/dist/client/hooks/queries/useExplainQuery.d.ts +1 -1
  414. package/dist/client/hooks/queries/useFlowQuery.d.ts +1 -1
  415. package/dist/client/hooks/queries/useFunnelQuery.d.ts +1 -1
  416. package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +1 -1
  417. package/dist/client/hooks/queries/useRetentionQuery.d.ts +1 -1
  418. package/dist/client/hooks/useAgentChat.d.ts +1 -1
  419. package/dist/client/hooks/useAnalysisAI.d.ts +4 -4
  420. package/dist/client/hooks/useAnalysisBuilderHook.d.ts +27 -27
  421. package/dist/client/hooks/useAnalysisChartDefaults.d.ts +4 -4
  422. package/dist/client/hooks/useAnalysisCombinedFields.d.ts +2 -2
  423. package/dist/client/hooks/useAnalysisInitialization.d.ts +1 -1
  424. package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +3 -3
  425. package/dist/client/hooks/useAnalysisQueryExecution.d.ts +7 -7
  426. package/dist/client/hooks/useAnalysisShare.d.ts +1 -1
  427. package/dist/client/hooks/useAnalysisUIState.d.ts +2 -2
  428. package/dist/client/hooks/useDashboardHook.d.ts +2 -2
  429. package/dist/client/hooks/useDataBrowser.d.ts +5 -5
  430. package/dist/client/hooks/useDrillInteraction.d.ts +1 -1
  431. package/dist/client/hooks/useTheme.d.ts +1 -1
  432. package/dist/client/hooks/useTranslation.d.ts +1 -1
  433. package/dist/client/hooks.d.ts +11 -11
  434. package/dist/client/hooks.js +3 -3
  435. package/dist/client/icons/defaultIcons.d.ts +1 -1
  436. package/dist/client/icons/index.d.ts +3 -3
  437. package/dist/client/icons/registry.d.ts +1 -1
  438. package/dist/client/icons.js +2 -2
  439. package/dist/client/index.d.ts +74 -74
  440. package/dist/client/index.js +816 -669
  441. package/dist/client/index.js.map +1 -1
  442. package/dist/client/providers/CubeApiProvider.d.ts +3 -3
  443. package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
  444. package/dist/client/providers/CubeMetaContext.d.ts +1 -1
  445. package/dist/client/providers/CubeProvider.d.ts +7 -7
  446. package/dist/client/providers/I18nProvider.d.ts +1 -1
  447. package/dist/client/providers.d.ts +4 -4
  448. package/dist/client/providers.js +3 -3
  449. package/dist/client/schema.d.ts +2 -2
  450. package/dist/client/schema.js +1 -1
  451. package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
  452. package/dist/client/shared/chartDefaults.d.ts +4 -4
  453. package/dist/client/shared/components/QueryAnalysisPanel.d.ts +1 -1
  454. package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
  455. package/dist/client/shared/index.d.ts +7 -7
  456. package/dist/client/shared/queryTransforms.d.ts +20 -0
  457. package/dist/client/shared/types.d.ts +1 -1
  458. package/dist/client/shared/utils.d.ts +4 -6
  459. package/dist/client/stores/analysisBuilderStore.d.ts +9 -9
  460. package/dist/client/stores/dashboardStore.d.ts +3 -3
  461. package/dist/client/stores/dataBrowserStore.d.ts +1 -1
  462. package/dist/client/stores/notebookStore.d.ts +1 -1
  463. package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
  464. package/dist/client/stores/slices/coreSlice.d.ts +3 -3
  465. package/dist/client/stores/slices/flowSlice.d.ts +3 -3
  466. package/dist/client/stores/slices/funnelSlice.d.ts +3 -3
  467. package/dist/client/stores/slices/index.d.ts +7 -7
  468. package/dist/client/stores/slices/querySlice.d.ts +3 -3
  469. package/dist/client/stores/slices/retentionSlice.d.ts +3 -3
  470. package/dist/client/stores/slices/uiSlice.d.ts +2 -2
  471. package/dist/client/styles.css +1 -1
  472. package/dist/client/types/analysisConfig.d.ts +4 -4
  473. package/dist/client/types/drill.d.ts +5 -5
  474. package/dist/client/types/flow.d.ts +2 -2
  475. package/dist/client/types/funnel.d.ts +1 -1
  476. package/dist/client/types/retention.d.ts +2 -2
  477. package/dist/client/types.d.ts +12 -12
  478. package/dist/client/utils/axisValueFormatting.d.ts +32 -0
  479. package/dist/client/utils/chartUtils.d.ts +1 -1
  480. package/dist/client/utils/configMigration.d.ts +2 -2
  481. package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
  482. package/dist/client/utils/exportXlsx.d.ts +2 -2
  483. package/dist/client/utils/filterUtils.d.ts +1 -1
  484. package/dist/client/utils/funnelExecution.d.ts +2 -2
  485. package/dist/client/utils/funnelValidation.d.ts +2 -2
  486. package/dist/client/utils/index.d.ts +10 -10
  487. package/dist/client/utils/joinReachability.d.ts +1 -1
  488. package/dist/client/utils/multiQueryUtils.d.ts +1 -1
  489. package/dist/client/utils/multiQueryValidation.d.ts +1 -1
  490. package/dist/client/utils/pivotUtils.d.ts +1 -1
  491. package/dist/client/utils/shareUtils.d.ts +1 -1
  492. package/dist/client/utils/thumbnail.d.ts +1 -1
  493. package/dist/client/utils/timeValueFormatting.d.ts +32 -0
  494. package/dist/client/utils.d.ts +2 -2
  495. package/dist/client/utils.js +6 -6
  496. package/dist/client-bundle-stats.html +1 -1
  497. package/dist/mcp-app/mcp-app.html +55 -55
  498. package/dist/server/{server/adapters → adapters}/base-adapter.d.ts +81 -36
  499. package/dist/server/adapters/databend-adapter.d.ts +63 -0
  500. package/dist/server/{server/adapters → adapters}/duckdb-adapter.d.ts +6 -60
  501. package/dist/server/adapters/mysql-adapter.d.ts +65 -0
  502. package/dist/server/adapters/postgres-adapter.d.ts +55 -0
  503. package/dist/server/{server/adapters → adapters}/singlestore-adapter.d.ts +1 -1
  504. package/dist/server/adapters/snowflake-adapter.d.ts +53 -0
  505. package/dist/server/{server/adapters → adapters}/sqlite-adapter.d.ts +13 -33
  506. package/dist/server/adapters/window-function-builder.d.ts +11 -0
  507. package/dist/server/{server/agent → agent}/chart-validation.d.ts +0 -5
  508. package/dist/server/agent/handler-steps.d.ts +37 -0
  509. package/dist/server/{server/agent → agent}/handler.d.ts +3 -3
  510. package/dist/server/agent/index.d.ts +11 -0
  511. package/dist/server/{server/agent → agent}/providers/anthropic.d.ts +1 -1
  512. package/dist/server/{server/agent → agent}/providers/factory.d.ts +1 -1
  513. package/dist/server/{server/agent → agent}/providers/google.d.ts +1 -1
  514. package/dist/server/agent/providers/index.d.ts +6 -0
  515. package/dist/server/{server/agent → agent}/providers/openai.d.ts +1 -1
  516. package/dist/server/{server/agent → agent}/system-prompt.d.ts +1 -1
  517. package/dist/server/{server/agent → agent}/tools.d.ts +4 -4
  518. package/dist/server/{server/agent → agent}/types.d.ts +1 -1
  519. package/dist/server/ai/discovery-helpers.d.ts +29 -0
  520. package/dist/server/{server/ai → ai}/discovery.d.ts +6 -2
  521. package/dist/server/{server/ai → ai}/index.d.ts +6 -6
  522. package/dist/server/ai/suggestion-helpers.d.ts +33 -0
  523. package/dist/server/{server/ai → ai}/suggestion.d.ts +2 -5
  524. package/dist/server/ai/validation-helpers.d.ts +21 -0
  525. package/dist/server/{server/ai → ai}/validation.d.ts +2 -5
  526. package/dist/server/builders/analysis-utils.d.ts +106 -0
  527. package/dist/server/{server/builders → builders}/comparison-query-builder.d.ts +2 -2
  528. package/dist/server/{server/builders → builders}/cte-builder.d.ts +48 -2
  529. package/dist/server/{server/builders → builders}/date-time-builder.d.ts +7 -2
  530. package/dist/server/builders/date-time-helpers.d.ts +34 -0
  531. package/dist/server/{server/builders → builders}/filter-builder.d.ts +5 -3
  532. package/dist/server/builders/filter-operators.d.ts +23 -0
  533. package/dist/server/builders/flow-query-builder.d.ts +136 -0
  534. package/dist/server/{server/builders → builders}/funnel-query-builder.d.ts +18 -7
  535. package/dist/server/{server/builders → builders}/group-by-builder.d.ts +13 -2
  536. package/dist/server/builders/index.d.ts +13 -0
  537. package/dist/server/{server/builders → builders}/measure-builder.d.ts +46 -3
  538. package/dist/server/{server/builders → builders}/retention-query-builder.d.ts +14 -16
  539. package/dist/server/cache-providers/index.d.ts +5 -0
  540. package/dist/server/{server/cache-providers → cache-providers}/memory.d.ts +1 -1
  541. package/dist/server/{server/cache-utils.d.ts → cache-utils.d.ts} +26 -6
  542. package/dist/server/compiler-metadata.d.ts +11 -0
  543. package/dist/server/{server/compiler.d.ts → compiler.d.ts} +9 -15
  544. package/dist/server/{server/cube-utils.d.ts → cube-utils.d.ts} +29 -4
  545. package/dist/server/{server/database-utils.d.ts → database-utils.d.ts} +1 -1
  546. package/dist/server/execution/annotation-builder.d.ts +12 -0
  547. package/dist/server/execution/filter-cache-preloader.d.ts +19 -0
  548. package/dist/server/execution/mode-router.d.ts +25 -0
  549. package/dist/server/execution/query-result-cache.d.ts +21 -0
  550. package/dist/server/execution/result-post-processor.d.ts +10 -0
  551. package/dist/server/{server/executor.d.ts → executor.d.ts} +35 -32
  552. package/dist/server/{server/executors → executors}/base-executor.d.ts +2 -2
  553. package/dist/server/{server/executors → executors}/databend-executor.d.ts +2 -2
  554. package/dist/server/{server/executors → executors}/duckdb-executor.d.ts +2 -2
  555. package/dist/server/executors/explain-utils.d.ts +28 -0
  556. package/dist/server/{server/executors → executors}/index.d.ts +9 -9
  557. package/dist/server/{server/executors → executors}/mysql-executor.d.ts +2 -2
  558. package/dist/server/{server/executors → executors}/postgres-executor.d.ts +2 -2
  559. package/dist/server/{server/executors → executors}/singlestore-executor.d.ts +2 -2
  560. package/dist/server/{server/executors → executors}/snowflake-executor.d.ts +2 -2
  561. package/dist/server/{server/executors → executors}/sqlite-executor.d.ts +2 -2
  562. package/dist/server/{server/explain → explain}/databend-parser.d.ts +1 -1
  563. package/dist/server/{server/explain → explain}/duckdb-parser.d.ts +1 -1
  564. package/dist/server/explain/explain-tree.d.ts +20 -0
  565. package/dist/server/explain/index.d.ts +9 -0
  566. package/dist/server/{server/explain → explain}/mysql-parser.d.ts +1 -1
  567. package/dist/server/{server/explain → explain}/postgres-parser.d.ts +1 -1
  568. package/dist/server/{server/explain → explain}/snowflake-parser.d.ts +1 -1
  569. package/dist/server/{server/explain → explain}/sqlite-parser.d.ts +1 -1
  570. package/dist/server/{server/filter-cache.d.ts → filter-cache.d.ts} +2 -2
  571. package/dist/server/{server/gap-filler.d.ts → gap-filler.d.ts} +8 -2
  572. package/dist/server/google-BOnRIN1w.cjs +2 -0
  573. package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
  574. package/dist/server/index.cjs +179 -211
  575. package/dist/server/index.d.ts +38 -2
  576. package/dist/server/index.js +6330 -6458
  577. package/dist/server/logical-plan/cte-planner-helpers.d.ts +37 -0
  578. package/dist/server/logical-plan/cte-planner.d.ts +104 -0
  579. package/dist/server/logical-plan/filter-propagation.d.ts +44 -0
  580. package/dist/server/{server/logical-plan → logical-plan}/index.d.ts +11 -6
  581. package/dist/server/logical-plan/join-planner.d.ts +27 -0
  582. package/dist/server/{server/logical-plan → logical-plan}/logical-plan-builder.d.ts +5 -5
  583. package/dist/server/logical-plan/logical-planner.d.ts +39 -0
  584. package/dist/server/{server/logical-plan → logical-plan}/optimiser.d.ts +4 -2
  585. package/dist/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
  586. package/dist/server/logical-plan/planner-utils.d.ts +20 -0
  587. package/dist/server/{server/logical-plan → logical-plan}/types.d.ts +18 -10
  588. package/dist/server/measure-classification.d.ts +40 -0
  589. package/dist/server/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
  590. package/dist/server/openai-vXvLni8v.cjs +1 -0
  591. package/dist/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  592. package/dist/server/{server/physical-plan → physical-plan}/drizzle-sql-builder.d.ts +14 -3
  593. package/dist/server/physical-plan/index.d.ts +2 -0
  594. package/dist/server/{server/physical-plan → physical-plan}/processors/cte-processor.d.ts +2 -2
  595. package/dist/server/physical-plan/processors/index.d.ts +8 -0
  596. package/dist/server/{server/physical-plan → physical-plan}/processors/joins-processor.d.ts +2 -2
  597. package/dist/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
  598. package/dist/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
  599. package/dist/server/{server/physical-plan → physical-plan}/processors/predicates-processor.d.ts +2 -2
  600. package/dist/server/{server/physical-plan → physical-plan}/processors/selection-processor.d.ts +2 -2
  601. package/dist/server/{server/physical-plan → physical-plan}/processors/shared.d.ts +9 -4
  602. package/dist/server/{server/physical-plan → physical-plan}/processors/window-processor.d.ts +2 -2
  603. package/dist/server/query-handlers.d.ts +79 -0
  604. package/dist/server/query-modes.d.ts +28 -0
  605. package/dist/server/query-validator.d.ts +9 -0
  606. package/dist/server/{server/resolvers → resolvers}/calculated-measure-resolver.d.ts +6 -1
  607. package/dist/server/{server/resolvers → resolvers}/index.d.ts +2 -2
  608. package/dist/server/{server/resolvers → resolvers}/join-path-resolver.d.ts +7 -1
  609. package/dist/server/sql-format.d.ts +11 -0
  610. package/dist/server/{server/template-substitution.d.ts → template-substitution.d.ts} +1 -1
  611. package/dist/server/{server/types → types}/cache.d.ts +1 -1
  612. package/dist/server/{server/types → types}/cube.d.ts +22 -8
  613. package/dist/server/{server/types → types}/executor.d.ts +2 -2
  614. package/dist/server/{server/types → types}/flow.d.ts +7 -6
  615. package/dist/server/{server/types → types}/funnel.d.ts +1 -1
  616. package/dist/server/types/index.d.ts +11 -0
  617. package/dist/server/{server/types → types}/metadata.d.ts +1 -1
  618. package/dist/server/{server/types → types}/query.d.ts +4 -4
  619. package/dist/server/{server/types → types}/retention.d.ts +1 -1
  620. package/dist/server/{server/types → types}/utils.d.ts +1 -1
  621. package/dist/server/types/validation.d.ts +14 -0
  622. package/package.json +22 -7
  623. package/dist/adapters/google-DUlXeeDA.cjs +0 -2
  624. package/dist/adapters/handler-CzbCuS6_.cjs +0 -25
  625. package/dist/adapters/locale-BPB7flIG.js +0 -8249
  626. package/dist/adapters/locale-tIMrNcCr.cjs +0 -198
  627. package/dist/adapters/mcp-transport-C2QzXm6h.cjs +0 -40
  628. package/dist/adapters/mcp-transport-D0B3S1tB.js +0 -579
  629. package/dist/adapters/openai-D_U4V0kT.cjs +0 -1
  630. package/dist/adapters/utils-KV37IBIv.cjs +0 -128
  631. package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +0 -1
  632. package/dist/client/chunks/RetentionCombinedChart-BPkfcTa8.js.map +0 -1
  633. package/dist/client/chunks/RetentionHeatmap-DGzLzr7h.js.map +0 -1
  634. package/dist/client/chunks/analysis-builder-MuMIzoRq.js +0 -5367
  635. package/dist/client/chunks/analysis-builder-MuMIzoRq.js.map +0 -1
  636. package/dist/client/chunks/analysis-builder-shared-CYVwSPqt.js.map +0 -1
  637. package/dist/client/chunks/chart-activity-grid-DmruKPab.js.map +0 -1
  638. package/dist/client/chunks/chart-area-DHCPM4Em.js +0 -450
  639. package/dist/client/chunks/chart-area-DHCPM4Em.js.map +0 -1
  640. package/dist/client/chunks/chart-bar-KddciGDv.js +0 -271
  641. package/dist/client/chunks/chart-bar-KddciGDv.js.map +0 -1
  642. package/dist/client/chunks/chart-box-plot-DYKfyOI8.js.map +0 -1
  643. package/dist/client/chunks/chart-bubble-CfqiB538.js +0 -273
  644. package/dist/client/chunks/chart-bubble-CfqiB538.js.map +0 -1
  645. package/dist/client/chunks/chart-candlestick-Dwc92Mrj.js.map +0 -1
  646. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
  647. package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
  648. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
  649. package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
  650. package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
  651. package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
  652. package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
  653. package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
  654. package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
  655. package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
  656. package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
  657. package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
  658. package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
  659. package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
  660. package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
  661. package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +0 -1
  662. package/dist/client/chunks/chart-funnel-DnWRsmnS.js.map +0 -1
  663. package/dist/client/chunks/chart-gauge-CgMeqeGb.js +0 -424
  664. package/dist/client/chunks/chart-gauge-CgMeqeGb.js.map +0 -1
  665. package/dist/client/chunks/chart-heat-map-DcGm9SWK.js +0 -231
  666. package/dist/client/chunks/chart-heat-map-DcGm9SWK.js.map +0 -1
  667. package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js +0 -343
  668. package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js.map +0 -1
  669. package/dist/client/chunks/chart-kpi-number-gWYF44ol.js +0 -322
  670. package/dist/client/chunks/chart-kpi-number-gWYF44ol.js.map +0 -1
  671. package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js +0 -149
  672. package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js.map +0 -1
  673. package/dist/client/chunks/chart-line-9BEGN5Ti.js +0 -433
  674. package/dist/client/chunks/chart-line-9BEGN5Ti.js.map +0 -1
  675. package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +0 -1
  676. package/dist/client/chunks/chart-measure-profile-ClfpLs4q.js.map +0 -1
  677. package/dist/client/chunks/chart-pie-BjAIhyOi.js +0 -172
  678. package/dist/client/chunks/chart-pie-BjAIhyOi.js.map +0 -1
  679. package/dist/client/chunks/chart-radar-Dgkcl2bN.js +0 -154
  680. package/dist/client/chunks/chart-radar-Dgkcl2bN.js.map +0 -1
  681. package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js +0 -148
  682. package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js.map +0 -1
  683. package/dist/client/chunks/chart-sankey-M3XpO_ah.js.map +0 -1
  684. package/dist/client/chunks/chart-scatter-DaHYP_OL.js +0 -255
  685. package/dist/client/chunks/chart-scatter-DaHYP_OL.js.map +0 -1
  686. package/dist/client/chunks/chart-sunburst-A_u6lqlS.js.map +0 -1
  687. package/dist/client/chunks/chart-tree-map-uiwUU4nb.js +0 -298
  688. package/dist/client/chunks/chart-tree-map-uiwUU4nb.js.map +0 -1
  689. package/dist/client/chunks/chart-waterfall-BuhMoagf.js.map +0 -1
  690. package/dist/client/chunks/charts-core-jRtb0S2M.js.map +0 -1
  691. package/dist/client/chunks/schema-visualization-DE09kQE3.js.map +0 -1
  692. package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +0 -1
  693. package/dist/client/chunks/useExplainAI-DlnXWdmz.js.map +0 -1
  694. package/dist/client/chunks/utils-CTKNaXS8.js.map +0 -1
  695. package/dist/server/google-DUlXeeDA.cjs +0 -2
  696. package/dist/server/openai-D_U4V0kT.cjs +0 -1
  697. package/dist/server/server/adapters/databend-adapter.d.ts +0 -114
  698. package/dist/server/server/adapters/mysql-adapter.d.ts +0 -122
  699. package/dist/server/server/adapters/postgres-adapter.d.ts +0 -119
  700. package/dist/server/server/adapters/snowflake-adapter.d.ts +0 -116
  701. package/dist/server/server/agent/index.d.ts +0 -11
  702. package/dist/server/server/agent/providers/index.d.ts +0 -6
  703. package/dist/server/server/builders/flow-query-builder.d.ts +0 -109
  704. package/dist/server/server/builders/index.d.ts +0 -13
  705. package/dist/server/server/cache-providers/index.d.ts +0 -5
  706. package/dist/server/server/explain/index.d.ts +0 -9
  707. package/dist/server/server/index.d.ts +0 -36
  708. package/dist/server/server/logical-plan/logical-planner.d.ts +0 -232
  709. package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +0 -50
  710. package/dist/server/server/physical-plan/index.d.ts +0 -2
  711. package/dist/server/server/physical-plan/processors/index.d.ts +0 -6
  712. package/dist/server/server/types/index.d.ts +0 -11
  713. /package/dist/server/{server/agent → agent}/providers/types.d.ts +0 -0
  714. /package/dist/server/{server/ai → ai}/mcp-prompts.d.ts +0 -0
  715. /package/dist/server/{server/ai → ai}/query-schema.d.ts +0 -0
  716. /package/dist/server/{server/ai → ai}/schemas.d.ts +0 -0
  717. /package/dist/server/{server/prompts → prompts}/explain-analysis-prompt.d.ts +0 -0
  718. /package/dist/server/{server/prompts → prompts}/index.d.ts +0 -0
  719. /package/dist/server/{server/prompts → prompts}/single-step-prompt.d.ts +0 -0
  720. /package/dist/server/{server/prompts → prompts}/step0-validation-prompt.d.ts +0 -0
  721. /package/dist/server/{server/prompts → prompts}/step1-shape-prompt.d.ts +0 -0
  722. /package/dist/server/{server/prompts → prompts}/step2-complete-prompt.d.ts +0 -0
  723. /package/dist/server/{server/prompts → prompts}/types.d.ts +0 -0
  724. /package/dist/server/{server/types → types}/analysis.d.ts +0 -0
  725. /package/dist/server/{server/types → types}/core.d.ts +0 -0
@@ -0,0 +1,221 @@
1
+ import { n as e } from "./rolldown-runtime-CWhphoD1.js";
2
+ import { P as t, S as n, a as r, c as i, h as a, i as o, l as s, n as c, o as l, r as u, s as d, w as f, x as p, y as m } from "./chart-activity-grid-DX0SJbxs.js";
3
+ import h, { useCallback as g, useEffect as _, useMemo as v, useSyncExternalStore as y } from "react";
4
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
5
+ import { axisBottom as S, axisLeft as C, extent as w, max as T, scaleLinear as E, scaleOrdinal as D, scaleQuantize as O, scaleSqrt as k, select as A } from "d3";
6
+ //#region src/client/hooks/useTheme.ts
7
+ var j = {
8
+ listeners: /* @__PURE__ */ new Set(),
9
+ subscribe(e) {
10
+ return this.listeners.add(e), () => this.listeners.delete(e);
11
+ },
12
+ notify() {
13
+ this.listeners.forEach((e) => e());
14
+ }
15
+ };
16
+ p(() => {
17
+ j.notify();
18
+ });
19
+ function M() {
20
+ return {
21
+ theme: y(j.subscribe.bind(j), a, a),
22
+ setTheme: g((e) => {
23
+ m(e), j.notify();
24
+ }, [])
25
+ };
26
+ }
27
+ //#endregion
28
+ //#region src/client/components/charts/BubbleChart.render.ts
29
+ function N(e, t, n) {
30
+ if (t && e.length > 0) {
31
+ let t = e.map((e) => typeof e.color == "string" ? parseFloat(e.color) : e.color).filter((e) => !isNaN(e)), r = t.length === e.length && t.every((e) => typeof e == "number");
32
+ if (r) return {
33
+ colorScale: O().domain([Math.min(...t), Math.max(...t)]).range(n?.gradient || i),
34
+ isNumericColorField: r,
35
+ uniqueColors: []
36
+ };
37
+ let a = [...new Set(e.map((e) => String(e.color)))];
38
+ return {
39
+ colorScale: D().domain(a).range(n?.colors || d),
40
+ isNumericColorField: r,
41
+ uniqueColors: a
42
+ };
43
+ }
44
+ return {
45
+ colorScale: D().domain(["default"]).range([d[0]]),
46
+ isNumericColorField: !1,
47
+ uniqueColors: []
48
+ };
49
+ }
50
+ function P(e, t) {
51
+ let n = new Date(e);
52
+ if (isNaN(n.getTime())) return String(e);
53
+ let r = n.getUTCFullYear(), i = String(n.getUTCMonth() + 1).padStart(2, "0"), a = String(n.getUTCDate()).padStart(2, "0");
54
+ switch (t?.toLowerCase()) {
55
+ case "year": return String(r);
56
+ case "quarter": return `${r}-Q${Math.floor(n.getUTCMonth() / 3) + 1}`;
57
+ case "month": return `${r}-${i}`;
58
+ case "week":
59
+ case "day": return `${r}-${i}-${a}`;
60
+ case "hour": return `${i}-${a} ${String(n.getUTCHours()).padStart(2, "0")}:00`;
61
+ default: return `${r}-${i}`;
62
+ }
63
+ }
64
+ function F(e, t, n, r, i, a) {
65
+ let o = (e) => {
66
+ e.selectAll("line").style("stroke", a).style("stroke-dasharray", "3,3").style("opacity", .3), e.select(".domain").style("stroke", "none");
67
+ };
68
+ o(e.append("g").attr("transform", `translate(0,${i})`).call(S(t).tickSize(-i).tickFormat(() => ""))), o(e.append("g").call(C(n).tickSize(-r).tickFormat(() => "")));
69
+ }
70
+ function I(e, t, n, r, i, a, o, s) {
71
+ let { fields: c, options: l, queryObject: u, getFieldLabel: d } = e, p = u?.timeDimensions?.some((e) => e.dimension === c.xAxisField) || !1, m = u?.timeDimensions?.find((e) => e.dimension === c.xAxisField)?.granularity, h = S(n);
72
+ p ? h.tickFormat((e) => P(e, m)) : l.xAxisFormat && h.tickFormat((e) => f(e, l.xAxisFormat));
73
+ let g = t.append("g").attr("transform", `translate(0,${a})`).call(h);
74
+ g.selectAll("text").style("fill", o), g.selectAll("line, path").style("stroke", s), g.append("text").attr("x", i / 2).attr("y", 35).attr("fill", o).style("text-anchor", "middle").style("font-size", "12px").text(l.xAxisFormat?.label || d(c.xAxisField));
75
+ let _ = C(r);
76
+ l.leftYAxisFormat && _.tickFormat((e) => f(e, l.leftYAxisFormat));
77
+ let v = t.append("g").call(_);
78
+ v.selectAll("text").style("fill", o), v.selectAll("line, path").style("stroke", s), v.append("text").attr("transform", "rotate(-90)").attr("y", -35).attr("x", -a / 2).attr("fill", o).style("text-anchor", "middle").style("font-size", "12px").text(l.leftYAxisFormat?.label || d(c.yAxisField));
79
+ }
80
+ function L() {
81
+ return A("body").append("div").attr("class", "bubble-chart-tooltip").style("position", "absolute").style("padding", "8px").style("background", "rgba(0, 0, 0, 0.8)").style("color", "white").style("border-radius", "4px").style("font-size", "12px").style("pointer-events", "none").style("opacity", 0).style("z-index", 1e3);
82
+ }
83
+ function R(e, t) {
84
+ let { fields: n, options: r, getFieldLabel: i } = e, a = (e) => r.leftYAxisFormat ? f(e, r.leftYAxisFormat) : e;
85
+ return [
86
+ `<strong>${t.series || "Unknown"}</strong>`,
87
+ `${i(n.xAxisField)}: ${t.xLabel || (r.xAxisFormat ? f(t.x, r.xAxisFormat) : t.x)}`,
88
+ `${i(n.yAxisField)}: ${a(t.y)}`,
89
+ `${i(n.sizeFieldName)}: ${a(t.size)}`,
90
+ n.colorFieldName && t.color ? `${i(n.colorFieldName)}: ${t.color}` : ""
91
+ ].filter(Boolean).join("<br>");
92
+ }
93
+ function z(e, t, n, r) {
94
+ t.on("mouseover", function(t, i) {
95
+ A(this).transition().duration(200).style("opacity", 1).attr("r", r(i.size) * 1.1), n.html(R(e, i)).style("left", t.pageX + 10 + "px").style("top", t.pageY - 10 + "px").transition().duration(200).style("opacity", 1);
96
+ }).on("mousemove", function(e) {
97
+ n.style("left", e.pageX + 10 + "px").style("top", e.pageY - 10 + "px");
98
+ }).on("mouseout", function(t, i) {
99
+ A(this).transition().duration(200).style("opacity", e.options.bubbleOpacity).attr("r", r(i.size)), n.transition().duration(200).style("opacity", 0);
100
+ });
101
+ }
102
+ function B(e, t, n, r, a, o) {
103
+ let { bubbleData: s, fields: c, options: l, colorPalette: u, getFieldLabel: d } = e, p = Math.min(...s.map((e) => e.color)), m = Math.max(...s.map((e) => e.color)), h = (e) => l.leftYAxisFormat ? f(e, l.leftYAxisFormat) : e.toFixed(2), g = n.append("g").attr("class", "color-legend").attr("transform", `translate(${r / 2 - 200 / 2}, ${a + 60})`), _ = t.append("defs").append("linearGradient").attr("id", "color-scale-gradient").attr("x1", "0%").attr("y1", "0%").attr("x2", "100%").attr("y2", "0%"), v = u?.gradient || i;
104
+ v.forEach((e, t) => {
105
+ _.append("stop").attr("offset", `${t / (v.length - 1) * 100}%`).attr("stop-color", e);
106
+ }), g.append("rect").attr("width", 200).attr("height", 20).style("fill", "url(#color-scale-gradient)").style("stroke", "#ccc").style("stroke-width", 1), g.append("text").attr("x", 0).attr("y", 35).attr("text-anchor", "start").style("font-size", "11px").style("fill", o).text(h(p)), g.append("text").attr("x", 200).attr("y", 35).attr("text-anchor", "end").style("font-size", "11px").style("fill", o).text(h(m)), g.append("text").attr("x", 200 / 2).attr("y", -5).attr("text-anchor", "middle").style("font-size", "12px").style("font-weight", "bold").style("fill", o).text(d(c.colorFieldName));
107
+ }
108
+ function V(e, t, n, r, i, a, o, s) {
109
+ let { fields: c, options: l } = e;
110
+ if (a.length === 0) return;
111
+ let u = t.append("g").attr("class", "legend").attr("transform", `translate(${n / 2 - a.length * 80 / 2}, ${r + 60})`).selectAll(".legend-item").data(a).enter().append("g").attr("class", "legend-item").attr("transform", (e, t) => `translate(${t * 80}, 0)`).style("cursor", "pointer");
112
+ u.append("circle").attr("cx", 5).attr("cy", 5).attr("r", 5).style("fill", (e) => o(e)).style("opacity", l.bubbleOpacity), u.append("text").attr("x", 15).attr("y", 5).attr("dy", ".35em").style("font-size", "11px").style("fill", i).text((e) => String(e)), u.on("mouseover", function(e, t) {
113
+ s.transition().duration(200).style("opacity", (e) => c.colorFieldName && String(e.color) === t ? 1 : .2);
114
+ }).on("mouseout", function() {
115
+ s.transition().duration(200).style("opacity", l.bubbleOpacity);
116
+ });
117
+ }
118
+ function H(e) {
119
+ let { svgEl: t, bubbleData: n, fields: r, options: i, dimensions: a, colorPalette: c, isDark: l } = e;
120
+ if (A(t).selectAll("*").remove(), n.length === 0) return;
121
+ let u = {
122
+ ...s,
123
+ left: s.left + 30,
124
+ bottom: i.showLegend && r.colorFieldName ? 100 : 40
125
+ }, f = a.width - u.left - u.right, p = a.height - u.top - u.bottom, m = A(t).attr("width", a.width).attr("height", a.height), h = m.append("g").attr("transform", `translate(${u.left},${u.top})`), g = E().domain(w(n, (e) => e.x)).range([0, f]).nice(), _ = E().domain(w(n, (e) => e.y)).range([p, 0]).nice(), v = k().domain([0, T(n, (e) => e.size)]).range([i.minBubbleSize, i.maxBubbleSize]), { colorScale: y, isNumericColorField: b, uniqueColors: x } = N(n, r.colorFieldName, c), { textColor: S, gridColor: C } = o(l);
126
+ i.showGrid && F(h, g, _, f, p, C), I(e, h, g, _, f, p, S, C);
127
+ let D = L(), O = h.selectAll(".bubble").data(n).enter().append("circle").attr("class", "bubble").attr("cx", (e) => g(e.x)).attr("cy", (e) => _(e.y)).attr("r", (e) => v(e.size)).style("fill", (e) => r.colorFieldName && e.color !== void 0 ? y(b ? e.color : String(e.color)) : d[0]).style("opacity", i.bubbleOpacity).style("stroke", "#fff").style("stroke-width", 1).style("cursor", "pointer");
128
+ return i.showTooltip && z(e, O, D, v), i.showLegend && r.colorFieldName && (b ? B(e, m, h, f, p, S) : V(e, h, f, p, S, x, y, O)), () => {
129
+ D.remove();
130
+ };
131
+ }
132
+ //#endregion
133
+ //#region src/client/components/charts/BubbleChart.tsx
134
+ var U = /* @__PURE__ */ e({ default: () => W }), W = h.memo(function({ data: e, chartConfig: i, displayConfig: a = {}, queryObject: o, height: s = "100%", colorPalette: d }) {
135
+ let { t: f } = t(), p = h.useRef(null), { containerRef: m, dimensions: g, dimensionsReady: y } = l(), { theme: S } = M(), C = n(), w = v(() => c(a), [a]);
136
+ return _(() => {
137
+ if (!e || e.length === 0 || !p.current || !y || g.width === 0) return;
138
+ let t = u(i);
139
+ if (!t) return;
140
+ let n = r(e, t, o);
141
+ return H({
142
+ svgEl: p.current,
143
+ bubbleData: n,
144
+ fields: t,
145
+ options: w,
146
+ dimensions: g,
147
+ queryObject: o,
148
+ colorPalette: d,
149
+ isDark: S !== "light",
150
+ getFieldLabel: C
151
+ });
152
+ }, [
153
+ e,
154
+ i,
155
+ w,
156
+ o,
157
+ g,
158
+ y,
159
+ d,
160
+ S,
161
+ C
162
+ ]), !e || e.length === 0 ? /* @__PURE__ */ b("div", {
163
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
164
+ style: { height: s },
165
+ children: /* @__PURE__ */ x("div", {
166
+ className: "dc:text-center",
167
+ children: [/* @__PURE__ */ b("div", {
168
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
169
+ children: f("chart.runtime.noData")
170
+ }), /* @__PURE__ */ b("div", {
171
+ className: "dc:text-xs text-dc-text-secondary",
172
+ children: f("chart.runtime.noDataHint.bubble")
173
+ })]
174
+ })
175
+ }) : i?.xAxis && i?.yAxis && i?.series ? /* @__PURE__ */ b("div", {
176
+ className: "dc:w-full dc:flex-1 dc:flex dc:flex-col dc:relative",
177
+ style: {
178
+ height: s,
179
+ minHeight: "250px",
180
+ overflow: "hidden"
181
+ },
182
+ children: /* @__PURE__ */ x("div", {
183
+ ref: m,
184
+ className: "dc:w-full dc:h-full dc:relative",
185
+ children: [/* @__PURE__ */ b("svg", {
186
+ ref: p,
187
+ className: "dc:w-full dc:h-full"
188
+ }), !y && /* @__PURE__ */ b("div", {
189
+ className: "dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center",
190
+ children: /* @__PURE__ */ b("div", {
191
+ className: "text-dc-text-muted dc:text-sm",
192
+ children: f("chart.runtime.measuringDimensions")
193
+ })
194
+ })]
195
+ })
196
+ }) : /* @__PURE__ */ b("div", {
197
+ className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
198
+ style: { height: s },
199
+ children: /* @__PURE__ */ x("div", {
200
+ className: "dc:text-center",
201
+ children: [
202
+ /* @__PURE__ */ b("div", {
203
+ className: "dc:text-sm dc:font-semibold dc:mb-1",
204
+ children: f("chart.runtime.activityGridConfigRequired")
205
+ }),
206
+ /* @__PURE__ */ b("div", {
207
+ className: "dc:text-xs",
208
+ children: f("chart.runtime.configErrorHint.bubbleRequired")
209
+ }),
210
+ /* @__PURE__ */ b("div", {
211
+ className: "dc:text-xs dc:mt-1",
212
+ children: f("chart.runtime.configErrorHint.bubbleOptional")
213
+ })
214
+ ]
215
+ })
216
+ });
217
+ });
218
+ //#endregion
219
+ export { M as n, U as t };
220
+
221
+ //# sourceMappingURL=chart-bubble-B2he1--4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-bubble-B2he1--4.js","names":[],"sources":["../../../src/client/hooks/useTheme.ts","../../../src/client/components/charts/BubbleChart.render.ts","../../../src/client/components/charts/BubbleChart.tsx"],"sourcesContent":["/**\n * useTheme - External Theme State Hook\n *\n * Uses React 18's useSyncExternalStore to prevent parent component re-renders.\n * The theme state is stored externally and changes are propagated through\n * a subscribe/notify pattern.\n *\n * This prevents the ThemeToggle component from causing Layout re-renders.\n */\n\nimport { useSyncExternalStore, useCallback } from 'react'\nimport { getTheme, setTheme as setThemeUtil, watchThemeChanges, type Theme } from '../theme/index.js'\n\n// External store for theme state\nconst themeStore = {\n listeners: new Set<() => void>(),\n\n subscribe(listener: () => void) {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n },\n\n notify() {\n this.listeners.forEach(listener => listener())\n }\n}\n\n// Watch theme changes from DOM/system and notify subscribers\nwatchThemeChanges(() => {\n themeStore.notify()\n})\n\n/**\n * Hook to access and update theme\n *\n * Returns current theme and a setter function.\n * Only components using this hook will re-render on theme changes.\n */\nexport function useTheme() {\n // Subscribe to external theme store\n const theme = useSyncExternalStore(\n themeStore.subscribe.bind(themeStore),\n getTheme, // Client-side snapshot\n getTheme // Server-side snapshot (SSR)\n )\n\n // Stable setter function\n const setTheme = useCallback((newTheme: Theme) => {\n setThemeUtil(newTheme)\n themeStore.notify()\n }, [])\n\n return { theme, setTheme }\n}\n","/**\n * D3 rendering for BubbleChart, extracted from the component's render effect.\n *\n * The effect orchestrates these pure-ish drawing helpers. Behaviour matches the\n * original inline D3 exactly; only the structure changed (one function per\n * concern) to keep each helper's complexity low.\n */\nimport {\n select,\n scaleLinear,\n scaleSqrt,\n scaleOrdinal,\n scaleQuantize,\n extent,\n max,\n axisBottom,\n axisLeft,\n type Selection,\n type ScaleLinear,\n type ScalePower,\n type ScaleOrdinal,\n type ScaleQuantize\n} from 'd3'\nimport { CHART_COLORS, CHART_COLORS_GRADIENT, CHART_MARGINS } from '../../utils/chartConstants.js'\nimport { formatAxisValue } from '../../utils/chartUtils.js'\nimport { resolveThemeColors } from './BubbleChart.helpers.js'\nimport type { BubbleData, BubbleDisplayOptions, BubbleFields } from './BubbleChart.helpers.js'\nimport type { ColorPalette, CubeQuery } from '../../types.js'\n\ntype ColorScale = ScaleOrdinal<string, string> | ScaleQuantize<string>\ntype G = Selection<SVGGElement, unknown, null, undefined>\n\nexport interface BubbleRenderContext {\n svgEl: SVGSVGElement\n bubbleData: BubbleData[]\n fields: BubbleFields\n options: BubbleDisplayOptions\n dimensions: { width: number; height: number }\n queryObject: CubeQuery | undefined\n colorPalette?: ColorPalette\n isDark: boolean\n getFieldLabel: (field: string) => string\n}\n\ninterface ColorScaleResult {\n colorScale: ColorScale\n isNumericColorField: boolean\n uniqueColors: string[]\n}\n\n/** Build the bubble fill colour scale (numeric → quantize, categorical → ordinal). */\nfunction buildColorScale(\n bubbleData: BubbleData[],\n colorFieldName: string | undefined,\n colorPalette: ColorPalette | undefined\n): ColorScaleResult {\n if (colorFieldName && bubbleData.length > 0) {\n const colorValues = bubbleData\n .map((item) => (typeof item.color === 'string' ? parseFloat(item.color) : item.color))\n .filter((val): val is number => !isNaN(val as number))\n const isNumericColorField =\n colorValues.length === bubbleData.length && colorValues.every((val) => typeof val === 'number')\n\n if (isNumericColorField) {\n const colorScale = scaleQuantize<string>()\n .domain([Math.min(...colorValues), Math.max(...colorValues)])\n .range(colorPalette?.gradient || CHART_COLORS_GRADIENT)\n return { colorScale, isNumericColorField, uniqueColors: [] }\n }\n\n const uniqueColors = [...new Set(bubbleData.map((d) => String(d.color)))]\n const colorScale = scaleOrdinal<string>().domain(uniqueColors).range(colorPalette?.colors || CHART_COLORS)\n return { colorScale, isNumericColorField, uniqueColors }\n }\n\n const colorScale = scaleOrdinal<string>().domain(['default']).range([CHART_COLORS[0]])\n return { colorScale, isNumericColorField: false, uniqueColors: [] }\n}\n\n/** Format an x-axis tick for a time dimension based on its granularity. */\nfunction formatTimeTick(value: number | { valueOf(): number }, granularity: string | undefined): string {\n const date = new Date(value as number)\n if (isNaN(date.getTime())) return String(value)\n const yr = date.getUTCFullYear()\n const mo = String(date.getUTCMonth() + 1).padStart(2, '0')\n const dy = String(date.getUTCDate()).padStart(2, '0')\n switch (granularity?.toLowerCase()) {\n case 'year':\n return String(yr)\n case 'quarter':\n return `${yr}-Q${Math.floor(date.getUTCMonth() / 3) + 1}`\n case 'month':\n return `${yr}-${mo}`\n case 'week':\n case 'day':\n return `${yr}-${mo}-${dy}`\n case 'hour':\n return `${mo}-${dy} ${String(date.getUTCHours()).padStart(2, '0')}:00`\n default:\n return `${yr}-${mo}`\n }\n}\n\n/** Draw the dashed background grid. */\nfunction drawGrid(\n g: G,\n xScale: ScaleLinear<number, number>,\n yScale: ScaleLinear<number, number>,\n width: number,\n chartHeight: number,\n gridColor: string\n) {\n const styleGrid = (grid: G) => {\n grid.selectAll('line').style('stroke', gridColor).style('stroke-dasharray', '3,3').style('opacity', 0.3)\n grid.select('.domain').style('stroke', 'none')\n }\n const xGrid = g\n .append('g')\n .attr('transform', `translate(0,${chartHeight})`)\n .call(axisBottom(xScale).tickSize(-chartHeight).tickFormat(() => '')) as unknown as G\n styleGrid(xGrid)\n const yGrid = g.append('g').call(axisLeft(yScale).tickSize(-width).tickFormat(() => '')) as unknown as G\n styleGrid(yGrid)\n}\n\n/** Draw X and Y axes with labels and theme-aware styling. */\nfunction drawAxes(\n ctx: BubbleRenderContext,\n g: G,\n xScale: ScaleLinear<number, number>,\n yScale: ScaleLinear<number, number>,\n width: number,\n chartHeight: number,\n textColor: string,\n gridColor: string\n) {\n const { fields, options, queryObject, getFieldLabel } = ctx\n const isTimeDimension =\n queryObject?.timeDimensions?.some((td: { dimension: string }) => td.dimension === fields.xAxisField) || false\n const xGranularity = queryObject?.timeDimensions?.find(\n (td: { dimension: string; granularity?: string }) => td.dimension === fields.xAxisField\n )?.granularity\n\n const xAxisGenerator = axisBottom(xScale)\n if (isTimeDimension) {\n xAxisGenerator.tickFormat((d) => formatTimeTick(d as number, xGranularity))\n } else if (options.xAxisFormat) {\n xAxisGenerator.tickFormat((d) => formatAxisValue(d as number, options.xAxisFormat))\n }\n\n const xAxis = g.append('g').attr('transform', `translate(0,${chartHeight})`).call(xAxisGenerator)\n xAxis.selectAll('text').style('fill', textColor)\n xAxis.selectAll('line, path').style('stroke', gridColor)\n xAxis\n .append('text')\n .attr('x', width / 2)\n .attr('y', 35)\n .attr('fill', textColor)\n .style('text-anchor', 'middle')\n .style('font-size', '12px')\n .text(options.xAxisFormat?.label || getFieldLabel(fields.xAxisField))\n\n const yAxisGenerator = axisLeft(yScale)\n if (options.leftYAxisFormat) {\n yAxisGenerator.tickFormat((d) => formatAxisValue(d as number, options.leftYAxisFormat))\n }\n const yAxis = g.append('g').call(yAxisGenerator)\n yAxis.selectAll('text').style('fill', textColor)\n yAxis.selectAll('line, path').style('stroke', gridColor)\n yAxis\n .append('text')\n .attr('transform', 'rotate(-90)')\n .attr('y', -35)\n .attr('x', -chartHeight / 2)\n .attr('fill', textColor)\n .style('text-anchor', 'middle')\n .style('font-size', '12px')\n .text(options.leftYAxisFormat?.label || getFieldLabel(fields.yAxisField))\n}\n\n/** Create the floating HTML tooltip element. */\nfunction createTooltip() {\n return select('body')\n .append('div')\n .attr('class', 'bubble-chart-tooltip')\n .style('position', 'absolute')\n .style('padding', '8px')\n .style('background', 'rgba(0, 0, 0, 0.8)')\n .style('color', 'white')\n .style('border-radius', '4px')\n .style('font-size', '12px')\n .style('pointer-events', 'none')\n .style('opacity', 0)\n .style('z-index', 1000)\n}\n\ntype Tooltip = ReturnType<typeof createTooltip>\ntype Bubbles = Selection<SVGCircleElement, BubbleData, SVGGElement, unknown>\n\n/** Compose the multi-line tooltip HTML for a bubble. */\nfunction bubbleTooltipHtml(ctx: BubbleRenderContext, d: BubbleData): string {\n const { fields, options, getFieldLabel } = ctx\n const fmt = (v: number) => (options.leftYAxisFormat ? formatAxisValue(v, options.leftYAxisFormat) : v)\n return [\n `<strong>${d.series || 'Unknown'}</strong>`,\n `${getFieldLabel(fields.xAxisField)}: ${d.xLabel || (options.xAxisFormat ? formatAxisValue(d.x, options.xAxisFormat) : d.x)}`,\n `${getFieldLabel(fields.yAxisField)}: ${fmt(d.y)}`,\n `${getFieldLabel(fields.sizeFieldName)}: ${fmt(d.size)}`,\n fields.colorFieldName && d.color ? `${getFieldLabel(fields.colorFieldName)}: ${d.color}` : ''\n ]\n .filter(Boolean)\n .join('<br>')\n}\n\n/** Attach hover handlers showing/hiding the tooltip and growing the bubble. */\nfunction attachBubbleHover(\n ctx: BubbleRenderContext,\n bubbles: Bubbles,\n tooltip: Tooltip,\n sizeScale: ScalePower<number, number>\n) {\n bubbles\n .on('mouseover', function (event, d) {\n select(this).transition().duration(200).style('opacity', 1).attr('r', sizeScale(d.size) * 1.1)\n tooltip\n .html(bubbleTooltipHtml(ctx, d))\n .style('left', event.pageX + 10 + 'px')\n .style('top', event.pageY - 10 + 'px')\n .transition()\n .duration(200)\n .style('opacity', 1)\n })\n .on('mousemove', function (event) {\n tooltip.style('left', event.pageX + 10 + 'px').style('top', event.pageY - 10 + 'px')\n })\n .on('mouseout', function (_event, d) {\n select(this).transition().duration(200).style('opacity', ctx.options.bubbleOpacity).attr('r', sizeScale(d.size))\n tooltip.transition().duration(200).style('opacity', 0)\n })\n}\n\n/** Draw the gradient legend for a numeric colour field. */\nfunction drawNumericLegend(\n ctx: BubbleRenderContext,\n svg: Selection<SVGSVGElement, unknown, null, undefined>,\n g: G,\n width: number,\n chartHeight: number,\n textColor: string\n) {\n const { bubbleData, fields, options, colorPalette, getFieldLabel } = ctx\n const legendWidth = 200\n const legendHeight = 20\n const minValue = Math.min(...bubbleData.map((d) => d.color as number))\n const maxValue = Math.max(...bubbleData.map((d) => d.color as number))\n const fmt = (v: number) => (options.leftYAxisFormat ? formatAxisValue(v, options.leftYAxisFormat) : v.toFixed(2))\n\n const legend = g\n .append('g')\n .attr('class', 'color-legend')\n .attr('transform', `translate(${width / 2 - legendWidth / 2}, ${chartHeight + 60})`)\n\n const gradient = svg\n .append('defs')\n .append('linearGradient')\n .attr('id', 'color-scale-gradient')\n .attr('x1', '0%').attr('y1', '0%').attr('x2', '100%').attr('y2', '0%')\n const gradientColors = colorPalette?.gradient || CHART_COLORS_GRADIENT\n gradientColors.forEach((color, i) => {\n gradient.append('stop').attr('offset', `${(i / (gradientColors.length - 1)) * 100}%`).attr('stop-color', color)\n })\n\n legend.append('rect')\n .attr('width', legendWidth).attr('height', legendHeight)\n .style('fill', 'url(#color-scale-gradient)').style('stroke', '#ccc').style('stroke-width', 1)\n legend.append('text')\n .attr('x', 0).attr('y', legendHeight + 15).attr('text-anchor', 'start')\n .style('font-size', '11px').style('fill', textColor).text(fmt(minValue))\n legend.append('text')\n .attr('x', legendWidth).attr('y', legendHeight + 15).attr('text-anchor', 'end')\n .style('font-size', '11px').style('fill', textColor).text(fmt(maxValue))\n legend.append('text')\n .attr('x', legendWidth / 2).attr('y', -5).attr('text-anchor', 'middle')\n .style('font-size', '12px').style('font-weight', 'bold').style('fill', textColor)\n .text(getFieldLabel(fields.colorFieldName!))\n}\n\n/** Draw the categorical legend (one swatch per series) with hover highlighting. */\nfunction drawCategoricalLegend(\n ctx: BubbleRenderContext,\n g: G,\n width: number,\n chartHeight: number,\n textColor: string,\n uniqueColors: string[],\n colorScale: ScaleOrdinal<string, string>,\n bubbles: Bubbles\n) {\n const { fields, options } = ctx\n if (uniqueColors.length === 0) return\n\n const legend = g\n .append('g')\n .attr('class', 'legend')\n .attr('transform', `translate(${width / 2 - (uniqueColors.length * 80) / 2}, ${chartHeight + 60})`)\n\n const legendItem = legend\n .selectAll('.legend-item')\n .data(uniqueColors)\n .enter()\n .append('g')\n .attr('class', 'legend-item')\n .attr('transform', (_d, i) => `translate(${i * 80}, 0)`)\n .style('cursor', 'pointer')\n\n legendItem.append('circle')\n .attr('cx', 5).attr('cy', 5).attr('r', 5)\n .style('fill', (d) => colorScale(d as string)).style('opacity', options.bubbleOpacity)\n legendItem.append('text')\n .attr('x', 15).attr('y', 5).attr('dy', '.35em')\n .style('font-size', '11px').style('fill', textColor).text((d) => String(d))\n\n legendItem\n .on('mouseover', function (_event, legendKey) {\n bubbles.transition().duration(200).style('opacity', (d) =>\n fields.colorFieldName && String(d.color) === legendKey ? 1 : 0.2\n )\n })\n .on('mouseout', function () {\n bubbles.transition().duration(200).style('opacity', options.bubbleOpacity)\n })\n}\n\n/**\n * Render the bubble chart into the given SVG element. Returns a cleanup function\n * that removes the floating tooltip. Returns undefined when there is nothing to draw.\n */\nexport function renderBubbleChart(ctx: BubbleRenderContext): (() => void) | undefined {\n const { svgEl, bubbleData, fields, options, dimensions, colorPalette, isDark } = ctx\n\n select(svgEl).selectAll('*').remove()\n if (bubbleData.length === 0) return undefined\n\n const margin = {\n ...CHART_MARGINS,\n left: CHART_MARGINS.left + 30,\n bottom: options.showLegend && fields.colorFieldName ? 100 : 40\n }\n const width = dimensions.width - margin.left - margin.right\n const chartHeight = dimensions.height - margin.top - margin.bottom\n\n const svg = select(svgEl).attr('width', dimensions.width).attr('height', dimensions.height)\n const g = svg.append('g').attr('transform', `translate(${margin.left},${margin.top})`)\n\n const xScale = scaleLinear().domain(extent(bubbleData, (d) => d.x) as [number, number]).range([0, width]).nice()\n const yScale = scaleLinear().domain(extent(bubbleData, (d) => d.y) as [number, number]).range([chartHeight, 0]).nice()\n const sizeScale = scaleSqrt()\n .domain([0, max(bubbleData, (d) => d.size) as number])\n .range([options.minBubbleSize, options.maxBubbleSize])\n\n const { colorScale, isNumericColorField, uniqueColors } = buildColorScale(\n bubbleData,\n fields.colorFieldName,\n colorPalette\n )\n const { textColor, gridColor } = resolveThemeColors(isDark)\n\n if (options.showGrid) {\n drawGrid(g, xScale, yScale, width, chartHeight, gridColor)\n }\n drawAxes(ctx, g, xScale, yScale, width, chartHeight, textColor, gridColor)\n\n const tooltip = createTooltip()\n\n const bubbles = g\n .selectAll('.bubble')\n .data(bubbleData)\n .enter()\n .append('circle')\n .attr('class', 'bubble')\n .attr('cx', (d) => xScale(d.x))\n .attr('cy', (d) => yScale(d.y))\n .attr('r', (d) => sizeScale(d.size))\n .style('fill', (d) => {\n if (fields.colorFieldName && d.color !== undefined) {\n return isNumericColorField\n ? (colorScale as ScaleQuantize<string>)(d.color as number)\n : (colorScale as ScaleOrdinal<string, string>)(String(d.color))\n }\n return CHART_COLORS[0]\n })\n .style('opacity', options.bubbleOpacity)\n .style('stroke', '#fff')\n .style('stroke-width', 1)\n .style('cursor', 'pointer') as Bubbles\n\n if (options.showTooltip) {\n attachBubbleHover(ctx, bubbles, tooltip, sizeScale)\n }\n\n if (options.showLegend && fields.colorFieldName) {\n if (isNumericColorField) {\n drawNumericLegend(ctx, svg, g, width, chartHeight, textColor)\n } else {\n drawCategoricalLegend(ctx, g, width, chartHeight, textColor, uniqueColors, colorScale as ScaleOrdinal<string, string>, bubbles)\n }\n }\n\n return () => {\n tooltip.remove()\n }\n}\n","import React, { useEffect, useMemo } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation.js'\nimport { transition as _transition } from 'd3'\n// _transition import is for side effects only - it extends Selection.prototype with .transition()\nvoid _transition\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel.js'\nimport { useTheme } from '../../hooks/useTheme.js'\nimport { useChartDimensions } from './useChartDimensions.js'\nimport {\n resolveBubbleDisplayOptions,\n resolveBubbleFields,\n transformBubbleData\n} from './BubbleChart.helpers.js'\nimport { renderBubbleChart } from './BubbleChart.render.js'\nimport type { ChartProps } from '../../types.js'\n\nconst BubbleChart = React.memo(function BubbleChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\n const svgRef = React.useRef<SVGSVGElement | null>(null)\n const { containerRef, dimensions, dimensionsReady } = useChartDimensions()\n const { theme } = useTheme()\n const getFieldLabel = useCubeFieldLabel()\n\n // Memoize display options to keep the render effect dependencies stable\n const options = useMemo(() => resolveBubbleDisplayOptions(displayConfig), [displayConfig])\n\n useEffect(() => {\n if (!data || data.length === 0 || !svgRef.current || !dimensionsReady || dimensions.width === 0) {\n return\n }\n\n const fields = resolveBubbleFields(chartConfig)\n if (!fields) return\n\n const bubbleData = transformBubbleData(data as Record<string, any>[], fields, queryObject)\n\n return renderBubbleChart({\n svgEl: svgRef.current,\n bubbleData,\n fields,\n options,\n dimensions,\n queryObject,\n colorPalette,\n isDark: theme !== 'light',\n getFieldLabel\n })\n }, [data, chartConfig, options, queryObject, dimensions, dimensionsReady, colorPalette, theme, getFieldLabel])\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\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.bubble')}</div>\n </div>\n </div>\n )\n }\n\n // Validate that we have required fields\n const hasValidConfig = chartConfig?.xAxis && chartConfig?.yAxis && chartConfig?.series\n if (!hasValidConfig) {\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\">{t('chart.runtime.activityGridConfigRequired')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.bubbleRequired')}</div>\n <div className=\"dc:text-xs dc:mt-1\">{t('chart.runtime.configErrorHint.bubbleOptional')}</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"dc:w-full dc:flex-1 dc:flex dc:flex-col dc:relative\" style={{ height, minHeight: '250px', overflow: 'hidden' }}>\n <div ref={containerRef} className=\"dc:w-full dc:h-full dc:relative\">\n <svg ref={svgRef} className=\"dc:w-full dc:h-full\" />\n {!dimensionsReady && (\n <div className=\"dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center\">\n <div className=\"text-dc-text-muted dc:text-sm\">{t('chart.runtime.measuringDimensions')}</div>\n </div>\n )}\n </div>\n </div>\n )\n})\n\nexport default BubbleChart\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { n as e } from "./rolldown-runtime-CWhphoD1.js";
2
- import { k as t, y as n } from "./chart-activity-grid-DmruKPab.js";
2
+ import { P as t, w as n } from "./chart-activity-grid-DX0SJbxs.js";
3
3
  import r, { useLayoutEffect as i, useMemo as a, useRef as o, useState as s } from "react";
4
4
  import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
5
5
  //#region src/client/components/charts/CandlestickChart.tsx
@@ -300,4 +300,4 @@ var y = r.memo(function({ data: e, chartConfig: r, displayConfig: c = {}, height
300
300
  //#endregion
301
301
  export { d as t };
302
302
 
303
- //# sourceMappingURL=chart-candlestick-Dwc92Mrj.js.map
303
+ //# sourceMappingURL=chart-candlestick-DZp19Tzh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-candlestick-DZp19Tzh.js","names":[],"sources":["../../../src/client/components/charts/CandlestickChart.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation.js'\nimport { formatAxisValue } from '../../utils/chartUtils.js'\nimport type { ChartProps } from '../../types.js'\n\nconst BULL_COLOR_DEFAULT = '#22c55e'\nconst BEAR_COLOR_DEFAULT = '#ef4444'\nconst WICK_COLOR = '#94a3b8'\nconst MAX_CANDLES = 200\n\ninterface CandleData {\n label: string\n open: number\n close: number\n high: number\n low: number\n isBullish: boolean\n originalIndex: number\n}\n\nfunction parseNum(v: unknown): number | null {\n if (v === undefined || v === null) return null\n const n = typeof v === 'number' ? v : parseFloat(String(v))\n return isNaN(n) ? null : n\n}\n\nfunction Candle({\n x,\n candleWidth,\n openY,\n closeY,\n highY,\n lowY,\n isBullish,\n bullColor,\n bearColor,\n showWicks,\n label,\n}: {\n x: number\n candleWidth: number\n openY: number\n closeY: number\n highY: number\n lowY: number\n isBullish: boolean\n bullColor: string\n bearColor: string\n showWicks: boolean\n label: string\n}) {\n const fill = isBullish ? bullColor : bearColor\n const bodyTop = Math.min(openY, closeY)\n const bodyBottom = Math.max(openY, closeY)\n const bodyHeight = Math.max(bodyBottom - bodyTop, 1)\n const halfWidth = candleWidth / 2\n\n return (\n <g data-testid={`candle-${label}`}>\n <rect\n x={x - halfWidth}\n y={bodyTop}\n width={candleWidth}\n height={bodyHeight}\n fill={fill}\n data-testid={`candle-body-${label}`}\n data-bullish={isBullish}\n />\n {showWicks && (\n <>\n <line\n x1={x}\n y1={highY}\n x2={x}\n y2={bodyTop}\n stroke={WICK_COLOR}\n strokeWidth={1}\n data-testid={`wick-high-${label}`}\n />\n <line\n x1={x}\n y1={bodyBottom}\n x2={x}\n y2={lowY}\n stroke={WICK_COLOR}\n strokeWidth={1}\n data-testid={`wick-low-${label}`}\n />\n </>\n )}\n </g>\n )\n}\n\nfunction YAxisTicks({\n domainMin,\n domainMax,\n innerHeight,\n tickCount,\n format,\n}: {\n domainMin: number\n domainMax: number\n innerHeight: number\n tickCount: number\n format?: (v: number) => string\n}) {\n const ticks = useMemo(() => {\n const step = (domainMax - domainMin) / (tickCount - 1)\n return Array.from({ length: tickCount }, (_, i) => domainMin + i * step)\n }, [domainMin, domainMax, tickCount])\n\n const yScale = (v: number) => innerHeight - ((v - domainMin) / (domainMax - domainMin)) * innerHeight\n\n return (\n <g data-testid=\"y-axis\">\n <line y1={0} y2={innerHeight} stroke=\"currentColor\" strokeWidth={1} />\n {ticks.map((tick, i) => (\n <g key={i} transform={`translate(0, ${yScale(tick)})`}>\n <line x1={0} x2={-6} stroke=\"currentColor\" strokeWidth={1} />\n <text\n x={-10}\n textAnchor=\"end\"\n dominantBaseline=\"middle\"\n fontSize={11}\n fill=\"currentColor\"\n className=\"text-dc-text-secondary\"\n >\n {format ? format(tick) : tick.toLocaleString()}\n </text>\n <line x1={0} x2=\"100%\" stroke=\"currentColor\" strokeOpacity={0.1} strokeWidth={1} />\n </g>\n ))}\n </g>\n )\n}\n\nconst CandlestickChart = React.memo(function CandlestickChart({\n data,\n chartConfig,\n displayConfig = {},\n height = '100%',\n onDataPointClick,\n drillEnabled,\n}: ChartProps) {\n const { t } = useTranslation()\n const containerRef = useRef<HTMLDivElement>(null)\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 })\n\n useLayoutEffect(() => {\n const el = containerRef.current\n if (!el) return\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height: h } = entry.contentRect\n if (width > 0 && h > 0) setDimensions({ width, height: h })\n }\n })\n observer.observe(el)\n const rect = el.getBoundingClientRect()\n if (rect.width > 0 && rect.height > 0) setDimensions({ width: rect.width, height: rect.height })\n return () => observer.disconnect()\n }, [])\n\n const bullColor = displayConfig?.bullColor ?? BULL_COLOR_DEFAULT\n const bearColor = displayConfig?.bearColor ?? BEAR_COLOR_DEFAULT\n const showWicks = displayConfig?.showWicks ?? true\n const rangeMode = displayConfig?.rangeMode ?? 'ohlc'\n const yAxisFormat = displayConfig?.leftYAxisFormat\n\n const { xField, openField, closeField, highField, lowField, configError } = useMemo(() => {\n const xField = Array.isArray(chartConfig?.xAxis)\n ? chartConfig.xAxis[0]\n : chartConfig?.xAxis ?? chartConfig?.x\n\n const yAxisFields: string[] = Array.isArray(chartConfig?.yAxis)\n ? chartConfig.yAxis\n : []\n\n const openField = yAxisFields[0] ?? ''\n const closeField = (rangeMode === 'range' ? yAxisFields[0] : yAxisFields[1]) ?? ''\n const highField = (rangeMode === 'range' ? yAxisFields[0] : yAxisFields[2]) ?? ''\n const lowField = (rangeMode === 'range' ? yAxisFields[1] : yAxisFields[3]) ?? ''\n\n if (!xField) {\n return {\n xField,\n openField,\n closeField,\n highField,\n lowField,\n configError: 'Candlestick chart requires an X-Axis (time or category dimension)',\n }\n }\n\n if (rangeMode === 'range' && (!highField || !lowField)) {\n return {\n xField,\n openField,\n closeField,\n highField,\n lowField,\n configError: 'Range mode requires at least 2 measures (high, low) in Y-Axis',\n }\n }\n\n if (rangeMode === 'ohlc' && (!openField || !closeField)) {\n return {\n xField,\n openField,\n closeField,\n highField,\n lowField,\n configError: 'OHLC mode requires at least 2 measures (open, close) in Y-Axis',\n }\n }\n\n return { xField, openField, closeField, highField, lowField, configError: null }\n }, [chartConfig, rangeMode])\n\n const candles: CandleData[] = useMemo(() => {\n if (configError || !data || data.length === 0) return []\n const rows = (data as Record<string, unknown>[]).slice(0, MAX_CANDLES)\n const result: CandleData[] = []\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const label = String(row[xField!] ?? `Bar ${i + 1}`)\n const rawOpen = parseNum(row[openField])\n const rawClose = parseNum(row[closeField])\n if (rawOpen === null || rawClose === null) continue\n\n let open = rawOpen\n let close = rawClose\n const high = highField ? (parseNum(row[highField]) ?? Math.max(open, close)) : Math.max(open, close)\n const low = lowField ? (parseNum(row[lowField]) ?? Math.min(open, close)) : Math.min(open, close)\n\n if (rangeMode === 'range') {\n open = low\n close = high\n }\n\n result.push({\n label,\n open,\n close,\n high: Math.max(open, close, high),\n low: Math.min(open, close, low),\n isBullish: close >= open,\n originalIndex: i,\n })\n }\n return result\n }, [data, xField, openField, closeField, highField, lowField, rangeMode, configError])\n\n try {\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\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.candlestick')}</div>\n </div>\n </div>\n )\n }\n\n if (configError) {\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\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{configError}</div>\n </div>\n </div>\n )\n }\n const margin = { top: 20, right: 20, bottom: 60, left: 70 }\n const containerWidth = dimensions.width || 600\n const containerHeight =\n typeof height === 'number' ? height : dimensions.height || 400\n const innerWidth = Math.max(containerWidth - margin.left - margin.right, 50)\n const innerHeight = Math.max(\n (typeof containerHeight === 'number' ? containerHeight : parseInt(String(containerHeight)) || 400) -\n margin.top -\n margin.bottom,\n 50\n )\n\n const allValues = candles.flatMap((c) => [c.low, c.high])\n const rawMin = Math.min(...allValues)\n const rawMax = Math.max(...allValues)\n const pad = (rawMax - rawMin) * 0.05 || 1\n const domainMin = rawMin - pad\n const domainMax = rawMax + pad\n\n const yScale = (v: number) =>\n innerHeight - ((v - domainMin) / (domainMax - domainMin)) * innerHeight\n\n const candleSpacing = innerWidth / candles.length\n const candleWidth = Math.min(candleSpacing * 0.7, 20)\n\n const isTruncated = (data as unknown[]).length > MAX_CANDLES\n\n return (\n <div ref={containerRef} className=\"dc:relative dc:w-full\" style={{ height }}>\n <svg\n width=\"100%\"\n height={isTruncated ? 'calc(100% - 20px)' : '100%'}\n viewBox={`0 0 ${containerWidth} ${typeof containerHeight === 'number' ? containerHeight : 400}`}\n data-testid=\"candlestick-svg\"\n >\n <g transform={`translate(${margin.left}, ${margin.top})`}>\n <YAxisTicks\n domainMin={domainMin}\n domainMax={domainMax}\n innerHeight={innerHeight}\n tickCount={5}\n format={yAxisFormat ? (v) => formatAxisValue(v, yAxisFormat) : undefined}\n />\n\n {candles.map((candle, i) => {\n const cx = candleSpacing * i + candleSpacing / 2\n return (\n <g\n key={candle.label + i}\n onClick={(event: React.MouseEvent) => {\n if (onDataPointClick && drillEnabled) {\n onDataPointClick({\n dataPoint: { ...candle },\n clickedField: xField ?? '',\n xValue: candle.label,\n position: { x: event.clientX, y: event.clientY },\n nativeEvent: event,\n })\n }\n }}\n cursor={drillEnabled ? 'pointer' : undefined}\n >\n <title>{`${candle.label}: O=${candle.open} H=${candle.high} L=${candle.low} C=${candle.close}`}</title>\n <Candle\n x={cx}\n candleWidth={candleWidth}\n openY={yScale(candle.open)}\n closeY={yScale(candle.close)}\n highY={yScale(candle.high)}\n lowY={yScale(candle.low)}\n isBullish={candle.isBullish}\n bullColor={bullColor}\n bearColor={bearColor}\n showWicks={showWicks}\n label={candle.label}\n />\n <text\n x={cx}\n y={innerHeight + 20}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"currentColor\"\n className=\"text-dc-text-secondary\"\n data-testid={`x-label-${candle.label}`}\n >\n {candle.label}\n </text>\n </g>\n )\n })}\n </g>\n </svg>\n {isTruncated && (\n <div className=\"dc:text-xs text-dc-warning dc:text-center dc:mt-1\">\n {t('chart.runtime.candlestick.truncated', {\n max: MAX_CANDLES,\n total: (data as unknown[]).length\n })}\n </div>\n )}\n </div>\n )\n } catch (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\">{t('chart.runtime.chartError', { chartType: 'Candlestick Chart' })}</div>\n <div className=\"dc:text-xs dc:mb-2\">{error instanceof Error ? error.message : t('chart.runtime.unknownError')}</div>\n <div className=\"dc:text-xs text-dc-text-muted\">{t('chart.runtime.checkConfig')}</div>\n </div>\n </div>\n )\n }\n})\n\nexport default CandlestickChart\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chart-config-activity-grid-D_UX4NHC.js","names":[],"sources":["../../../src/client/components/charts/ActivityGridChart.config.ts"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\n\n/**\n * Configuration for the activity grid chart type\n */\nexport const activityGridChartConfig: ChartTypeConfig = {\n label: 'chart.activityGrid.label',\n description: 'chart.activityGrid.description',\n useCase: 'chart.activityGrid.useCase',\n isAvailable: ({ measureCount, timeDimensionCount }) => {\n if (measureCount < 1) return { available: false, reason: 'chart.availability.requiresMeasure' }\n if (timeDimensionCount < 1) return { available: false, reason: 'chart.availability.requiresTimeDimension' }\n return { available: true }\n },\n dropZones: [\n {\n key: 'dateField',\n label: 'chart.configText.time_dimension',\n description: 'chart.configText.time_field_that_determines_grid_structure_granularity_affects_layout',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['timeDimension'],\n emptyText: 'chart.activityGrid.dropZone.dateField.empty'\n },\n {\n key: 'valueField',\n label: 'chart.configText.activity_measure',\n description: 'chart.configText.measure_used_for_activity_intensity_color_coding',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'chart.activityGrid.dropZone.valueField.empty'\n }\n ],\n displayOptions: ['showLabels', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'fitToWidth',\n label: 'chart.option.fitToWidth.label',\n type: 'boolean',\n defaultValue: false,\n description: 'chart.option.fitToWidth.description'\n }\n ],\n validate: (config) => {\n const { dateField, valueField } = config\n\n if (!dateField || (Array.isArray(dateField) && dateField.length === 0)) {\n return {\n isValid: false,\n message: 'chart.activityGrid.validation.timeDimensionRequired'\n }\n }\n\n if (!valueField || (Array.isArray(valueField) && valueField.length === 0)) {\n return {\n isValid: false,\n message: 'chart.activityGrid.validation.measureRequired'\n }\n }\n\n return { isValid: true }\n },\n clickableElements: { cell: true }\n}"],"mappings":";;iEAKa,IAA2C;CACtD,OAAO;CACP,aAAa;CACb,SAAS;CACT,cAAc,EAAE,iBAAc,4BACxB,IAAe,IAAU;EAAE,WAAW;EAAO,QAAQ;CAAqC,IAC1F,IAAqB,IAAU;EAAE,WAAW;EAAO,QAAQ;CAA2C,IACnG,EAAE,WAAW,GAAK;CAE3B,WAAW,CACT;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,eAAe;EAC7B,WAAW;CACb,GACA;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,SAAS;EACvB,WAAW;CACb,CACF;CACA,gBAAgB;EAAC;EAAc;EAAe;CAAY;CAC1D,sBAAsB,CACpB;EACE,KAAK;EACL,OAAO;EACP,MAAM;EACN,cAAc;EACd,aAAa;CACf,CACF;CACA,WAAW,MAAW;EACpB,IAAM,EAAE,cAAW,kBAAe;EAgBlC,OAdI,CAAC,KAAc,MAAM,QAAQ,CAAS,KAAK,EAAU,WAAW,IAC3D;GACL,SAAS;GACT,SAAS;EACX,IAGE,CAAC,KAAe,MAAM,QAAQ,CAAU,KAAK,EAAW,WAAW,IAC9D;GACL,SAAS;GACT,SAAS;EACX,IAGK,EAAE,SAAS,GAAK;CACzB;CACA,mBAAmB,EAAE,MAAM,GAAK;AAClC"}
1
+ {"version":3,"file":"chart-config-activity-grid-D_UX4NHC.js","names":[],"sources":["../../../src/client/components/charts/ActivityGridChart.config.ts"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs.js'\n\n/**\n * Configuration for the activity grid chart type\n */\nexport const activityGridChartConfig: ChartTypeConfig = {\n label: 'chart.activityGrid.label',\n description: 'chart.activityGrid.description',\n useCase: 'chart.activityGrid.useCase',\n isAvailable: ({ measureCount, timeDimensionCount }) => {\n if (measureCount < 1) return { available: false, reason: 'chart.availability.requiresMeasure' }\n if (timeDimensionCount < 1) return { available: false, reason: 'chart.availability.requiresTimeDimension' }\n return { available: true }\n },\n dropZones: [\n {\n key: 'dateField',\n label: 'chart.configText.time_dimension',\n description: 'chart.configText.time_field_that_determines_grid_structure_granularity_affects_layout',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['timeDimension'],\n emptyText: 'chart.activityGrid.dropZone.dateField.empty'\n },\n {\n key: 'valueField',\n label: 'chart.configText.activity_measure',\n description: 'chart.configText.measure_used_for_activity_intensity_color_coding',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'chart.activityGrid.dropZone.valueField.empty'\n }\n ],\n displayOptions: ['showLabels', 'showTooltip', 'hideHeader'],\n displayOptionsConfig: [\n {\n key: 'fitToWidth',\n label: 'chart.option.fitToWidth.label',\n type: 'boolean',\n defaultValue: false,\n description: 'chart.option.fitToWidth.description'\n }\n ],\n validate: (config) => {\n const { dateField, valueField } = config\n\n if (!dateField || (Array.isArray(dateField) && dateField.length === 0)) {\n return {\n isValid: false,\n message: 'chart.activityGrid.validation.timeDimensionRequired'\n }\n }\n\n if (!valueField || (Array.isArray(valueField) && valueField.length === 0)) {\n return {\n isValid: false,\n message: 'chart.activityGrid.validation.measureRequired'\n }\n }\n\n return { isValid: true }\n },\n clickableElements: { cell: true }\n}"],"mappings":";;iEAKa,IAA2C;CACtD,OAAO;CACP,aAAa;CACb,SAAS;CACT,cAAc,EAAE,iBAAc,4BACxB,IAAe,IAAU;EAAE,WAAW;EAAO,QAAQ;CAAqC,IAC1F,IAAqB,IAAU;EAAE,WAAW;EAAO,QAAQ;CAA2C,IACnG,EAAE,WAAW,GAAK;CAE3B,WAAW,CACT;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,eAAe;EAC7B,WAAW;CACb,GACA;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,SAAS;EACvB,WAAW;CACb,CACF;CACA,gBAAgB;EAAC;EAAc;EAAe;CAAY;CAC1D,sBAAsB,CACpB;EACE,KAAK;EACL,OAAO;EACP,MAAM;EACN,cAAc;EACd,aAAa;CACf,CACF;CACA,WAAW,MAAW;EACpB,IAAM,EAAE,cAAW,kBAAe;EAgBlC,OAdI,CAAC,KAAc,MAAM,QAAQ,CAAS,KAAK,EAAU,WAAW,IAC3D;GACL,SAAS;GACT,SAAS;EACX,IAGE,CAAC,KAAe,MAAM,QAAQ,CAAU,KAAK,EAAW,WAAW,IAC9D;GACL,SAAS;GACT,SAAS;EACX,IAGK,EAAE,SAAS,GAAK;CACzB;CACA,mBAAmB,EAAE,MAAM,GAAK;AAClC"}
@@ -0,0 +1,124 @@
1
+ import { n as e } from "./rolldown-runtime-CWhphoD1.js";
2
+ //#region src/client/charts/chartConfigHelpers.ts
3
+ function t({ measureCount: e, dimensionCount: t }) {
4
+ return e < 1 ? {
5
+ available: !1,
6
+ reason: "chart.availability.requiresMeasure"
7
+ } : t < 1 ? {
8
+ available: !1,
9
+ reason: "chart.availability.requiresDimension"
10
+ } : { available: !0 };
11
+ }
12
+ function n({ measureCount: e }) {
13
+ return e < 1 ? {
14
+ available: !1,
15
+ reason: "chart.availability.requiresMeasure"
16
+ } : { available: !0 };
17
+ }
18
+ var r = {
19
+ key: "target",
20
+ label: "chart.option.target.label",
21
+ type: "string",
22
+ placeholder: "e.g., 100 or 50,75 for spread",
23
+ description: "chart.option.target.description"
24
+ }, i = {
25
+ key: "connectNulls",
26
+ label: "chart.option.connectNulls.label",
27
+ type: "boolean",
28
+ defaultValue: !1,
29
+ description: "chart.option.connectNulls.description"
30
+ }, a = {
31
+ key: "leftYAxisFormat",
32
+ label: "chart.option.leftYAxisFormat.label",
33
+ type: "axisFormat",
34
+ description: "chart.option.leftYAxisFormat.description"
35
+ }, o = {
36
+ key: "rightYAxisFormat",
37
+ label: "chart.option.rightYAxisFormat.label",
38
+ type: "axisFormat",
39
+ description: "chart.option.rightYAxisFormat.description"
40
+ };
41
+ function s(e = "chart.option.valueFormat.description") {
42
+ return {
43
+ key: "leftYAxisFormat",
44
+ label: "chart.option.valueFormat.label",
45
+ type: "axisFormat",
46
+ description: e
47
+ };
48
+ }
49
+ function c(e) {
50
+ return {
51
+ key: "stackType",
52
+ label: "chart.option.stacking.label",
53
+ type: "select",
54
+ defaultValue: "none",
55
+ options: [
56
+ {
57
+ value: "none",
58
+ label: "chart.option.accentBorder.none"
59
+ },
60
+ {
61
+ value: "normal",
62
+ label: "chart.option.stacking.stacked"
63
+ },
64
+ {
65
+ value: "percent",
66
+ label: "chart.option.stacking.percent"
67
+ }
68
+ ],
69
+ description: e
70
+ };
71
+ }
72
+ //#endregion
73
+ //#region src/client/components/charts/AreaChart.config.ts
74
+ var l = /* @__PURE__ */ e({ areaChartConfig: () => u }), u = {
75
+ label: "chart.area.label",
76
+ description: "chart.area.description",
77
+ useCase: "chart.area.useCase",
78
+ isAvailable: t,
79
+ dropZones: [
80
+ {
81
+ key: "xAxis",
82
+ label: "chart.configText.x_axis_time_categories",
83
+ description: "chart.configText.time_dimensions_or_dimensions_for_x_axis",
84
+ mandatory: !0,
85
+ acceptTypes: ["dimension", "timeDimension"],
86
+ emptyText: "chart.area.dropZone.xAxis.empty"
87
+ },
88
+ {
89
+ key: "yAxis",
90
+ label: "chart.dropZone.yAxis.label",
91
+ description: "chart.configText.measures_for_area_values",
92
+ mandatory: !0,
93
+ acceptTypes: ["measure"],
94
+ emptyText: "chart.area.dropZone.yAxis.empty",
95
+ enableDualAxis: !0
96
+ },
97
+ {
98
+ key: "series",
99
+ label: "chart.configText.series_stack_areas",
100
+ description: "chart.configText.dimensions_to_create_stacked_areas",
101
+ mandatory: !1,
102
+ acceptTypes: ["dimension"],
103
+ emptyText: "chart.area.dropZone.series.empty"
104
+ }
105
+ ],
106
+ displayOptions: [
107
+ "showLegend",
108
+ "showGrid",
109
+ "showTooltip",
110
+ "showAllXLabels",
111
+ "hideHeader"
112
+ ],
113
+ displayOptionsConfig: [
114
+ c("chart.configText.how_to_stack_multiple_area_series"),
115
+ i,
116
+ r,
117
+ a,
118
+ o
119
+ ]
120
+ };
121
+ //#endregion
122
+ export { n as a, c, a as i, r as l, u as n, t as o, i as r, o as s, l as t, s as u };
123
+
124
+ //# sourceMappingURL=chart-config-area-BNigHUy8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-config-area-BNigHUy8.js","names":[],"sources":["../../../src/client/charts/chartConfigHelpers.ts","../../../src/client/components/charts/AreaChart.config.ts"],"sourcesContent":["import type { ChartAvailabilityContext, ChartAvailability, DisplayOptionConfig } from './chartConfigs.js'\n\n/**\n * Shared building blocks for chart `*.config.ts` files.\n *\n * Most chart configs repeated the same `isAvailable` guard and the same\n * display-option definitions (target line, Y-axis format, stacking, …).\n * These factories centralise that boilerplate so each chart config only\n * declares what is genuinely unique to it.\n */\n\n/**\n * Standard availability rule shared by most chart types: at least one measure\n * and at least one dimension (regular or time) must be selected.\n */\nexport function requiresMeasureAndDimension({\n measureCount,\n dimensionCount\n}: ChartAvailabilityContext): ChartAvailability {\n if (measureCount < 1) return { available: false, reason: 'chart.availability.requiresMeasure' }\n if (dimensionCount < 1) return { available: false, reason: 'chart.availability.requiresDimension' }\n return { available: true }\n}\n\n/**\n * Availability rule for charts that only need a single measure (KPI-style\n * charts and gauges): at least one measure, no dimension requirement.\n */\nexport function requiresMeasure({ measureCount }: ChartAvailabilityContext): ChartAvailability {\n if (measureCount < 1) return { available: false, reason: 'chart.availability.requiresMeasure' }\n return { available: true }\n}\n\n/** Target-line display option (single value or comma-separated spread). */\nexport const targetDisplayOption: DisplayOptionConfig = {\n key: 'target',\n label: 'chart.option.target.label',\n type: 'string',\n placeholder: 'e.g., 100 or 50,75 for spread',\n description: 'chart.option.target.description'\n}\n\n/** Connect-nulls toggle for line/area charts. */\nexport const connectNullsDisplayOption: DisplayOptionConfig = {\n key: 'connectNulls',\n label: 'chart.option.connectNulls.label',\n type: 'boolean',\n defaultValue: false,\n description: 'chart.option.connectNulls.description'\n}\n\n/** Left Y-axis numeric format control (dual-axis charts). */\nexport const leftYAxisFormatDisplayOption: DisplayOptionConfig = {\n key: 'leftYAxisFormat',\n label: 'chart.option.leftYAxisFormat.label',\n type: 'axisFormat',\n description: 'chart.option.leftYAxisFormat.description'\n}\n\n/** Right Y-axis numeric format control (dual-axis charts). */\nexport const rightYAxisFormatDisplayOption: DisplayOptionConfig = {\n key: 'rightYAxisFormat',\n label: 'chart.option.rightYAxisFormat.label',\n type: 'axisFormat',\n description: 'chart.option.rightYAxisFormat.description'\n}\n\n/**\n * Single value-format control used by charts that only have one numeric scale\n * (pie, radar, radial bar, treemap). Stored under `leftYAxisFormat` for\n * backward compatibility with existing saved configs.\n */\nexport function valueFormatDisplayOption(\n description = 'chart.option.valueFormat.description'\n): DisplayOptionConfig {\n return {\n key: 'leftYAxisFormat',\n label: 'chart.option.valueFormat.label',\n type: 'axisFormat',\n description\n }\n}\n\n/**\n * Stacking-mode select shared by bar and area charts. `description` differs\n * per chart (bar vs area series wording).\n */\nexport function stackTypeDisplayOption(description: string): DisplayOptionConfig {\n return {\n key: 'stackType',\n label: 'chart.option.stacking.label',\n type: 'select',\n defaultValue: 'none',\n options: [\n { value: 'none', label: 'chart.option.accentBorder.none' },\n { value: 'normal', label: 'chart.option.stacking.stacked' },\n { value: 'percent', label: 'chart.option.stacking.percent' }\n ],\n description\n }\n}\n","import type { ChartTypeConfig } from '../../charts/chartConfigs.js'\nimport {\n requiresMeasureAndDimension,\n stackTypeDisplayOption,\n connectNullsDisplayOption,\n targetDisplayOption,\n leftYAxisFormatDisplayOption,\n rightYAxisFormatDisplayOption\n} from '../../charts/chartConfigHelpers.js'\n\n/**\n * Configuration for the area chart type\n */\nexport const areaChartConfig: ChartTypeConfig = {\n label: 'chart.area.label',\n description: 'chart.area.description',\n useCase: 'chart.area.useCase',\n isAvailable: requiresMeasureAndDimension,\n dropZones: [\n {\n key: 'xAxis',\n label: 'chart.configText.x_axis_time_categories',\n description: 'chart.configText.time_dimensions_or_dimensions_for_x_axis',\n mandatory: true,\n acceptTypes: ['dimension', 'timeDimension'],\n emptyText: 'chart.area.dropZone.xAxis.empty'\n },\n {\n key: 'yAxis',\n label: 'chart.dropZone.yAxis.label',\n description: 'chart.configText.measures_for_area_values',\n mandatory: true,\n acceptTypes: ['measure'],\n emptyText: 'chart.area.dropZone.yAxis.empty',\n enableDualAxis: true\n },\n {\n key: 'series',\n label: 'chart.configText.series_stack_areas',\n description: 'chart.configText.dimensions_to_create_stacked_areas',\n mandatory: false,\n acceptTypes: ['dimension'],\n emptyText: 'chart.area.dropZone.series.empty'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'showAllXLabels', 'hideHeader'],\n displayOptionsConfig: [\n stackTypeDisplayOption('chart.configText.how_to_stack_multiple_area_series'),\n connectNullsDisplayOption,\n targetDisplayOption,\n leftYAxisFormatDisplayOption,\n rightYAxisFormatDisplayOption\n ]\n}"],"mappings":";;AAeA,SAAgB,EAA4B,EAC1C,iBACA,qBAC8C;CAG9C,OAFI,IAAe,IAAU;EAAE,WAAW;EAAO,QAAQ;CAAqC,IAC1F,IAAiB,IAAU;EAAE,WAAW;EAAO,QAAQ;CAAuC,IAC3F,EAAE,WAAW,GAAK;AAC3B;AAMA,SAAgB,EAAgB,EAAE,mBAA6D;CAE7F,OADI,IAAe,IAAU;EAAE,WAAW;EAAO,QAAQ;CAAqC,IACvF,EAAE,WAAW,GAAK;AAC3B;AAGA,IAAa,IAA2C;CACtD,KAAK;CACL,OAAO;CACP,MAAM;CACN,aAAa;CACb,aAAa;AACf,GAGa,IAAiD;CAC5D,KAAK;CACL,OAAO;CACP,MAAM;CACN,cAAc;CACd,aAAa;AACf,GAGa,IAAoD;CAC/D,KAAK;CACL,OAAO;CACP,MAAM;CACN,aAAa;AACf,GAGa,IAAqD;CAChE,KAAK;CACL,OAAO;CACP,MAAM;CACN,aAAa;AACf;AAOA,SAAgB,EACd,IAAc,wCACO;CACrB,OAAO;EACL,KAAK;EACL,OAAO;EACP,MAAM;EACN;CACF;AACF;AAMA,SAAgB,EAAuB,GAA0C;CAC/E,OAAO;EACL,KAAK;EACL,OAAO;EACP,MAAM;EACN,cAAc;EACd,SAAS;GACP;IAAE,OAAO;IAAQ,OAAO;GAAiC;GACzD;IAAE,OAAO;IAAU,OAAO;GAAgC;GAC1D;IAAE,OAAO;IAAW,OAAO;GAAgC;EAC7D;EACA;CACF;AACF;;;yDCvFa,IAAmC;CAC9C,OAAO;CACP,aAAa;CACb,SAAS;CACT,aAAa;CACb,WAAW;EACT;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,aAAa,eAAe;GAC1C,WAAW;EACb;EACA;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,SAAS;GACvB,WAAW;GACX,gBAAgB;EAClB;EACA;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,WAAW;GACzB,WAAW;EACb;CACF;CACA,gBAAgB;EAAC;EAAc;EAAY;EAAe;EAAkB;CAAY;CACxF,sBAAsB;EACpB,EAAuB,oDAAoD;EAC3E;EACA;EACA;EACA;CACF;AACF"}
@@ -0,0 +1,54 @@
1
+ import { n as e } from "./rolldown-runtime-CWhphoD1.js";
2
+ import { c as t, i as n, l as r, o as i, s as a } from "./chart-config-area-BNigHUy8.js";
3
+ //#region src/client/components/charts/BarChart.config.ts
4
+ var o = /* @__PURE__ */ e({ barChartConfig: () => s }), s = {
5
+ label: "chart.bar.label",
6
+ description: "chart.bar.description",
7
+ useCase: "chart.bar.useCase",
8
+ clickableElements: { bar: !0 },
9
+ isAvailable: i,
10
+ dropZones: [
11
+ {
12
+ key: "xAxis",
13
+ label: "chart.dropZone.xAxis.label",
14
+ description: "chart.dropZone.xAxis.description",
15
+ mandatory: !1,
16
+ acceptTypes: ["dimension", "timeDimension"],
17
+ emptyText: "chart.bar.dropZone.xAxis.empty"
18
+ },
19
+ {
20
+ key: "yAxis",
21
+ label: "chart.dropZone.yAxis.label",
22
+ description: "chart.configText.measures_for_bar_heights",
23
+ mandatory: !0,
24
+ acceptTypes: ["measure"],
25
+ emptyText: "chart.bar.dropZone.yAxis.empty",
26
+ enableDualAxis: !0
27
+ },
28
+ {
29
+ key: "series",
30
+ label: "chart.dropZone.series.label",
31
+ description: "chart.dropZone.series.description",
32
+ mandatory: !1,
33
+ acceptTypes: ["dimension"],
34
+ emptyText: "chart.bar.dropZone.series.empty"
35
+ }
36
+ ],
37
+ displayOptions: [
38
+ "showLegend",
39
+ "showGrid",
40
+ "showTooltip",
41
+ "showAllXLabels",
42
+ "hideHeader"
43
+ ],
44
+ displayOptionsConfig: [
45
+ t("chart.configText.how_to_stack_multiple_bar_series"),
46
+ r,
47
+ n,
48
+ a
49
+ ]
50
+ };
51
+ //#endregion
52
+ export { s as n, o as t };
53
+
54
+ //# sourceMappingURL=chart-config-bar-DSO_LRTx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-config-bar-DSO_LRTx.js","names":[],"sources":["../../../src/client/components/charts/BarChart.config.ts"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs.js'\nimport {\n requiresMeasureAndDimension,\n stackTypeDisplayOption,\n targetDisplayOption,\n leftYAxisFormatDisplayOption,\n rightYAxisFormatDisplayOption\n} from '../../charts/chartConfigHelpers.js'\n\n/**\n * Configuration for the bar chart type\n */\nexport const barChartConfig: ChartTypeConfig = {\n label: 'chart.bar.label',\n description: 'chart.bar.description',\n useCase: 'chart.bar.useCase',\n clickableElements: { bar: true },\n isAvailable: requiresMeasureAndDimension,\n dropZones: [\n {\n key: 'xAxis',\n label: 'chart.dropZone.xAxis.label',\n description: 'chart.dropZone.xAxis.description',\n mandatory: false,\n acceptTypes: ['dimension', 'timeDimension'],\n emptyText: 'chart.bar.dropZone.xAxis.empty'\n },\n {\n key: 'yAxis',\n label: 'chart.dropZone.yAxis.label',\n description: 'chart.configText.measures_for_bar_heights',\n mandatory: true,\n acceptTypes: ['measure'],\n emptyText: 'chart.bar.dropZone.yAxis.empty',\n enableDualAxis: true\n },\n {\n key: 'series',\n label: 'chart.dropZone.series.label',\n description: 'chart.dropZone.series.description',\n mandatory: false,\n acceptTypes: ['dimension'],\n emptyText: 'chart.bar.dropZone.series.empty'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'showAllXLabels', 'hideHeader'],\n displayOptionsConfig: [\n stackTypeDisplayOption('chart.configText.how_to_stack_multiple_bar_series'),\n targetDisplayOption,\n leftYAxisFormatDisplayOption,\n rightYAxisFormatDisplayOption\n ]\n}"],"mappings":";;;wDAYa,IAAkC;CAC7C,OAAO;CACP,aAAa;CACb,SAAS;CACT,mBAAmB,EAAE,KAAK,GAAK;CAC/B,aAAa;CACb,WAAW;EACT;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,aAAa,eAAe;GAC1C,WAAW;EACb;EACA;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,SAAS;GACvB,WAAW;GACX,gBAAgB;EAClB;EACA;GACE,KAAK;GACL,OAAO;GACP,aAAa;GACb,WAAW;GACX,aAAa,CAAC,WAAW;GACzB,WAAW;EACb;CACF;CACA,gBAAgB;EAAC;EAAc;EAAY;EAAe;EAAkB;CAAY;CACxF,sBAAsB;EACpB,EAAuB,mDAAmD;EAC1E;EACA;EACA;CACF;AACF"}
@@ -1,16 +1,11 @@
1
1
  import { n as e } from "./rolldown-runtime-CWhphoD1.js";
2
+ import { o as t } from "./chart-config-area-BNigHUy8.js";
2
3
  //#region src/client/components/charts/BoxPlotChart.config.ts
3
- var t = /* @__PURE__ */ e({ boxPlotChartConfig: () => n }), n = {
4
+ var n = /* @__PURE__ */ e({ boxPlotChartConfig: () => r }), r = {
4
5
  label: "chart.boxPlot.label",
5
6
  description: "chart.boxPlot.description",
6
7
  useCase: "chart.boxPlot.useCase",
7
- isAvailable: ({ measureCount: e, dimensionCount: t }) => e < 1 ? {
8
- available: !1,
9
- reason: "chart.availability.requiresMeasure"
10
- } : t < 1 ? {
11
- available: !1,
12
- reason: "chart.availability.requiresDimension"
13
- } : { available: !0 },
8
+ isAvailable: t,
14
9
  displayOptions: ["hideHeader"],
15
10
  dropZones: [{
16
11
  key: "xAxis",
@@ -37,6 +32,6 @@ var t = /* @__PURE__ */ e({ boxPlotChartConfig: () => n }), n = {
37
32
  }]
38
33
  };
39
34
  //#endregion
40
- export { n, t };
35
+ export { r as n, n as t };
41
36
 
42
- //# sourceMappingURL=chart-config-box-plot-DJ-dWWXA.js.map
37
+ //# sourceMappingURL=chart-config-box-plot-oW8axV2q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-config-box-plot-oW8axV2q.js","names":[],"sources":["../../../src/client/components/charts/BoxPlotChart.config.ts"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs.js'\nimport { requiresMeasureAndDimension } from '../../charts/chartConfigHelpers.js'\n\n/**\n * Configuration for the box plot chart type\n */\nexport const boxPlotChartConfig: ChartTypeConfig = {\n label: 'chart.boxPlot.label',\n description: 'chart.boxPlot.description',\n useCase: 'chart.boxPlot.useCase',\n isAvailable: requiresMeasureAndDimension,\n displayOptions: ['hideHeader'],\n dropZones: [\n {\n key: 'xAxis',\n label: 'chart.configText.x_axis_groups',\n description: 'chart.configText.dimension_to_group_boxes_by_e_g_symbol_platform',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['dimension', 'timeDimension'],\n emptyText: 'chart.boxPlot.dropZone.xAxis.empty',\n },\n {\n key: 'yAxis',\n label: 'chart.configText.y_axis_measures',\n description: 'chart.configText.drop_1_measure_for_auto_mode_3_for_avg_stddev_median_mode_or_5_for_min_q',\n mandatory: true,\n maxItems: 5,\n acceptTypes: ['measure'],\n emptyText: 'chart.boxPlot.dropZone.yAxis.empty',\n },\n ],\n displayOptionsConfig: [\n {\n key: 'leftYAxisFormat',\n label: 'chart.option.yAxisFormat.label',\n type: 'axisFormat',\n description: 'chart.configText.number_formatting_for_the_value_axis',\n },\n ],\n}\n"],"mappings":";;;4DAMa,IAAsC;CACjD,OAAO;CACP,aAAa;CACb,SAAS;CACT,aAAa;CACb,gBAAgB,CAAC,YAAY;CAC7B,WAAW,CACT;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,aAAa,eAAe;EAC1C,WAAW;CACb,GACA;EACE,KAAK;EACL,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACV,aAAa,CAAC,SAAS;EACvB,WAAW;CACb,CACF;CACA,sBAAsB,CACpB;EACE,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;CACf,CACF;AACF"}