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.
- package/README.md +2 -0
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/{adapters/express → express}/index.d.ts +3 -3
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/{adapters/fastify → fastify}/index.d.ts +3 -3
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/{server/google-CFYljAOF.js → adapters/google-CvKM9yVM.js} +83 -71
- package/dist/adapters/{handler-Cx8QYLk6.js → handler-CfgE0JSL.js} +499 -576
- package/dist/adapters/handler-Cn0dOctE.cjs +25 -0
- package/dist/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/hono/index.cjs +2 -2
- package/dist/adapters/{adapters/hono → hono}/index.d.ts +4 -4
- package/dist/adapters/hono/index.js +205 -175
- package/dist/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/{adapters/locale.d.ts → locale.d.ts} +1 -1
- package/dist/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/{adapters/mcp-tools.d.ts → mcp-tools.d.ts} +5 -5
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-B7ddET3M.cjs +40 -0
- package/dist/adapters/mcp-transport-Dfuj4j4q.js +591 -0
- package/dist/adapters/{adapters/mcp-transport.d.ts → mcp-transport.d.ts} +3 -3
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/{adapters/nextjs → nextjs}/index.d.ts +3 -3
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- package/dist/adapters/{adapters/types.d.ts → types.d.ts} +1 -1
- package/dist/adapters/{utils-D9JPLmfl.js → utils-BPWZsX7k.js} +1271 -1218
- package/dist/adapters/utils-_whV4fXL.cjs +128 -0
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/{adapters/utils.d.ts → utils.d.ts} +17 -92
- package/dist/adapters/utils.js +2 -2
- package/dist/cli/index.cjs +2 -2
- package/dist/client/adapters/adapterRegistry.d.ts +2 -2
- package/dist/client/adapters/flowModeAdapter.d.ts +2 -2
- package/dist/client/adapters/funnelModeAdapter.d.ts +2 -2
- package/dist/client/adapters/index.d.ts +9 -9
- package/dist/client/adapters/modeAdapter.d.ts +1 -1
- package/dist/client/adapters/queryModeAdapter.d.ts +3 -3
- package/dist/client/adapters/retentionModeAdapter.d.ts +2 -2
- package/dist/client/charts/ChartLoader.d.ts +3 -17
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- package/dist/client/charts/chartConfigRegistry.d.ts +1 -1
- package/dist/client/charts/chartPlugin.d.ts +3 -3
- package/dist/client/charts/lazyChartConfigRegistry.d.ts +2 -2
- package/dist/client/charts.d.ts +8 -8
- package/dist/client/charts.js +14 -13
- package/dist/client/chunks/{DashboardEditModal-CjCIAT-J.js → DashboardEditModal-okVfH8ZK.js} +5296 -4544
- package/dist/client/chunks/DashboardEditModal-okVfH8ZK.js.map +1 -0
- package/dist/client/chunks/{RetentionCombinedChart-BPkfcTa8.js → RetentionCombinedChart-BgbDhsPz.js} +10 -10
- package/dist/client/chunks/RetentionCombinedChart-BgbDhsPz.js.map +1 -0
- package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/RetentionHeatmap-DjXZaTPq.js.map +1 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js +5674 -0
- package/dist/client/chunks/analysis-builder-DB88FojM.js.map +1 -0
- package/dist/client/chunks/{analysis-builder-shared-CYVwSPqt.js → analysis-builder-shared-BVK4TYfR.js} +1578 -1292
- package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +1 -0
- package/dist/client/chunks/{chart-activity-grid-DmruKPab.js → chart-activity-grid-DX0SJbxs.js} +635 -492
- package/dist/client/chunks/chart-activity-grid-DX0SJbxs.js.map +1 -0
- package/dist/client/chunks/chart-area-of01_62R.js +775 -0
- package/dist/client/chunks/chart-area-of01_62R.js.map +1 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js +194 -0
- package/dist/client/chunks/chart-bar-BqelQE_I.js.map +1 -0
- package/dist/client/chunks/{chart-box-plot-DYKfyOI8.js → chart-box-plot-kkBixZ27.js} +2 -2
- package/dist/client/chunks/chart-box-plot-kkBixZ27.js.map +1 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js +221 -0
- package/dist/client/chunks/chart-bubble-B2he1--4.js.map +1 -0
- package/dist/client/chunks/{chart-candlestick-Dwc92Mrj.js → chart-candlestick-DZp19Tzh.js} +2 -2
- package/dist/client/chunks/chart-candlestick-DZp19Tzh.js.map +1 -0
- package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +1 -1
- package/dist/client/chunks/chart-config-area-BNigHUy8.js +124 -0
- package/dist/client/chunks/chart-config-area-BNigHUy8.js.map +1 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js +54 -0
- package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +1 -0
- package/dist/client/chunks/{chart-config-box-plot-DJ-dWWXA.js → chart-config-box-plot-oW8axV2q.js} +5 -10
- package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +1 -0
- package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +1 -1
- package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +1 -1
- package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +1 -1
- package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +1 -1
- package/dist/client/chunks/{chart-config-gauge-DSwC04l0.js → chart-config-gauge-Dq-_H9UN.js} +5 -7
- package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +1 -0
- package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +1 -1
- package/dist/client/chunks/{chart-config-kpi-delta-D6BIkHL3.js → chart-config-kpi-delta-DSQbvqu_.js} +5 -10
- package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-number-Bx-V9a62.js → chart-config-kpi-number-EFSWY1We.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +1 -0
- package/dist/client/chunks/{chart-config-kpi-text-CcqC1u-8.js → chart-config-kpi-text-KM3V5X2u.js} +5 -7
- package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +1 -0
- package/dist/client/chunks/{chart-config-line-Db3jDsWc.js → chart-config-line-D6jG8PCH.js} +9 -36
- package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +1 -0
- package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +1 -1
- package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +1 -1
- package/dist/client/chunks/{chart-config-pie-DD4SmRTF.js → chart-config-pie-BhzW-fdn.js} +6 -16
- package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +1 -0
- package/dist/client/chunks/{chart-config-radar-CC2XAaGr.js → chart-config-radar-D7REP1q_.js} +6 -16
- package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +1 -0
- package/dist/client/chunks/{chart-config-radial-bar-DmxKx1R0.js → chart-config-radial-bar-Byx6qOPU.js} +6 -16
- package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +1 -0
- package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +1 -1
- package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +1 -1
- package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +1 -1
- package/dist/client/chunks/{chart-config-tree-map-BI-oQStO.js → chart-config-tree-map-DVrvf3yQ.js} +6 -16
- package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +1 -0
- package/dist/client/chunks/{chart-config-waterfall-DSnyixbI.js → chart-config-waterfall-DmFeQdIk.js} +5 -10
- package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +1 -0
- package/dist/client/chunks/{chart-data-table-BO4sXsim.js → chart-data-table-CKauQXme.js} +1046 -1121
- package/dist/client/chunks/chart-data-table-CKauQXme.js.map +1 -0
- package/dist/client/chunks/{chart-funnel-DnWRsmnS.js → chart-funnel-CToKSBaL.js} +184 -222
- package/dist/client/chunks/chart-funnel-CToKSBaL.js.map +1 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js +403 -0
- package/dist/client/chunks/chart-gauge-DTVezSk7.js.map +1 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js +236 -0
- package/dist/client/chunks/chart-heat-map-DTuUl0BR.js.map +1 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js +408 -0
- package/dist/client/chunks/chart-kpi-delta-Dn-jjO-2.js.map +1 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js +244 -0
- package/dist/client/chunks/chart-kpi-number-P_WBiO5S.js.map +1 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js +185 -0
- package/dist/client/chunks/chart-kpi-text-C-Y4eb5H.js.map +1 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js +101 -0
- package/dist/client/chunks/chart-line-DKgrQA6c.js.map +1 -0
- package/dist/client/chunks/{chart-markdown-dgUetjyM.js → chart-markdown-CV75S_zL.js} +2 -2
- package/dist/client/chunks/chart-markdown-CV75S_zL.js.map +1 -0
- package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/chart-measure-profile-Ket8fJyf.js.map +1 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js +119 -0
- package/dist/client/chunks/chart-pie-ByieAX5H.js.map +1 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js +138 -0
- package/dist/client/chunks/chart-radar-CiSwHWp4.js.map +1 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js +122 -0
- package/dist/client/chunks/chart-radial-bar-BF6Mhl6f.js.map +1 -0
- package/dist/client/chunks/{chart-sankey-M3XpO_ah.js → chart-sankey-DjrvKw6K.js} +36 -39
- package/dist/client/chunks/chart-sankey-DjrvKw6K.js.map +1 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js +258 -0
- package/dist/client/chunks/chart-scatter-Dd9WFqnS.js.map +1 -0
- package/dist/client/chunks/{chart-sunburst-A_u6lqlS.js → chart-sunburst-leGpuDj7.js} +3 -3
- package/dist/client/chunks/chart-sunburst-leGpuDj7.js.map +1 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js +323 -0
- package/dist/client/chunks/chart-tree-map-Ceq5sLZA.js.map +1 -0
- package/dist/client/chunks/{chart-waterfall-BuhMoagf.js → chart-waterfall-DyvQReN5.js} +7 -7
- package/dist/client/chunks/chart-waterfall-DyvQReN5.js.map +1 -0
- package/dist/client/chunks/{charts-core-jRtb0S2M.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/charts-core-DaXSt1Dd.js.map +1 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js +84 -0
- package/dist/client/chunks/charts-loader-DdTeCeNo.js.map +1 -0
- package/dist/client/chunks/{nl-NL-CpVs7ox3.js → nl-NL-2zTAWTej.js} +2 -1
- package/dist/client/chunks/{nl-NL-CpVs7ox3.js.map → nl-NL-2zTAWTej.js.map} +1 -1
- package/dist/client/chunks/retention-ChW9jYdy.js.map +1 -1
- package/dist/client/chunks/{schema-visualization-DE09kQE3.js → schema-visualization-Cb_E9_Gd.js} +12 -12
- package/dist/client/chunks/schema-visualization-Cb_E9_Gd.js.map +1 -0
- package/dist/client/chunks/{useDirtyStateTracking-CoeQbprt.js → useDirtyStateTracking-MbpxH_v6.js} +95 -84
- package/dist/client/chunks/useDirtyStateTracking-MbpxH_v6.js.map +1 -0
- package/dist/client/chunks/{useExplainAI-DlnXWdmz.js → useExplainAI-evnZkjCY.js} +14 -14
- package/dist/client/chunks/useExplainAI-evnZkjCY.js.map +1 -0
- package/dist/client/chunks/{utils-CTKNaXS8.js → utils-3P6z1vz5.js} +2 -2
- package/dist/client/chunks/utils-3P6z1vz5.js.map +1 -0
- package/dist/client/chunks/{vendor-CPIYyeuD.js → vendor-DSpR0IW6.js} +43 -43
- package/dist/client/chunks/{vendor-CPIYyeuD.js.map → vendor-DSpR0IW6.js.map} +1 -1
- package/dist/client/client/BatchCoordinator.d.ts +1 -1
- package/dist/client/client/CubeClient.d.ts +1 -1
- package/dist/client/components/AIAssistant/index.d.ts +3 -3
- package/dist/client/components/AIAssistant/utils.d.ts +1 -1
- package/dist/client/components/AgenticNotebook/ChatMessage.d.ts +1 -1
- package/dist/client/components/AgenticNotebook/NotebookCanvas.d.ts +1 -1
- package/dist/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +1 -1
- package/dist/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +2 -2
- package/dist/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- package/dist/client/components/AgenticNotebook/index.d.ts +2 -2
- package/dist/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
- package/dist/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
- package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +4 -4
- package/dist/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownItemCard.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/BreakdownSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchItem.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchModal.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterConfigModal.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowModeContent.d.ts +3 -3
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/FunnelBindingKeySelector.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FunnelConfigPanel.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FunnelModeContent.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/FunnelStepCard.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/FunnelStepList.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/MetricItemCard.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/MetricsSection.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/RetentionModeContent.d.ts +3 -3
- package/dist/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
- package/dist/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
- package/dist/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
- package/dist/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
- package/dist/client/components/AnalysisBuilder/index.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/types.d.ts +28 -28
- package/dist/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
- package/dist/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +7 -2
- package/dist/client/components/AnalysisBuilder/utils/filterUtils.d.ts +1 -1
- package/dist/client/components/AnalysisBuilder/utils/index.d.ts +6 -6
- package/dist/client/components/AnalysisBuilder/utils/queryUtils.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/utils/recentFieldsUtils.d.ts +2 -2
- package/dist/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
- package/dist/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/utils/storageUtils.d.ts +2 -2
- package/dist/client/components/AnalysisBuilderLazy.d.ts +1 -1
- package/dist/client/components/AnalyticsDashboard.d.ts +1 -1
- package/dist/client/components/AnalyticsPortlet.d.ts +1 -1
- package/dist/client/components/ChartTypeSelector.d.ts +2 -2
- package/dist/client/components/DashboardFilterPanel.d.ts +1 -1
- package/dist/client/components/DashboardFilters/CompactFilterBar.d.ts +1 -1
- package/dist/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +2 -2
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterItem.d.ts +2 -2
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- package/dist/client/components/DashboardFilters/EditModeFilterList.d.ts +1 -1
- package/dist/client/components/DashboardFilters/FilterChip.d.ts +1 -1
- package/dist/client/components/DashboardFilters/FilterEditModal.d.ts +2 -2
- package/dist/client/components/DashboardFilters/FilterValuePopover.d.ts +1 -1
- package/dist/client/components/DashboardFilters/ReadOnlyFilterList.d.ts +2 -2
- package/dist/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
- package/dist/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
- package/dist/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
- package/dist/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
- package/dist/client/components/DashboardGrid.d.ts +2 -2
- package/dist/client/components/DashboardPortletCard.d.ts +2 -57
- package/dist/client/components/DebugModal.d.ts +2 -2
- package/dist/client/components/DrillBreadcrumb.d.ts +1 -1
- package/dist/client/components/DrillMenu.d.ts +1 -1
- package/dist/client/components/FloatingEditToolbar.d.ts +1 -1
- package/dist/client/components/MobileStackedLayout.d.ts +2 -2
- package/dist/client/components/PortletAnalysisModal.d.ts +1 -1
- package/dist/client/components/PortletContainer.d.ts +1 -1
- package/dist/client/components/PortletFilterConfigModal.d.ts +1 -1
- package/dist/client/components/RowManagedLayout.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/CubeNode.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/FieldDetailPanel.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/RelationshipEdge.d.ts +1 -1
- package/dist/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +1 -1
- package/dist/client/components/TextPortletModal.d.ts +2 -2
- package/dist/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
- package/dist/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
- package/dist/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
- package/dist/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
- package/dist/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
- package/dist/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
- package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
- package/dist/client/components/charts/ActivityGridChart.config.d.ts +1 -1
- package/dist/client/components/charts/ActivityGridChart.d.ts +1 -1
- package/dist/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AreaChart.config.d.ts +1 -1
- package/dist/client/components/charts/AreaChart.d.ts +1 -1
- package/dist/client/components/charts/AxisFormatControls.d.ts +4 -2
- package/dist/client/components/charts/BarChart.config.d.ts +1 -1
- package/dist/client/components/charts/BarChart.d.ts +1 -1
- package/dist/client/components/charts/BarChart.helpers.d.ts +23 -0
- package/dist/client/components/charts/BarSeries.d.ts +29 -0
- package/dist/client/components/charts/BoxPlotChart.config.d.ts +1 -1
- package/dist/client/components/charts/BoxPlotChart.d.ts +1 -1
- package/dist/client/components/charts/BubbleChart.config.d.ts +1 -1
- package/dist/client/components/charts/BubbleChart.d.ts +1 -1
- package/dist/client/components/charts/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/CandlestickChart.config.d.ts +1 -1
- package/dist/client/components/charts/CandlestickChart.d.ts +1 -1
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- package/dist/client/components/charts/DataTable.config.d.ts +1 -1
- package/dist/client/components/charts/DataTable.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.config.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.d.ts +1 -1
- package/dist/client/components/charts/FunnelChart.helpers.d.ts +25 -0
- package/dist/client/components/charts/FunnelViews.d.ts +16 -0
- package/dist/client/components/charts/GaugeChart.config.d.ts +1 -1
- package/dist/client/components/charts/GaugeChart.d.ts +1 -1
- package/dist/client/components/charts/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.config.d.ts +1 -1
- package/dist/client/components/charts/HeatMapChart.d.ts +1 -1
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.config.d.ts +1 -1
- package/dist/client/components/charts/KpiDelta.d.ts +1 -1
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- package/dist/client/components/charts/KpiNumber.config.d.ts +1 -1
- package/dist/client/components/charts/KpiNumber.d.ts +1 -1
- package/dist/client/components/charts/KpiNumber.helpers.d.ts +30 -0
- package/dist/client/components/charts/KpiStates.d.ts +19 -0
- package/dist/client/components/charts/KpiText.config.d.ts +1 -1
- package/dist/client/components/charts/KpiText.d.ts +1 -1
- package/dist/client/components/charts/LineChart.config.d.ts +1 -1
- package/dist/client/components/charts/LineChart.d.ts +1 -1
- package/dist/client/components/charts/MarkdownChart.config.d.ts +1 -1
- package/dist/client/components/charts/MarkdownChart.d.ts +1 -1
- package/dist/client/components/charts/MeasureProfileChart.config.d.ts +1 -1
- package/dist/client/components/charts/MeasureProfileChart.d.ts +1 -1
- package/dist/client/components/charts/PieChart.config.d.ts +1 -1
- package/dist/client/components/charts/PieChart.d.ts +1 -1
- package/dist/client/components/charts/RadarChart.config.d.ts +1 -1
- package/dist/client/components/charts/RadarChart.d.ts +1 -1
- package/dist/client/components/charts/RadialBarChart.config.d.ts +1 -1
- package/dist/client/components/charts/RadialBarChart.d.ts +1 -1
- package/dist/client/components/charts/RetentionCombinedChart.config.d.ts +1 -1
- package/dist/client/components/charts/RetentionCombinedChart.d.ts +1 -1
- package/dist/client/components/charts/RetentionHeatmap.config.d.ts +1 -1
- package/dist/client/components/charts/RetentionHeatmap.d.ts +1 -1
- package/dist/client/components/charts/SankeyChart.config.d.ts +1 -1
- package/dist/client/components/charts/SankeyChart.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.config.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.d.ts +1 -1
- package/dist/client/components/charts/ScatterChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/ScatterSeries.d.ts +17 -0
- package/dist/client/components/charts/ScatterTooltip.d.ts +21 -0
- package/dist/client/components/charts/SunburstChart.config.d.ts +1 -1
- package/dist/client/components/charts/SunburstChart.d.ts +1 -1
- package/dist/client/components/charts/TreeMapChart.config.d.ts +1 -1
- package/dist/client/components/charts/TreeMapChart.d.ts +1 -1
- package/dist/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
- package/dist/client/components/charts/TreeMapContent.d.ts +24 -0
- package/dist/client/components/charts/TreeMapLegend.d.ts +13 -0
- package/dist/client/components/charts/WaterfallChart.config.d.ts +1 -1
- package/dist/client/components/charts/WaterfallChart.d.ts +1 -1
- package/dist/client/components/charts/cartesianChartHelpers.d.ts +126 -0
- package/dist/client/components/charts/chartAxisResolution.d.ts +32 -0
- package/dist/client/components/charts/chartScaffolding.d.ts +77 -0
- package/dist/client/components/charts/gaugeChartHelpers.d.ts +36 -0
- package/dist/client/components/charts/index.d.ts +21 -21
- package/dist/client/components/charts/kpiTextHelpers.d.ts +46 -0
- package/dist/client/components/charts/radarChartHelpers.d.ts +14 -0
- package/dist/client/components/charts/radialBarChartHelpers.d.ts +22 -0
- package/dist/client/components/charts/useChartDimensions.d.ts +20 -0
- package/dist/client/components/charts/useKpiDimensions.d.ts +30 -0
- package/dist/client/components/dashboard/DashboardContext.d.ts +6 -6
- package/dist/client/components/dashboard/DashboardCoordinator.d.ts +1 -1
- package/dist/client/components/dashboard/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/DashboardProvider.d.ts +1 -1
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- package/dist/client/components/dashboard/dashboardGridUtils.d.ts +1 -1
- package/dist/client/components/dashboard/index.d.ts +7 -7
- package/dist/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
- package/dist/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
- package/dist/client/components/dashboardPortletCard/filterField.d.ts +12 -0
- package/dist/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
- package/dist/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
- package/dist/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
- package/dist/client/components/shared/DateRangeFilter.d.ts +1 -1
- package/dist/client/components/shared/FilterBuilder.d.ts +1 -1
- package/dist/client/components/shared/FilterGroup.d.ts +1 -1
- package/dist/client/components/shared/FilterItem.d.ts +1 -1
- package/dist/client/components/shared/FilterValueSelector.d.ts +1 -1
- package/dist/client/components/shared/dateRangeUtils.d.ts +40 -0
- package/dist/client/components/shared/filterDisplayUtils.d.ts +10 -0
- package/dist/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
- package/dist/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
- package/dist/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
- package/dist/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
- package/dist/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
- package/dist/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
- package/dist/client/components/shared/queryFieldUtils.d.ts +21 -0
- package/dist/client/components/shared/types.d.ts +8 -8
- package/dist/client/components/shared/utils.d.ts +7 -46
- package/dist/client/components.d.ts +11 -11
- package/dist/client/components.js +3 -3
- package/dist/client/hooks/agentChatStream.d.ts +39 -0
- package/dist/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
- package/dist/client/hooks/dashboard/layoutUtils.d.ts +1 -1
- package/dist/client/hooks/dashboard/useDashboardController.d.ts +2 -2
- package/dist/client/hooks/dashboard/useGridLayoutEngine.d.ts +1 -1
- package/dist/client/hooks/dashboard/useRowLayoutEngine.d.ts +1 -1
- package/dist/client/hooks/drillNavigation.d.ts +25 -0
- package/dist/client/hooks/queries/index.d.ts +9 -9
- package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +2 -2
- package/dist/client/hooks/queries/useCubeMetaQuery.d.ts +2 -2
- package/dist/client/hooks/queries/useDryRunQuery.d.ts +2 -2
- package/dist/client/hooks/queries/useExplainAI.d.ts +1 -1
- package/dist/client/hooks/queries/useExplainQuery.d.ts +1 -1
- package/dist/client/hooks/queries/useFlowQuery.d.ts +1 -1
- package/dist/client/hooks/queries/useFunnelQuery.d.ts +1 -1
- package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +1 -1
- package/dist/client/hooks/queries/useRetentionQuery.d.ts +1 -1
- package/dist/client/hooks/useAgentChat.d.ts +1 -1
- package/dist/client/hooks/useAnalysisAI.d.ts +4 -4
- package/dist/client/hooks/useAnalysisBuilderHook.d.ts +27 -27
- package/dist/client/hooks/useAnalysisChartDefaults.d.ts +4 -4
- package/dist/client/hooks/useAnalysisCombinedFields.d.ts +2 -2
- package/dist/client/hooks/useAnalysisInitialization.d.ts +1 -1
- package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +3 -3
- package/dist/client/hooks/useAnalysisQueryExecution.d.ts +7 -7
- package/dist/client/hooks/useAnalysisShare.d.ts +1 -1
- package/dist/client/hooks/useAnalysisUIState.d.ts +2 -2
- package/dist/client/hooks/useDashboardHook.d.ts +2 -2
- package/dist/client/hooks/useDataBrowser.d.ts +5 -5
- package/dist/client/hooks/useDrillInteraction.d.ts +1 -1
- package/dist/client/hooks/useTheme.d.ts +1 -1
- package/dist/client/hooks/useTranslation.d.ts +1 -1
- package/dist/client/hooks.d.ts +11 -11
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons/defaultIcons.d.ts +1 -1
- package/dist/client/icons/index.d.ts +3 -3
- package/dist/client/icons/registry.d.ts +1 -1
- package/dist/client/icons.js +2 -2
- package/dist/client/index.d.ts +74 -74
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers/CubeApiProvider.d.ts +3 -3
- package/dist/client/providers/CubeFeaturesProvider.d.ts +1 -1
- package/dist/client/providers/CubeMetaContext.d.ts +1 -1
- package/dist/client/providers/CubeProvider.d.ts +7 -7
- package/dist/client/providers/I18nProvider.d.ts +1 -1
- package/dist/client/providers.d.ts +4 -4
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.d.ts +2 -2
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/chartDefaults.d.ts +4 -4
- package/dist/client/shared/components/QueryAnalysisPanel.d.ts +1 -1
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/index.d.ts +7 -7
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/types.d.ts +1 -1
- package/dist/client/shared/utils.d.ts +4 -6
- package/dist/client/stores/analysisBuilderStore.d.ts +9 -9
- package/dist/client/stores/dashboardStore.d.ts +3 -3
- package/dist/client/stores/dataBrowserStore.d.ts +1 -1
- package/dist/client/stores/notebookStore.d.ts +1 -1
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/stores/slices/coreSlice.d.ts +3 -3
- package/dist/client/stores/slices/flowSlice.d.ts +3 -3
- package/dist/client/stores/slices/funnelSlice.d.ts +3 -3
- package/dist/client/stores/slices/index.d.ts +7 -7
- package/dist/client/stores/slices/querySlice.d.ts +3 -3
- package/dist/client/stores/slices/retentionSlice.d.ts +3 -3
- package/dist/client/stores/slices/uiSlice.d.ts +2 -2
- package/dist/client/styles.css +1 -1
- package/dist/client/types/analysisConfig.d.ts +4 -4
- package/dist/client/types/drill.d.ts +5 -5
- package/dist/client/types/flow.d.ts +2 -2
- package/dist/client/types/funnel.d.ts +1 -1
- package/dist/client/types/retention.d.ts +2 -2
- package/dist/client/types.d.ts +12 -12
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/chartUtils.d.ts +1 -1
- package/dist/client/utils/configMigration.d.ts +2 -2
- package/dist/client/utils/drillQueryBuilder.d.ts +2 -2
- package/dist/client/utils/exportXlsx.d.ts +2 -2
- package/dist/client/utils/filterUtils.d.ts +1 -1
- package/dist/client/utils/funnelExecution.d.ts +2 -2
- package/dist/client/utils/funnelValidation.d.ts +2 -2
- package/dist/client/utils/index.d.ts +10 -10
- package/dist/client/utils/joinReachability.d.ts +1 -1
- package/dist/client/utils/multiQueryUtils.d.ts +1 -1
- package/dist/client/utils/multiQueryValidation.d.ts +1 -1
- package/dist/client/utils/pivotUtils.d.ts +1 -1
- package/dist/client/utils/shareUtils.d.ts +1 -1
- package/dist/client/utils/thumbnail.d.ts +1 -1
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- package/dist/client/utils.d.ts +2 -2
- package/dist/client/utils.js +6 -6
- package/dist/client-bundle-stats.html +1 -1
- package/dist/mcp-app/mcp-app.html +55 -55
- package/dist/server/{server/adapters → adapters}/base-adapter.d.ts +81 -36
- package/dist/server/adapters/databend-adapter.d.ts +63 -0
- package/dist/server/{server/adapters → adapters}/duckdb-adapter.d.ts +6 -60
- package/dist/server/adapters/mysql-adapter.d.ts +65 -0
- package/dist/server/adapters/postgres-adapter.d.ts +55 -0
- package/dist/server/{server/adapters → adapters}/singlestore-adapter.d.ts +1 -1
- package/dist/server/adapters/snowflake-adapter.d.ts +53 -0
- package/dist/server/{server/adapters → adapters}/sqlite-adapter.d.ts +13 -33
- package/dist/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/{server/agent → agent}/chart-validation.d.ts +0 -5
- package/dist/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/{server/agent → agent}/handler.d.ts +3 -3
- package/dist/server/agent/index.d.ts +11 -0
- package/dist/server/{server/agent → agent}/providers/anthropic.d.ts +1 -1
- package/dist/server/{server/agent → agent}/providers/factory.d.ts +1 -1
- package/dist/server/{server/agent → agent}/providers/google.d.ts +1 -1
- package/dist/server/agent/providers/index.d.ts +6 -0
- package/dist/server/{server/agent → agent}/providers/openai.d.ts +1 -1
- package/dist/server/{server/agent → agent}/system-prompt.d.ts +1 -1
- package/dist/server/{server/agent → agent}/tools.d.ts +4 -4
- package/dist/server/{server/agent → agent}/types.d.ts +1 -1
- package/dist/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/{server/ai → ai}/discovery.d.ts +6 -2
- package/dist/server/{server/ai → ai}/index.d.ts +6 -6
- package/dist/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/{server/ai → ai}/suggestion.d.ts +2 -5
- package/dist/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/{server/ai → ai}/validation.d.ts +2 -5
- package/dist/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/{server/builders → builders}/comparison-query-builder.d.ts +2 -2
- package/dist/server/{server/builders → builders}/cte-builder.d.ts +48 -2
- package/dist/server/{server/builders → builders}/date-time-builder.d.ts +7 -2
- package/dist/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/{server/builders → builders}/filter-builder.d.ts +5 -3
- package/dist/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/builders/flow-query-builder.d.ts +136 -0
- package/dist/server/{server/builders → builders}/funnel-query-builder.d.ts +18 -7
- package/dist/server/{server/builders → builders}/group-by-builder.d.ts +13 -2
- package/dist/server/builders/index.d.ts +13 -0
- package/dist/server/{server/builders → builders}/measure-builder.d.ts +46 -3
- package/dist/server/{server/builders → builders}/retention-query-builder.d.ts +14 -16
- package/dist/server/cache-providers/index.d.ts +5 -0
- package/dist/server/{server/cache-providers → cache-providers}/memory.d.ts +1 -1
- package/dist/server/{server/cache-utils.d.ts → cache-utils.d.ts} +26 -6
- package/dist/server/compiler-metadata.d.ts +11 -0
- package/dist/server/{server/compiler.d.ts → compiler.d.ts} +9 -15
- package/dist/server/{server/cube-utils.d.ts → cube-utils.d.ts} +29 -4
- package/dist/server/{server/database-utils.d.ts → database-utils.d.ts} +1 -1
- package/dist/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/execution/mode-router.d.ts +25 -0
- package/dist/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/{server/executor.d.ts → executor.d.ts} +35 -32
- package/dist/server/{server/executors → executors}/base-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/databend-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/duckdb-executor.d.ts +2 -2
- package/dist/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/{server/executors → executors}/index.d.ts +9 -9
- package/dist/server/{server/executors → executors}/mysql-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/postgres-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/singlestore-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/snowflake-executor.d.ts +2 -2
- package/dist/server/{server/executors → executors}/sqlite-executor.d.ts +2 -2
- package/dist/server/{server/explain → explain}/databend-parser.d.ts +1 -1
- package/dist/server/{server/explain → explain}/duckdb-parser.d.ts +1 -1
- package/dist/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/explain/index.d.ts +9 -0
- package/dist/server/{server/explain → explain}/mysql-parser.d.ts +1 -1
- package/dist/server/{server/explain → explain}/postgres-parser.d.ts +1 -1
- package/dist/server/{server/explain → explain}/snowflake-parser.d.ts +1 -1
- package/dist/server/{server/explain → explain}/sqlite-parser.d.ts +1 -1
- package/dist/server/{server/filter-cache.d.ts → filter-cache.d.ts} +2 -2
- package/dist/server/{server/gap-filler.d.ts → gap-filler.d.ts} +8 -2
- package/dist/server/google-BOnRIN1w.cjs +2 -0
- package/dist/{adapters/google-CFYljAOF.js → server/google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.d.ts +38 -2
- package/dist/server/index.js +6330 -6458
- package/dist/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/{server/logical-plan → logical-plan}/index.d.ts +11 -6
- package/dist/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/{server/logical-plan → logical-plan}/logical-plan-builder.d.ts +5 -5
- package/dist/server/logical-plan/logical-planner.d.ts +39 -0
- package/dist/server/{server/logical-plan → logical-plan}/optimiser.d.ts +4 -2
- package/dist/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/{server/logical-plan → logical-plan}/types.d.ts +18 -10
- package/dist/server/measure-classification.d.ts +40 -0
- package/dist/server/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
- package/dist/server/{server/physical-plan → physical-plan}/drizzle-sql-builder.d.ts +14 -3
- package/dist/server/physical-plan/index.d.ts +2 -0
- package/dist/server/{server/physical-plan → physical-plan}/processors/cte-processor.d.ts +2 -2
- package/dist/server/physical-plan/processors/index.d.ts +8 -0
- package/dist/server/{server/physical-plan → physical-plan}/processors/joins-processor.d.ts +2 -2
- package/dist/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/{server/physical-plan → physical-plan}/processors/predicates-processor.d.ts +2 -2
- package/dist/server/{server/physical-plan → physical-plan}/processors/selection-processor.d.ts +2 -2
- package/dist/server/{server/physical-plan → physical-plan}/processors/shared.d.ts +9 -4
- package/dist/server/{server/physical-plan → physical-plan}/processors/window-processor.d.ts +2 -2
- package/dist/server/query-handlers.d.ts +79 -0
- package/dist/server/query-modes.d.ts +28 -0
- package/dist/server/query-validator.d.ts +9 -0
- package/dist/server/{server/resolvers → resolvers}/calculated-measure-resolver.d.ts +6 -1
- package/dist/server/{server/resolvers → resolvers}/index.d.ts +2 -2
- package/dist/server/{server/resolvers → resolvers}/join-path-resolver.d.ts +7 -1
- package/dist/server/sql-format.d.ts +11 -0
- package/dist/server/{server/template-substitution.d.ts → template-substitution.d.ts} +1 -1
- package/dist/server/{server/types → types}/cache.d.ts +1 -1
- package/dist/server/{server/types → types}/cube.d.ts +22 -8
- package/dist/server/{server/types → types}/executor.d.ts +2 -2
- package/dist/server/{server/types → types}/flow.d.ts +7 -6
- package/dist/server/{server/types → types}/funnel.d.ts +1 -1
- package/dist/server/types/index.d.ts +11 -0
- package/dist/server/{server/types → types}/metadata.d.ts +1 -1
- package/dist/server/{server/types → types}/query.d.ts +4 -4
- package/dist/server/{server/types → types}/retention.d.ts +1 -1
- package/dist/server/{server/types → types}/utils.d.ts +1 -1
- package/dist/server/types/validation.d.ts +14 -0
- package/package.json +22 -7
- package/dist/adapters/google-DUlXeeDA.cjs +0 -2
- package/dist/adapters/handler-CzbCuS6_.cjs +0 -25
- package/dist/adapters/locale-BPB7flIG.js +0 -8249
- package/dist/adapters/locale-tIMrNcCr.cjs +0 -198
- package/dist/adapters/mcp-transport-C2QzXm6h.cjs +0 -40
- package/dist/adapters/mcp-transport-D0B3S1tB.js +0 -579
- package/dist/adapters/openai-D_U4V0kT.cjs +0 -1
- package/dist/adapters/utils-KV37IBIv.cjs +0 -128
- package/dist/client/chunks/DashboardEditModal-CjCIAT-J.js.map +0 -1
- package/dist/client/chunks/RetentionCombinedChart-BPkfcTa8.js.map +0 -1
- package/dist/client/chunks/RetentionHeatmap-DGzLzr7h.js.map +0 -1
- package/dist/client/chunks/analysis-builder-MuMIzoRq.js +0 -5367
- package/dist/client/chunks/analysis-builder-MuMIzoRq.js.map +0 -1
- package/dist/client/chunks/analysis-builder-shared-CYVwSPqt.js.map +0 -1
- package/dist/client/chunks/chart-activity-grid-DmruKPab.js.map +0 -1
- package/dist/client/chunks/chart-area-DHCPM4Em.js +0 -450
- package/dist/client/chunks/chart-area-DHCPM4Em.js.map +0 -1
- package/dist/client/chunks/chart-bar-KddciGDv.js +0 -271
- package/dist/client/chunks/chart-bar-KddciGDv.js.map +0 -1
- package/dist/client/chunks/chart-box-plot-DYKfyOI8.js.map +0 -1
- package/dist/client/chunks/chart-bubble-CfqiB538.js +0 -273
- package/dist/client/chunks/chart-bubble-CfqiB538.js.map +0 -1
- package/dist/client/chunks/chart-candlestick-Dwc92Mrj.js.map +0 -1
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js +0 -101
- package/dist/client/chunks/chart-config-area-Bq_UsW3x.js.map +0 -1
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js +0 -95
- package/dist/client/chunks/chart-config-bar-_JEGZnAu.js.map +0 -1
- package/dist/client/chunks/chart-config-box-plot-DJ-dWWXA.js.map +0 -1
- package/dist/client/chunks/chart-config-gauge-DSwC04l0.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-delta-D6BIkHL3.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-number-Bx-V9a62.js.map +0 -1
- package/dist/client/chunks/chart-config-kpi-text-CcqC1u-8.js.map +0 -1
- package/dist/client/chunks/chart-config-line-Db3jDsWc.js.map +0 -1
- package/dist/client/chunks/chart-config-pie-DD4SmRTF.js.map +0 -1
- package/dist/client/chunks/chart-config-radar-CC2XAaGr.js.map +0 -1
- package/dist/client/chunks/chart-config-radial-bar-DmxKx1R0.js.map +0 -1
- package/dist/client/chunks/chart-config-tree-map-BI-oQStO.js.map +0 -1
- package/dist/client/chunks/chart-config-waterfall-DSnyixbI.js.map +0 -1
- package/dist/client/chunks/chart-data-table-BO4sXsim.js.map +0 -1
- package/dist/client/chunks/chart-funnel-DnWRsmnS.js.map +0 -1
- package/dist/client/chunks/chart-gauge-CgMeqeGb.js +0 -424
- package/dist/client/chunks/chart-gauge-CgMeqeGb.js.map +0 -1
- package/dist/client/chunks/chart-heat-map-DcGm9SWK.js +0 -231
- package/dist/client/chunks/chart-heat-map-DcGm9SWK.js.map +0 -1
- package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js +0 -343
- package/dist/client/chunks/chart-kpi-delta-C2wKPqCb.js.map +0 -1
- package/dist/client/chunks/chart-kpi-number-gWYF44ol.js +0 -322
- package/dist/client/chunks/chart-kpi-number-gWYF44ol.js.map +0 -1
- package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js +0 -149
- package/dist/client/chunks/chart-kpi-text-DIYtJtk4.js.map +0 -1
- package/dist/client/chunks/chart-line-9BEGN5Ti.js +0 -433
- package/dist/client/chunks/chart-line-9BEGN5Ti.js.map +0 -1
- package/dist/client/chunks/chart-markdown-dgUetjyM.js.map +0 -1
- package/dist/client/chunks/chart-measure-profile-ClfpLs4q.js.map +0 -1
- package/dist/client/chunks/chart-pie-BjAIhyOi.js +0 -172
- package/dist/client/chunks/chart-pie-BjAIhyOi.js.map +0 -1
- package/dist/client/chunks/chart-radar-Dgkcl2bN.js +0 -154
- package/dist/client/chunks/chart-radar-Dgkcl2bN.js.map +0 -1
- package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js +0 -148
- package/dist/client/chunks/chart-radial-bar-DdWJjAhK.js.map +0 -1
- package/dist/client/chunks/chart-sankey-M3XpO_ah.js.map +0 -1
- package/dist/client/chunks/chart-scatter-DaHYP_OL.js +0 -255
- package/dist/client/chunks/chart-scatter-DaHYP_OL.js.map +0 -1
- package/dist/client/chunks/chart-sunburst-A_u6lqlS.js.map +0 -1
- package/dist/client/chunks/chart-tree-map-uiwUU4nb.js +0 -298
- package/dist/client/chunks/chart-tree-map-uiwUU4nb.js.map +0 -1
- package/dist/client/chunks/chart-waterfall-BuhMoagf.js.map +0 -1
- package/dist/client/chunks/charts-core-jRtb0S2M.js.map +0 -1
- package/dist/client/chunks/schema-visualization-DE09kQE3.js.map +0 -1
- package/dist/client/chunks/useDirtyStateTracking-CoeQbprt.js.map +0 -1
- package/dist/client/chunks/useExplainAI-DlnXWdmz.js.map +0 -1
- package/dist/client/chunks/utils-CTKNaXS8.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-D_U4V0kT.cjs +0 -1
- package/dist/server/server/adapters/databend-adapter.d.ts +0 -114
- package/dist/server/server/adapters/mysql-adapter.d.ts +0 -122
- package/dist/server/server/adapters/postgres-adapter.d.ts +0 -119
- package/dist/server/server/adapters/snowflake-adapter.d.ts +0 -116
- package/dist/server/server/agent/index.d.ts +0 -11
- package/dist/server/server/agent/providers/index.d.ts +0 -6
- package/dist/server/server/builders/flow-query-builder.d.ts +0 -109
- package/dist/server/server/builders/index.d.ts +0 -13
- package/dist/server/server/cache-providers/index.d.ts +0 -5
- package/dist/server/server/explain/index.d.ts +0 -9
- package/dist/server/server/index.d.ts +0 -36
- package/dist/server/server/logical-plan/logical-planner.d.ts +0 -232
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +0 -50
- package/dist/server/server/physical-plan/index.d.ts +0 -2
- package/dist/server/server/physical-plan/processors/index.d.ts +0 -6
- package/dist/server/server/types/index.d.ts +0 -11
- /package/dist/server/{server/agent → agent}/providers/types.d.ts +0 -0
- /package/dist/server/{server/ai → ai}/mcp-prompts.d.ts +0 -0
- /package/dist/server/{server/ai → ai}/query-schema.d.ts +0 -0
- /package/dist/server/{server/ai → ai}/schemas.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/explain-analysis-prompt.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/index.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/single-step-prompt.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/step0-validation-prompt.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/step1-shape-prompt.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/step2-complete-prompt.d.ts +0 -0
- /package/dist/server/{server/prompts → prompts}/types.d.ts +0 -0
- /package/dist/server/{server/types → types}/analysis.d.ts +0 -0
- /package/dist/server/{server/types → types}/core.d.ts +0 -0
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, T as n, _ as r, i, k as a, n as o, w as s, x as c, y as l } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { l as u } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import d, { useState as f } from "react";
|
|
5
|
-
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
6
|
-
import { CartesianGrid as h, Legend as g, Scatter as _, ScatterChart as v, Tooltip as y, XAxis as b, YAxis as x } from "recharts";
|
|
7
|
-
//#region src/client/components/charts/ScatterChart.tsx
|
|
8
|
-
var S = /* @__PURE__ */ e({ default: () => C }), C = d.memo(function({ data: e, chartConfig: d, displayConfig: S = {}, queryObject: C, height: w = "100%", colorPalette: T }) {
|
|
9
|
-
let { t: E } = a(), [D, O] = f(null), k = r();
|
|
10
|
-
try {
|
|
11
|
-
let r = {
|
|
12
|
-
showLegend: S?.showLegend ?? !0,
|
|
13
|
-
showGrid: S?.showGrid ?? !0,
|
|
14
|
-
showTooltip: S?.showTooltip ?? !0
|
|
15
|
-
}, a = S?.xAxisFormat, f = S?.leftYAxisFormat;
|
|
16
|
-
if (!e || e.length === 0) return /* @__PURE__ */ p("div", {
|
|
17
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
18
|
-
style: { height: w },
|
|
19
|
-
children: /* @__PURE__ */ m("div", {
|
|
20
|
-
className: "dc:text-center",
|
|
21
|
-
children: [/* @__PURE__ */ p("div", {
|
|
22
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
23
|
-
children: E("chart.runtime.noData")
|
|
24
|
-
}), /* @__PURE__ */ p("div", {
|
|
25
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
26
|
-
children: E("chart.runtime.noDataHint.scatter")
|
|
27
|
-
})]
|
|
28
|
-
})
|
|
29
|
-
});
|
|
30
|
-
let A, j, M = [];
|
|
31
|
-
if (d?.xAxis && d?.yAxis) {
|
|
32
|
-
A = Array.isArray(d.xAxis) ? d.xAxis[0] : d.xAxis, j = Array.isArray(d.yAxis) ? d.yAxis[0] : d.yAxis;
|
|
33
|
-
let e = d.series;
|
|
34
|
-
M = e ? Array.isArray(e) ? e : [e] : [];
|
|
35
|
-
} else if (d?.x && d?.y) A = d.x, j = Array.isArray(d.y) ? d.y[0] : d.y;
|
|
36
|
-
else return /* @__PURE__ */ p("div", {
|
|
37
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
38
|
-
style: { height: w },
|
|
39
|
-
children: /* @__PURE__ */ m("div", {
|
|
40
|
-
className: "dc:text-center",
|
|
41
|
-
children: [/* @__PURE__ */ p("div", {
|
|
42
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
43
|
-
children: E("chart.runtime.configError")
|
|
44
|
-
}), /* @__PURE__ */ p("div", {
|
|
45
|
-
className: "dc:text-xs",
|
|
46
|
-
children: E("chart.runtime.configErrorHint.axisInvalid")
|
|
47
|
-
})]
|
|
48
|
-
})
|
|
49
|
-
});
|
|
50
|
-
if (!A || !j) return /* @__PURE__ */ p("div", {
|
|
51
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
52
|
-
style: { height: w },
|
|
53
|
-
children: /* @__PURE__ */ m("div", {
|
|
54
|
-
className: "dc:text-center",
|
|
55
|
-
children: [/* @__PURE__ */ p("div", {
|
|
56
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
57
|
-
children: E("chart.runtime.configError")
|
|
58
|
-
}), /* @__PURE__ */ p("div", {
|
|
59
|
-
className: "dc:text-xs",
|
|
60
|
-
children: E("chart.runtime.configErrorHint.axisFields")
|
|
61
|
-
})]
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
let N = (C?.timeDimensions || []).map((e) => e.dimension), P, F = {};
|
|
65
|
-
if (M.length > 0) {
|
|
66
|
-
let r = M[0];
|
|
67
|
-
e.forEach((e) => {
|
|
68
|
-
let i = String(e[r] || "Default");
|
|
69
|
-
F[i] || (F[i] = []);
|
|
70
|
-
let a = t(C, A), o = c(e[A], a) || e[A], l = n(e[j]), u = typeof o == "string" ? parseFloat(o) : o;
|
|
71
|
-
if (s(u) && l !== null) {
|
|
72
|
-
let n = {};
|
|
73
|
-
N.forEach((r) => {
|
|
74
|
-
if (e[r]) {
|
|
75
|
-
let i = t(C, r);
|
|
76
|
-
n[r] = c(e[r], i);
|
|
77
|
-
}
|
|
78
|
-
}), F[i].push({
|
|
79
|
-
x: u,
|
|
80
|
-
y: l,
|
|
81
|
-
name: i,
|
|
82
|
-
timeValues: n,
|
|
83
|
-
originalItem: e
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
}), P = Object.keys(F).flatMap((e) => F[e]);
|
|
87
|
-
} else {
|
|
88
|
-
let r = t(C, A);
|
|
89
|
-
P = e.map((e) => {
|
|
90
|
-
let i = c(e[A], r) || e[A], a = n(e[j]), o = typeof i == "string" ? parseFloat(i) : i, l = {};
|
|
91
|
-
return N.forEach((n) => {
|
|
92
|
-
if (e[n]) {
|
|
93
|
-
let r = t(C, n);
|
|
94
|
-
l[n] = c(e[n], r);
|
|
95
|
-
}
|
|
96
|
-
}), {
|
|
97
|
-
x: o,
|
|
98
|
-
y: a,
|
|
99
|
-
name: "Point",
|
|
100
|
-
timeValues: l,
|
|
101
|
-
originalItem: e,
|
|
102
|
-
isValid: s(o) && a !== null
|
|
103
|
-
};
|
|
104
|
-
}).filter((e) => e.isValid);
|
|
105
|
-
}
|
|
106
|
-
if (!P || P.length === 0) return /* @__PURE__ */ p("div", {
|
|
107
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
108
|
-
style: { height: w },
|
|
109
|
-
children: /* @__PURE__ */ m("div", {
|
|
110
|
-
className: "dc:text-center",
|
|
111
|
-
children: [/* @__PURE__ */ p("div", {
|
|
112
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
113
|
-
children: E("chart.runtime.noValidData")
|
|
114
|
-
}), /* @__PURE__ */ p("div", {
|
|
115
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
116
|
-
children: "No valid data points for scatter chart after transformation"
|
|
117
|
-
})]
|
|
118
|
-
})
|
|
119
|
-
});
|
|
120
|
-
let I = Object.keys(F), L = I.length > 1 && I.length <= 20, R = r.showLegend && L;
|
|
121
|
-
return /* @__PURE__ */ p(u, {
|
|
122
|
-
height: w,
|
|
123
|
-
children: /* @__PURE__ */ m(v, {
|
|
124
|
-
margin: {
|
|
125
|
-
...i,
|
|
126
|
-
left: 40
|
|
127
|
-
},
|
|
128
|
-
accessibilityLayer: !1,
|
|
129
|
-
children: [
|
|
130
|
-
r.showGrid && /* @__PURE__ */ p(h, { strokeDasharray: "3 3" }),
|
|
131
|
-
/* @__PURE__ */ p(b, {
|
|
132
|
-
type: "number",
|
|
133
|
-
dataKey: "x",
|
|
134
|
-
name: a?.label || k(A),
|
|
135
|
-
tick: { fontSize: 12 },
|
|
136
|
-
tickFormatter: a ? (e) => l(e, a) : void 0
|
|
137
|
-
}),
|
|
138
|
-
/* @__PURE__ */ p(x, {
|
|
139
|
-
type: "number",
|
|
140
|
-
dataKey: "y",
|
|
141
|
-
name: f?.label || k(j),
|
|
142
|
-
tick: { fontSize: 12 },
|
|
143
|
-
tickFormatter: f ? (e) => l(e, f) : void 0,
|
|
144
|
-
label: {
|
|
145
|
-
value: f?.label || k(j),
|
|
146
|
-
angle: -90,
|
|
147
|
-
position: "left",
|
|
148
|
-
style: {
|
|
149
|
-
textAnchor: "middle",
|
|
150
|
-
fontSize: "12px"
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}),
|
|
154
|
-
r.showTooltip && /* @__PURE__ */ p(y, {
|
|
155
|
-
cursor: { strokeDasharray: "3 3" },
|
|
156
|
-
content: ({ active: e, payload: t }) => {
|
|
157
|
-
if (!e || !t || t.length === 0) return null;
|
|
158
|
-
let n = t[0]?.payload;
|
|
159
|
-
return n ? /* @__PURE__ */ m("div", {
|
|
160
|
-
style: {
|
|
161
|
-
backgroundColor: "white",
|
|
162
|
-
border: "1px solid #e5e7eb",
|
|
163
|
-
borderRadius: "0.5rem",
|
|
164
|
-
fontSize: "0.875rem",
|
|
165
|
-
color: "#1f2937",
|
|
166
|
-
boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1)",
|
|
167
|
-
padding: "8px 12px"
|
|
168
|
-
},
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ p("div", {
|
|
171
|
-
style: {
|
|
172
|
-
fontWeight: 600,
|
|
173
|
-
marginBottom: "4px"
|
|
174
|
-
},
|
|
175
|
-
children: n.name
|
|
176
|
-
}),
|
|
177
|
-
n.timeValues && Object.keys(n.timeValues).length > 0 && /* @__PURE__ */ p("div", {
|
|
178
|
-
style: {
|
|
179
|
-
marginBottom: "4px",
|
|
180
|
-
color: "#6b7280"
|
|
181
|
-
},
|
|
182
|
-
children: Object.entries(n.timeValues).map(([e, t]) => /* @__PURE__ */ m("div", { children: [
|
|
183
|
-
k(e),
|
|
184
|
-
": ",
|
|
185
|
-
t
|
|
186
|
-
] }, e))
|
|
187
|
-
}),
|
|
188
|
-
/* @__PURE__ */ m("div", { children: [
|
|
189
|
-
a?.label || k(A),
|
|
190
|
-
": ",
|
|
191
|
-
l(n.x, a)
|
|
192
|
-
] }),
|
|
193
|
-
/* @__PURE__ */ m("div", { children: [
|
|
194
|
-
f?.label || k(j),
|
|
195
|
-
": ",
|
|
196
|
-
l(n.y, f)
|
|
197
|
-
] })
|
|
198
|
-
]
|
|
199
|
-
}) : null;
|
|
200
|
-
}
|
|
201
|
-
}),
|
|
202
|
-
R && /* @__PURE__ */ p(g, {
|
|
203
|
-
wrapperStyle: {
|
|
204
|
-
fontSize: "12px",
|
|
205
|
-
paddingTop: "10px"
|
|
206
|
-
},
|
|
207
|
-
iconType: "circle",
|
|
208
|
-
iconSize: 8,
|
|
209
|
-
layout: "horizontal",
|
|
210
|
-
align: "center",
|
|
211
|
-
verticalAlign: "bottom",
|
|
212
|
-
onMouseEnter: (e) => O(String(e.dataKey || "")),
|
|
213
|
-
onMouseLeave: () => O(null)
|
|
214
|
-
}),
|
|
215
|
-
L ? I.map((e, t) => /* @__PURE__ */ p(_, {
|
|
216
|
-
name: e,
|
|
217
|
-
data: F[e],
|
|
218
|
-
fill: T?.colors && T.colors[t % T.colors.length] || o[t % o.length],
|
|
219
|
-
fillOpacity: D ? D === e ? 1 : .3 : 1
|
|
220
|
-
}, e)) : /* @__PURE__ */ p(_, {
|
|
221
|
-
name: "Data",
|
|
222
|
-
data: P,
|
|
223
|
-
fill: T?.colors && T.colors[0] || o[0]
|
|
224
|
-
})
|
|
225
|
-
]
|
|
226
|
-
})
|
|
227
|
-
});
|
|
228
|
-
} catch (e) {
|
|
229
|
-
return /* @__PURE__ */ p("div", {
|
|
230
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
231
|
-
style: { height: w },
|
|
232
|
-
children: /* @__PURE__ */ m("div", {
|
|
233
|
-
className: "dc:text-center",
|
|
234
|
-
children: [
|
|
235
|
-
/* @__PURE__ */ p("div", {
|
|
236
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
237
|
-
children: E("chart.runtime.chartError", { chartType: "Scatter Chart" })
|
|
238
|
-
}),
|
|
239
|
-
/* @__PURE__ */ p("div", {
|
|
240
|
-
className: "dc:text-xs dc:mb-2",
|
|
241
|
-
children: e instanceof Error ? e.message : E("chart.runtime.unknownError")
|
|
242
|
-
}),
|
|
243
|
-
/* @__PURE__ */ p("div", {
|
|
244
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
245
|
-
children: E("chart.runtime.checkConfig")
|
|
246
|
-
})
|
|
247
|
-
]
|
|
248
|
-
})
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
//#endregion
|
|
253
|
-
export { S as n, C as t };
|
|
254
|
-
|
|
255
|
-
//# sourceMappingURL=chart-scatter-DaHYP_OL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-scatter-DaHYP_OL.js","names":[],"sources":["../../../src/client/components/charts/ScatterChart.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { ScatterChart as RechartsScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Legend, Tooltip } from 'recharts'\nimport ChartContainer from './ChartContainer'\nimport { CHART_COLORS, CHART_MARGINS } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity, parseNumericValue, isValidNumericValue, formatAxisValue } from '../../utils/chartUtils'\nimport { useCubeFieldLabel } from '../../hooks/useCubeFieldLabel'\nimport type { ChartProps } from '../../types'\n\nconst ScatterChart = React.memo(function ScatterChart({\n data,\n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const { t } = useTranslation()\n const [hoveredLegend, setHoveredLegend] = useState<string | null>(null)\n // Use specialized hook to avoid re-renders from unrelated context changes\n const getFieldLabel = useCubeFieldLabel()\n \n try {\n const safeDisplayConfig = {\n showLegend: displayConfig?.showLegend ?? true,\n showGrid: displayConfig?.showGrid ?? true,\n showTooltip: displayConfig?.showTooltip ?? true\n }\n\n // Extract axis format configs\n // For scatter charts, xAxis uses xAxisFormat, yAxis uses leftYAxisFormat\n const xAxisFormat = displayConfig?.xAxisFormat\n const yAxisFormat = displayConfig?.leftYAxisFormat\n\n if (!data || data.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">{t('chart.runtime.noDataHint.scatter')}</div>\n </div>\n </div>\n )\n }\n\n // Validate chartConfig - support both legacy and new formats\n let xAxisField: string\n let yAxisField: string\n let seriesFields: string[] = []\n \n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - handle both string and array values\n xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis\n yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis\n // Normalize series to array\n const seriesConfig = chartConfig.series\n seriesFields = seriesConfig ? (Array.isArray(seriesConfig) ? seriesConfig : [seriesConfig]) : []\n } else if (chartConfig?.x && chartConfig?.y) {\n // Legacy format (adapt for scatter chart)\n xAxisField = chartConfig.x\n yAxisField = Array.isArray(chartConfig.y) ? chartConfig.y[0] : chartConfig.y\n } else {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.axisInvalid')}</div>\n </div>\n </div>\n )\n }\n\n if (!xAxisField || !yAxisField) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.configError')}</div>\n <div className=\"dc:text-xs\">{t('chart.runtime.configErrorHint.axisFields')}</div>\n </div>\n </div>\n )\n }\n\n // Extract time dimensions from query for tooltip display\n const timeDimensions = queryObject?.timeDimensions || []\n const timeDimensionFields = timeDimensions.map((td: any) => td.dimension)\n\n // Transform data for scatter plot\n // Null handling: Filter out data points where x or y coordinates are null\n let scatterData: any[]\n let seriesGroups: { [key: string]: any[] } = {}\n\n if (seriesFields.length > 0) {\n // Group data by series field\n const seriesField = seriesFields[0]\n data.forEach(item => {\n const seriesValue = String(item[seriesField] || 'Default')\n if (!seriesGroups[seriesValue]) {\n seriesGroups[seriesValue] = []\n }\n\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n\n // Only add point if both x and y are valid numbers\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n if (isValidNumericValue(xNum) && yValue !== null) {\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n seriesGroups[seriesValue].push({\n x: xNum,\n y: yValue,\n name: seriesValue,\n timeValues,\n originalItem: item\n })\n }\n })\n\n // Collect all valid points from all series for validation\n // (The actual rendering uses seriesGroups with series separated)\n const seriesKeys = Object.keys(seriesGroups)\n scatterData = seriesKeys.flatMap(key => seriesGroups[key])\n } else {\n // Single series scatter plot\n const xGranularity = getFieldGranularity(queryObject, xAxisField)\n scatterData = data\n .map(item => {\n const xValue = formatTimeValue(item[xAxisField], xGranularity) || item[xAxisField]\n const yValue = parseNumericValue(item[yAxisField])\n const xNum = typeof xValue === 'string' ? parseFloat(xValue) : xValue\n\n // Extract time dimension values for tooltip\n const timeValues: { [key: string]: string } = {}\n timeDimensionFields.forEach((field: string) => {\n if (item[field]) {\n const granularity = getFieldGranularity(queryObject, field)\n timeValues[field] = formatTimeValue(item[field], granularity)\n }\n })\n\n return {\n x: xNum,\n y: yValue,\n name: `Point`,\n timeValues,\n originalItem: item,\n isValid: isValidNumericValue(xNum) && yValue !== null\n }\n })\n .filter(point => point.isValid)\n }\n \n // Validate transformed data\n if (!scatterData || scatterData.length === 0) {\n return (\n <div className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.noValidData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">No valid data points for scatter chart after transformation</div>\n </div>\n </div>\n )\n }\n\n const seriesKeys = Object.keys(seriesGroups)\n // Limit series to prevent performance issues with high-cardinality fields (e.g., dates)\n // If more than 20 unique series, fall back to single-series mode\n const MAX_SERIES = 20\n const hasSeries = seriesKeys.length > 1 && seriesKeys.length <= MAX_SERIES\n \n // Determine if legend will be shown\n const showLegend = safeDisplayConfig.showLegend && hasSeries\n \n // Use custom chart margins with extra left space for Y-axis label\n const chartMargins = {\n ...CHART_MARGINS,\n left: 40 // Increased from 20 to 40 for Y-axis label space\n }\n\n return (\n <ChartContainer height={height}>\n <RechartsScatterChart margin={chartMargins} accessibilityLayer={false}>\n {safeDisplayConfig.showGrid && (\n <CartesianGrid strokeDasharray=\"3 3\" />\n )}\n <XAxis\n type=\"number\"\n dataKey=\"x\"\n name={xAxisFormat?.label || getFieldLabel(xAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={xAxisFormat ? (value) => formatAxisValue(value, xAxisFormat) : undefined}\n />\n <YAxis\n type=\"number\"\n dataKey=\"y\"\n name={yAxisFormat?.label || getFieldLabel(yAxisField)}\n tick={{ fontSize: 12 }}\n tickFormatter={yAxisFormat ? (value) => formatAxisValue(value, yAxisFormat) : undefined}\n label={{ value: yAxisFormat?.label || getFieldLabel(yAxisField), angle: -90, position: 'left', style: { textAnchor: 'middle', fontSize: '12px' } }}\n />\n {safeDisplayConfig.showTooltip && (\n <Tooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null\n // Only show the first (active) point\n const point = payload[0]?.payload\n if (!point) return null\n\n return (\n <div style={{\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n color: '#1f2937',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n padding: '8px 12px'\n }}>\n <div style={{ fontWeight: 600, marginBottom: '4px' }}>{point.name}</div>\n {/* Show time dimension values if present */}\n {point.timeValues && Object.keys(point.timeValues).length > 0 && (\n <div style={{ marginBottom: '4px', color: '#6b7280' }}>\n {Object.entries(point.timeValues).map(([field, value]) => (\n <div key={field}>{getFieldLabel(field)}: {value as string}</div>\n ))}\n </div>\n )}\n <div>{xAxisFormat?.label || getFieldLabel(xAxisField)}: {formatAxisValue(point.x, xAxisFormat)}</div>\n <div>{yAxisFormat?.label || getFieldLabel(yAxisField)}: {formatAxisValue(point.y, yAxisFormat)}</div>\n </div>\n )\n }}\n />\n )}\n {showLegend && (\n <Legend \n wrapperStyle={{ fontSize: '12px', paddingTop: '10px' }}\n iconType=\"circle\"\n iconSize={8}\n layout=\"horizontal\"\n align=\"center\"\n verticalAlign=\"bottom\"\n onMouseEnter={(o) => setHoveredLegend(String(o.dataKey || ''))}\n onMouseLeave={() => setHoveredLegend(null)}\n />\n )}\n {hasSeries ? (\n // Multiple series\n seriesKeys.map((seriesKey, index) => (\n <Scatter\n key={seriesKey}\n name={seriesKey}\n data={seriesGroups[seriesKey]}\n fill={(colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]}\n fillOpacity={hoveredLegend ? (hoveredLegend === seriesKey ? 1 : 0.3) : 1}\n />\n ))\n ) : (\n // Single series\n <Scatter\n name=\"Data\"\n data={scatterData}\n fill={(colorPalette?.colors && colorPalette.colors[0]) || CHART_COLORS[0]}\n />\n )}\n </RechartsScatterChart>\n </ChartContainer>\n )\n } catch (error) {\n // 'ScatterChart rendering error\n return (\n <div className=\"dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4\" style={{ height }}>\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.chartError', { chartType: 'Scatter 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 ScatterChart"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-sunburst-A_u6lqlS.js","names":[],"sources":["../../../src/client/components/charts/SunburstChart.tsx"],"sourcesContent":["/**\n * SunburstChart Component\n *\n * Visualizes flow data using a radial sunburst diagram showing paths from a starting step.\n * Works with the same data as SankeyChart but displays it as hierarchical rings.\n *\n * The chart displays:\n * - Center: Starting step (layer 0)\n * - Outward rings: Steps after the starting step (layers 1, 2, 3...)\n * - Values indicating count of entities following each path\n *\n * Note: Unlike Sankey, Sunburst only shows \"after\" steps for cleaner visualization.\n */\n\nimport React, { useMemo, useRef, useState, useEffect } from 'react'\nimport { useTranslation } from '../../hooks/useTranslation'\nimport { SunburstChart as RechartsSunburst, ResponsiveContainer, Tooltip } from 'recharts'\nimport { CHART_COLORS } from '../../utils/chartConstants'\nimport type { ChartProps } from '../../types'\nimport type { FlowChartData, SankeyNode, SankeyLink } from '../../types/flow'\nimport { isSankeyData } from '../../types/flow'\n\n/**\n * Hierarchical data structure for Recharts Sunburst\n */\ninterface SunburstNode {\n name: string\n value?: number\n fill?: string\n children?: SunburstNode[]\n /** Original event name (before path prefix was added) */\n originalName?: string\n}\n\n\n/**\n * Extract FlowChartData from various data formats\n */\nfunction extractFlowData(data: unknown[]): FlowChartData | null {\n if (!data || data.length === 0) return null\n\n // If first element is already FlowChartData (server returns as single-row array)\n if (isSankeyData(data[0])) {\n return data[0] as FlowChartData\n }\n\n // If data itself is FlowChartData shape\n if (isSankeyData(data)) {\n return data as unknown as FlowChartData\n }\n\n // Check if data is an array with nodes and links at top level\n const asAny = data as unknown as Record<string, unknown>\n if (asAny.nodes && asAny.links) {\n return asAny as unknown as FlowChartData\n }\n\n return null\n}\n\n/**\n * Transform FlowChartData (nodes + links) into hierarchical Sunburst format\n * Only includes layer 0 (starting) and positive layers (after steps)\n *\n * The transformation builds a tree where:\n * - Root = starting event(s) at layer 0\n * - Children = events linked from parent, following the flow\n * - Each path in the tree represents a unique user journey\n */\nfunction transformToSunburstFormat(\n data: FlowChartData,\n colorPalette?: string[]\n): SunburstNode | null {\n const { nodes, links } = data\n\n if (!nodes || nodes.length === 0) return null\n\n // Filter to only include layer 0 and positive layers (after steps)\n const afterNodes = nodes.filter((n) => n.layer >= 0)\n if (afterNodes.length === 0) return null\n\n // Use theme colors - either from palette or default CHART_COLORS\n const colors = colorPalette || CHART_COLORS\n\n // Get unique event names and create a color map\n // This ensures each event type gets a consistent, distinct color\n const uniqueNames = [...new Set(afterNodes.map((n) => n.name))]\n const colorMap = new Map<string, string>()\n uniqueNames.forEach((name, index) => {\n colorMap.set(name, colors[index % colors.length])\n })\n\n // Create a map of node IDs for quick lookup\n const nodeMap = new Map<string, SankeyNode>()\n afterNodes.forEach((node) => nodeMap.set(node.id, node))\n\n // Create a map of links from source to targets\n // Key: source node ID, Value: array of links from that source\n const linksBySource = new Map<string, SankeyLink[]>()\n links.forEach((link) => {\n // Only include links where source is in our afterNodes set\n if (!nodeMap.has(link.source)) return\n const sourceLinks = linksBySource.get(link.source) || []\n sourceLinks.push(link)\n linksBySource.set(link.source, sourceLinks)\n })\n\n // Find max layer for determining depth\n const maxLayer = Math.max(...afterNodes.map((n) => n.layer))\n\n // Counter for generating unique IDs\n let nodeCounter = 0\n\n /**\n * Recursively build children for a node by following outgoing links\n * Each link becomes a child node in the tree\n *\n * @param nodeId - The source node ID to build children from\n * @param currentLayer - Current layer depth\n * @param pathPrefix - Path from root to this node (for unique naming)\n */\n function buildChildren(nodeId: string, currentLayer: number, pathPrefix: string): SunburstNode[] {\n if (currentLayer >= maxLayer) return []\n\n const outgoingLinks = linksBySource.get(nodeId) || []\n if (outgoingLinks.length === 0) return []\n\n // Filter and map links to children\n const children: SunburstNode[] = []\n\n for (const link of outgoingLinks) {\n const targetNode = nodeMap.get(link.target)\n\n // Only include links to nodes in the next layer\n if (!targetNode || targetNode.layer !== currentLayer + 1) continue\n\n // Generate a unique name by including counter to avoid React key collisions\n nodeCounter++\n const uniqueName = `${targetNode.name}_${nodeCounter}`\n\n // Recursively build grandchildren with updated path\n const newPath = pathPrefix ? `${pathPrefix}→${targetNode.name}` : targetNode.name\n const grandchildren = buildChildren(link.target, currentLayer + 1, newPath)\n\n const child: SunburstNode = {\n name: uniqueName,\n originalName: targetNode.name,\n value: link.value,\n fill: colorMap.get(targetNode.name) || colors[0],\n }\n\n if (grandchildren.length > 0) {\n child.children = grandchildren\n }\n\n children.push(child)\n }\n\n return children\n }\n\n // Get starting nodes (layer 0)\n const startingNodes = afterNodes.filter((n) => n.layer === 0)\n if (startingNodes.length === 0) return null\n\n // Build the tree starting from layer 0 nodes\n if (startingNodes.length === 1) {\n // Single starting node - use it as root\n const startNode = startingNodes[0]\n const children = buildChildren(startNode.id, 0, startNode.name)\n\n const result: SunburstNode = {\n name: startNode.name,\n originalName: startNode.name,\n value: startNode.value || children.reduce((sum, c) => sum + (c.value || 0), 0),\n fill: colorMap.get(startNode.name) || colors[0],\n }\n\n if (children.length > 0) {\n result.children = children\n }\n\n return result\n }\n\n // Multiple starting nodes - create a virtual root\n const rootChildren = startingNodes.map((startNode, index) => {\n nodeCounter++\n const children = buildChildren(startNode.id, 0, startNode.name)\n\n const child: SunburstNode = {\n name: `${startNode.name}_root_${index}`,\n originalName: startNode.name,\n value: startNode.value || children.reduce((sum, c) => sum + (c.value || 0), 0),\n fill: colorMap.get(startNode.name) || colors[0],\n }\n\n if (children.length > 0) {\n child.children = children\n }\n\n return child\n })\n\n return {\n name: 'Start',\n originalName: 'Start',\n children: rootChildren,\n }\n}\n\n/**\n * Custom tooltip for Sunburst chart\n * Shows the original event name (not the unique key used internally)\n */\nfunction SunburstTooltip({\n active,\n payload,\n}: {\n active?: boolean\n payload?: Array<{ payload: SunburstNode }>\n}) {\n if (!active || !payload || payload.length === 0) return null\n\n const data = payload[0].payload\n // Use originalName if available, otherwise fall back to name\n const displayName = data.originalName || data.name\n\n return (\n <div className=\"bg-dc-surface dc:border border-dc-border dc:rounded-md dc:px-3 dc:py-2 dc:shadow-lg dc:text-sm\">\n <div className=\"dc:font-medium text-dc-text\">{displayName}</div>\n {data.value !== undefined && (\n <div className=\"text-dc-text-secondary dc:mt-1\">\n <span className=\"dc:font-medium\">{data.value.toLocaleString()}</span> entities\n </div>\n )}\n </div>\n )\n}\n\n/**\n * SunburstChart Component\n *\n * Renders a sunburst diagram visualization from FlowChartData.\n * Shows hierarchical flow paths radiating from a central starting step.\n */\nconst SunburstChart = React.memo(function SunburstChart({\n data,\n height = '100%',\n colorPalette,\n displayConfig,\n}: ChartProps) {\n const { t } = useTranslation()\n // Track chart area dimensions (not the full container which includes footer)\n const chartAreaRef = useRef<HTMLDivElement>(null)\n const [chartSize, setChartSize] = useState({ width: 400, height: 400 })\n\n useEffect(() => {\n const updateSize = () => {\n if (chartAreaRef.current) {\n setChartSize({\n width: chartAreaRef.current.offsetWidth,\n height: chartAreaRef.current.offsetHeight,\n })\n }\n }\n updateSize()\n window.addEventListener('resize', updateSize)\n\n // Use ResizeObserver for more accurate size tracking\n const resizeObserver = new ResizeObserver(updateSize)\n if (chartAreaRef.current) {\n resizeObserver.observe(chartAreaRef.current)\n }\n\n return () => {\n window.removeEventListener('resize', updateSize)\n resizeObserver.disconnect()\n }\n }, [])\n\n // Get display config options\n const displayConfigAny = displayConfig as Record<string, unknown> | undefined\n const innerRadius = (displayConfigAny?.innerRadius as number) ?? 40\n\n // Extract and transform data\n const sunburstData = useMemo(() => {\n const extracted = extractFlowData(data || [])\n if (!extracted) return null\n\n return transformToSunburstFormat(extracted, colorPalette?.colors || CHART_COLORS)\n }, [data, colorPalette])\n\n // Calculate summary stats from original flow data\n const summaryStats = useMemo(() => {\n const extracted = extractFlowData(data || [])\n if (!extracted) return null\n\n // Only count after nodes (layer >= 0)\n const afterNodes = extracted.nodes.filter((n) => n.layer >= 0)\n const afterLinks = extracted.links.filter((link) => {\n const sourceNode = extracted.nodes.find((n) => n.id === link.source)\n return sourceNode && sourceNode.layer >= 0\n })\n\n const totalEntities = extracted.nodes\n .filter((n) => n.layer === 0)\n .reduce((sum, n) => sum + (n.value || 0), 0)\n\n return {\n nodeCount: afterNodes.length,\n linkCount: afterLinks.length,\n totalEntities,\n }\n }, [data])\n\n // Handle no data\n if (!data || data.length === 0 || !sunburstData) {\n return (\n <div\n className=\"dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted\"\n style={{ height }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold dc:mb-1\">{t('chart.runtime.flow.noData')}</div>\n <div className=\"dc:text-xs text-dc-text-secondary\">\n {t('chart.runtime.noDataHint.flow')}\n </div>\n </div>\n </div>\n )\n }\n\n // Calculate outer radius based on chart area size\n const minDimension = Math.min(chartSize.width, chartSize.height)\n const outerRadius = Math.max(minDimension / 2 - 40, 100)\n\n // Get root node info for center label\n const rootName = sunburstData.originalName || sunburstData.name\n const rootValue = sunburstData.value\n\n return (\n <div className=\"dc:relative dc:w-full dc:h-full dc:flex dc:flex-col\" style={{ height }}>\n {/* Sunburst Diagram */}\n <div ref={chartAreaRef} className=\"dc:flex-1 dc:min-h-0 dc:relative\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsSunburst\n data={sunburstData}\n dataKey=\"value\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n stroke=\"var(--dc-bg)\"\n >\n <Tooltip content={<SunburstTooltip />} />\n </RechartsSunburst>\n </ResponsiveContainer>\n\n {/* Center label showing the root node (starting event) */}\n {innerRadius > 0 && (\n <div\n className=\"dc:absolute dc:inset-0 dc:flex dc:items-center dc:justify-center dc:pointer-events-none\"\n style={{ zIndex: 10 }}\n >\n <div className=\"dc:text-center\">\n <div className=\"dc:text-sm dc:font-semibold text-dc-text\">{rootName}</div>\n {rootValue !== undefined && (\n <div className=\"dc:text-xs text-dc-text-secondary\">\n {rootValue.toLocaleString()}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n\n {/* Summary Footer */}\n {!displayConfigAny?.hideSummaryFooter && summaryStats && (\n <div className=\"dc:flex-shrink-0 dc:px-4 dc:py-2 dc:border-t border-dc-border bg-dc-surface-secondary\">\n <div className=\"dc:flex dc:items-center dc:justify-between dc:text-sm\">\n <div className=\"text-dc-text-muted\">\n <span className=\"dc:font-medium\">{summaryStats.nodeCount}</span> events (after)\n </div>\n <div className=\"text-dc-text\">\n <span className=\"text-dc-text-muted\">{t('chart.runtime.flow.paths')}</span>{' '}\n <span className=\"dc:font-medium\">{summaryStats.linkCount}</span>\n </div>\n <div className=\"text-dc-text-muted\">\n <span className=\"dc:font-medium\">{summaryStats.totalEntities.toLocaleString()}</span>{' '}\n starting entities\n </div>\n </div>\n </div>\n )}\n </div>\n )\n})\n\nexport default SunburstChart\n"],"mappings":"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"}
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import { S as t, _ as n, k as r, n as i, r as a, x as o, y as s } from "./chart-activity-grid-DmruKPab.js";
|
|
3
|
-
import { c, l } from "./chart-area-DHCPM4Em.js";
|
|
4
|
-
import u, { useState as d } from "react";
|
|
5
|
-
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
6
|
-
import { Treemap as m } from "recharts";
|
|
7
|
-
import { scaleOrdinal as h, scaleQuantize as g } from "d3";
|
|
8
|
-
//#region src/client/components/charts/TreeMapChart.tsx
|
|
9
|
-
var _ = /* @__PURE__ */ e({ default: () => v }), v = u.memo(function({ data: e, chartConfig: u, displayConfig: _ = {}, queryObject: v, height: y = "100%", colorPalette: b, onDataPointClick: x, drillEnabled: S }) {
|
|
10
|
-
let { t: C } = r(), [w, T] = d(null), E = n();
|
|
11
|
-
try {
|
|
12
|
-
let n = {
|
|
13
|
-
showTooltip: _?.showTooltip ?? !0,
|
|
14
|
-
showLegend: _?.showLegend ?? !0,
|
|
15
|
-
leftYAxisFormat: _?.leftYAxisFormat
|
|
16
|
-
};
|
|
17
|
-
if (!e || e.length === 0) return /* @__PURE__ */ f("div", {
|
|
18
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
19
|
-
style: { height: y },
|
|
20
|
-
children: /* @__PURE__ */ p("div", {
|
|
21
|
-
className: "dc:text-center",
|
|
22
|
-
children: [/* @__PURE__ */ f("div", {
|
|
23
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
24
|
-
children: C("chart.runtime.noData")
|
|
25
|
-
}), /* @__PURE__ */ f("div", {
|
|
26
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
27
|
-
children: C("chart.runtime.noDataHint.treemap")
|
|
28
|
-
})]
|
|
29
|
-
})
|
|
30
|
-
});
|
|
31
|
-
let r, d = !1, D;
|
|
32
|
-
if (u?.xAxis && u?.yAxis) {
|
|
33
|
-
let n = Array.isArray(u.xAxis) ? u.xAxis[0] : u.xAxis, s = Array.isArray(u.yAxis) ? u.yAxis[0] : u.yAxis;
|
|
34
|
-
D = Array.isArray(u.series) ? u.series[0] : u.series;
|
|
35
|
-
let c = t(v, n);
|
|
36
|
-
if (D) {
|
|
37
|
-
let t = e.map((e) => {
|
|
38
|
-
let t = e[D];
|
|
39
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
40
|
-
}).filter((e) => !isNaN(e));
|
|
41
|
-
if (d = t.length === e.length && t.every((e) => typeof e == "number"), d) {
|
|
42
|
-
let i = Math.min(...t), l = Math.max(...t), u = g().domain([i, l]).range(a);
|
|
43
|
-
r = e.map((e) => {
|
|
44
|
-
let t = u(typeof e[D] == "string" ? parseFloat(e[D]) : e[D]);
|
|
45
|
-
return {
|
|
46
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
47
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
48
|
-
fill: t,
|
|
49
|
-
series: String(e[D])
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
} else {
|
|
53
|
-
let t = [...new Set(e.map((e) => String(e[D])))], a = h().domain(t).range(b?.colors || i);
|
|
54
|
-
r = e.map((e) => ({
|
|
55
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
56
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
57
|
-
fill: a(String(e[D])),
|
|
58
|
-
series: String(e[D])
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
} else r = e.map((e, t) => ({
|
|
62
|
-
name: o(e[n], c) || String(e[n]) || "Unknown",
|
|
63
|
-
size: typeof e[s] == "string" ? parseFloat(e[s]) : e[s] || 0,
|
|
64
|
-
fill: b?.colors && b.colors[t % b.colors.length] || i[t % i.length]
|
|
65
|
-
}));
|
|
66
|
-
} else {
|
|
67
|
-
let t = e[0], n = Object.keys(t), a = n.find((e) => typeof t[e] == "string" || e.toLowerCase().includes("name") || e.toLowerCase().includes("label") || e.toLowerCase().includes("category")) || n[0], o = n.find((e) => e.toLowerCase().includes("size")) || n.find((e) => typeof t[e] == "number" && e !== a) || n[1];
|
|
68
|
-
if (!o) return /* @__PURE__ */ f("div", {
|
|
69
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-warning",
|
|
70
|
-
style: { height: y },
|
|
71
|
-
children: /* @__PURE__ */ p("div", {
|
|
72
|
-
className: "dc:text-center",
|
|
73
|
-
children: [/* @__PURE__ */ f("div", {
|
|
74
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
75
|
-
children: C("chart.runtime.configError")
|
|
76
|
-
}), /* @__PURE__ */ f("div", {
|
|
77
|
-
className: "dc:text-xs",
|
|
78
|
-
children: C("chart.runtime.configErrorHint.treemapNumeric")
|
|
79
|
-
})]
|
|
80
|
-
})
|
|
81
|
-
});
|
|
82
|
-
r = e.map((e, t) => {
|
|
83
|
-
let n = e[a];
|
|
84
|
-
return n = typeof n == "boolean" ? n ? "Active" : "Inactive" : n === "true" || n === "false" ? n === "true" ? "Active" : "Inactive" : String(n), {
|
|
85
|
-
name: n,
|
|
86
|
-
size: typeof e[o] == "string" ? parseFloat(e[o]) : e[o] || 0,
|
|
87
|
-
fill: b?.colors && b.colors[t % b.colors.length] || i[t % i.length]
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
if (r = r.filter((e) => e.size != null && e.size > 0), r.length === 0) return /* @__PURE__ */ f("div", {
|
|
92
|
-
className: "dc:flex dc:items-center dc:justify-center dc:w-full text-dc-text-muted",
|
|
93
|
-
style: { height: y },
|
|
94
|
-
children: /* @__PURE__ */ p("div", {
|
|
95
|
-
className: "dc:text-center",
|
|
96
|
-
children: [/* @__PURE__ */ f("div", {
|
|
97
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
98
|
-
children: C("chart.runtime.noValidData")
|
|
99
|
-
}), /* @__PURE__ */ f("div", {
|
|
100
|
-
className: "dc:text-xs text-dc-text-secondary",
|
|
101
|
-
children: "No valid data points for treemap chart after transformation"
|
|
102
|
-
})]
|
|
103
|
-
})
|
|
104
|
-
});
|
|
105
|
-
let O = (e) => {
|
|
106
|
-
let { x: t, y: a, width: o, height: c, index: l, name: d, size: m } = e;
|
|
107
|
-
return o < 20 || c < 20 ? null : /* @__PURE__ */ p("g", { children: [/* @__PURE__ */ f("rect", {
|
|
108
|
-
x: t,
|
|
109
|
-
y: a,
|
|
110
|
-
width: o,
|
|
111
|
-
height: c,
|
|
112
|
-
style: {
|
|
113
|
-
fill: r[l]?.fill || b?.colors && b.colors[l % b.colors.length] || i[l % i.length],
|
|
114
|
-
fillOpacity: w === null ? .8 : w === l ? 1 : .6,
|
|
115
|
-
stroke: "#fff",
|
|
116
|
-
strokeWidth: 2,
|
|
117
|
-
cursor: S ? "pointer" : "default",
|
|
118
|
-
pointerEvents: "all"
|
|
119
|
-
},
|
|
120
|
-
onMouseEnter: () => T(l),
|
|
121
|
-
onMouseLeave: () => T(null),
|
|
122
|
-
onClick: S && x ? (e) => {
|
|
123
|
-
e.stopPropagation();
|
|
124
|
-
let t = r[l];
|
|
125
|
-
t && x && x({
|
|
126
|
-
dataPoint: t,
|
|
127
|
-
clickedField: v?.measures?.[0] || u?.yAxis?.[0] || "",
|
|
128
|
-
xValue: d,
|
|
129
|
-
position: {
|
|
130
|
-
x: e.clientX,
|
|
131
|
-
y: e.clientY
|
|
132
|
-
},
|
|
133
|
-
nativeEvent: e
|
|
134
|
-
});
|
|
135
|
-
} : void 0
|
|
136
|
-
}), /* @__PURE__ */ f("foreignObject", {
|
|
137
|
-
x: t,
|
|
138
|
-
y: a,
|
|
139
|
-
width: o,
|
|
140
|
-
height: c,
|
|
141
|
-
style: {
|
|
142
|
-
pointerEvents: "none",
|
|
143
|
-
overflow: "visible"
|
|
144
|
-
},
|
|
145
|
-
children: /* @__PURE__ */ p("div", {
|
|
146
|
-
style: {
|
|
147
|
-
width: "100%",
|
|
148
|
-
height: "100%",
|
|
149
|
-
display: "flex",
|
|
150
|
-
flexDirection: "column",
|
|
151
|
-
alignItems: "center",
|
|
152
|
-
justifyContent: "center",
|
|
153
|
-
padding: "4px",
|
|
154
|
-
boxSizing: "border-box",
|
|
155
|
-
color: "#ffffff",
|
|
156
|
-
textShadow: "0 1px 2px rgba(0,0,0,0.8)",
|
|
157
|
-
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
158
|
-
overflow: "hidden"
|
|
159
|
-
},
|
|
160
|
-
children: [o > 40 && c > 30 && /* @__PURE__ */ f("div", {
|
|
161
|
-
style: {
|
|
162
|
-
fontSize: `${Math.max(10, Math.min(o / 8, c / 8, 16))}px`,
|
|
163
|
-
fontWeight: "600",
|
|
164
|
-
textAlign: "center",
|
|
165
|
-
lineHeight: "1.2",
|
|
166
|
-
marginBottom: o > 60 && c > 45 ? "4px" : "0",
|
|
167
|
-
wordBreak: "break-word",
|
|
168
|
-
hyphens: "auto"
|
|
169
|
-
},
|
|
170
|
-
children: d
|
|
171
|
-
}), o > 60 && c > 45 && /* @__PURE__ */ f("div", {
|
|
172
|
-
style: {
|
|
173
|
-
fontSize: `${Math.max(8, Math.min(o / 10, c / 10, 14))}px`,
|
|
174
|
-
textAlign: "center",
|
|
175
|
-
opacity: .9
|
|
176
|
-
},
|
|
177
|
-
children: n.leftYAxisFormat ? s(m, n.leftYAxisFormat) : typeof m == "number" ? m.toLocaleString() : m
|
|
178
|
-
})]
|
|
179
|
-
})
|
|
180
|
-
})] });
|
|
181
|
-
}, k = r.some((e) => "series" in e) ? [...new Set(r.map((e) => e.series).filter(Boolean))] : [], A = [];
|
|
182
|
-
if (n.showLegend && D) if (d) {
|
|
183
|
-
let t = Math.min(...e.map((e) => {
|
|
184
|
-
let t = e[D];
|
|
185
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
186
|
-
})), r = Math.max(...e.map((e) => {
|
|
187
|
-
let t = e[D];
|
|
188
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
189
|
-
}));
|
|
190
|
-
A = a.map((e, i) => {
|
|
191
|
-
let o = i / (a.length - 1), c = t + (r - t) * o;
|
|
192
|
-
return {
|
|
193
|
-
value: n.leftYAxisFormat ? s(c, n.leftYAxisFormat) : c.toFixed(2),
|
|
194
|
-
type: "rect",
|
|
195
|
-
color: e
|
|
196
|
-
};
|
|
197
|
-
});
|
|
198
|
-
} else k.length > 1 && (A = k.map((e, t) => ({
|
|
199
|
-
value: e,
|
|
200
|
-
type: "rect",
|
|
201
|
-
color: i[t % i.length]
|
|
202
|
-
})));
|
|
203
|
-
let j = n.showLegend && A.length > 0;
|
|
204
|
-
return /* @__PURE__ */ p("div", {
|
|
205
|
-
className: "dc:w-full",
|
|
206
|
-
style: { height: j ? typeof y == "string" && y.includes("%") ? y : typeof y == "number" ? y + 60 : `calc(${y} + 60px)` : y },
|
|
207
|
-
children: [/* @__PURE__ */ f(l, {
|
|
208
|
-
height: j ? "calc(100% - 50px)" : "100%",
|
|
209
|
-
children: /* @__PURE__ */ f(m, {
|
|
210
|
-
data: r,
|
|
211
|
-
dataKey: "size",
|
|
212
|
-
aspectRatio: 4 / 3,
|
|
213
|
-
stroke: "#fff",
|
|
214
|
-
content: /* @__PURE__ */ f(O, {}),
|
|
215
|
-
children: n.showTooltip && /* @__PURE__ */ f(c, { formatter: n.leftYAxisFormat ? (e, t) => [s(e, n.leftYAxisFormat), t] : void 0 })
|
|
216
|
-
})
|
|
217
|
-
}), j && /* @__PURE__ */ f("div", {
|
|
218
|
-
className: "dc:flex dc:justify-center dc:items-center dc:mt-4 dc:pb-2",
|
|
219
|
-
children: d ? /* @__PURE__ */ p("div", {
|
|
220
|
-
className: "dc:flex dc:flex-col dc:items-center",
|
|
221
|
-
children: [/* @__PURE__ */ f("div", {
|
|
222
|
-
className: "dc:text-xs dc:font-semibold text-dc-text-primary dc:mb-2",
|
|
223
|
-
children: D ? E(D) : ""
|
|
224
|
-
}), /* @__PURE__ */ p("div", {
|
|
225
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
226
|
-
children: [
|
|
227
|
-
/* @__PURE__ */ f("span", {
|
|
228
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
229
|
-
children: n.leftYAxisFormat ? s(Math.min(...e.map((e) => {
|
|
230
|
-
let t = e[D];
|
|
231
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
232
|
-
})), n.leftYAxisFormat) : Math.min(...e.map((e) => {
|
|
233
|
-
let t = e[D];
|
|
234
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
235
|
-
})).toFixed(2)
|
|
236
|
-
}),
|
|
237
|
-
/* @__PURE__ */ f("div", {
|
|
238
|
-
className: "dc:h-4 dc:rounded-sm",
|
|
239
|
-
style: {
|
|
240
|
-
width: "200px",
|
|
241
|
-
background: `linear-gradient(to right, ${a.join(", ")})`
|
|
242
|
-
}
|
|
243
|
-
}),
|
|
244
|
-
/* @__PURE__ */ f("span", {
|
|
245
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
246
|
-
children: n.leftYAxisFormat ? s(Math.max(...e.map((e) => {
|
|
247
|
-
let t = e[D];
|
|
248
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
249
|
-
})), n.leftYAxisFormat) : Math.max(...e.map((e) => {
|
|
250
|
-
let t = e[D];
|
|
251
|
-
return typeof t == "string" ? parseFloat(t) : t;
|
|
252
|
-
})).toFixed(2)
|
|
253
|
-
})
|
|
254
|
-
]
|
|
255
|
-
})]
|
|
256
|
-
}) : /* @__PURE__ */ f("div", {
|
|
257
|
-
className: "dc:flex dc:flex-wrap dc:justify-center dc:gap-4",
|
|
258
|
-
children: A.map((e, t) => /* @__PURE__ */ p("div", {
|
|
259
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
260
|
-
children: [/* @__PURE__ */ f("div", {
|
|
261
|
-
className: "dc:w-3 dc:h-3 rounded-xs",
|
|
262
|
-
style: { backgroundColor: e.color }
|
|
263
|
-
}), /* @__PURE__ */ f("span", {
|
|
264
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
265
|
-
children: e.value
|
|
266
|
-
})]
|
|
267
|
-
}, t))
|
|
268
|
-
})
|
|
269
|
-
})]
|
|
270
|
-
});
|
|
271
|
-
} catch (e) {
|
|
272
|
-
return /* @__PURE__ */ f("div", {
|
|
273
|
-
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:w-full text-dc-error dc:p-4",
|
|
274
|
-
style: { height: y },
|
|
275
|
-
children: /* @__PURE__ */ p("div", {
|
|
276
|
-
className: "dc:text-center",
|
|
277
|
-
children: [
|
|
278
|
-
/* @__PURE__ */ f("div", {
|
|
279
|
-
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
280
|
-
children: C("chart.runtime.chartError", { chartType: "TreeMap Chart" })
|
|
281
|
-
}),
|
|
282
|
-
/* @__PURE__ */ f("div", {
|
|
283
|
-
className: "dc:text-xs dc:mb-2",
|
|
284
|
-
children: e instanceof Error ? e.message : C("chart.runtime.unknownError")
|
|
285
|
-
}),
|
|
286
|
-
/* @__PURE__ */ f("div", {
|
|
287
|
-
className: "dc:text-xs text-dc-text-muted",
|
|
288
|
-
children: C("chart.runtime.checkConfig")
|
|
289
|
-
})
|
|
290
|
-
]
|
|
291
|
-
})
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
//#endregion
|
|
296
|
-
export { _ as n, v as t };
|
|
297
|
-
|
|
298
|
-
//# sourceMappingURL=chart-tree-map-uiwUU4nb.js.map
|