drizzle-cube 0.5.8 → 0.6.0
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/adapters/hono/agent-handler.d.ts +9 -0
- package/dist/adapters/adapters/hono/mcp-handler.d.ts +37 -0
- package/dist/adapters/adapters/mcp-tools-handlers.d.ts +18 -0
- package/dist/adapters/adapters/nextjs/mcp-handler.d.ts +36 -0
- package/dist/adapters/adapters/utils.d.ts +6 -81
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +50 -50
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +78 -78
- package/dist/adapters/google-BOnRIN1w.cjs +2 -0
- package/dist/adapters/{google-CFYljAOF.js → 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/index.cjs +2 -2
- package/dist/adapters/hono/index.js +205 -175
- package/dist/adapters/locale-DDvZDFVn.js +8114 -0
- package/dist/adapters/locale-ZLUUNUxr.cjs +166 -0
- package/dist/adapters/mcp-tools.cjs +1 -1
- package/dist/adapters/mcp-tools.js +49 -38
- package/dist/adapters/mcp-transport-Chiaj4ll.cjs +40 -0
- package/dist/adapters/mcp-transport-H96VG3WY.js +591 -0
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +190 -197
- package/dist/adapters/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/adapters/openai-vXvLni8v.cjs +1 -0
- 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/utils.js +2 -2
- package/dist/client/charts/ChartLoader.d.ts +2 -16
- package/dist/client/charts/chartComponentRegistry.d.ts +46 -0
- package/dist/client/charts/chartConfigHelpers.d.ts +38 -0
- 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-BPkfcTa8.js.map → RetentionCombinedChart-BgbDhsPz.js.map} +1 -1
- package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js → RetentionHeatmap-DjXZaTPq.js} +5 -5
- package/dist/client/chunks/{RetentionHeatmap-DGzLzr7h.js.map → RetentionHeatmap-DjXZaTPq.js.map} +1 -1
- 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-DYKfyOI8.js.map → chart-box-plot-kkBixZ27.js.map} +1 -1
- 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-Dwc92Mrj.js.map → chart-candlestick-DZp19Tzh.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-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-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-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-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-dgUetjyM.js.map → chart-markdown-CV75S_zL.js.map} +1 -1
- package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js → chart-measure-profile-Ket8fJyf.js} +7 -7
- package/dist/client/chunks/{chart-measure-profile-ClfpLs4q.js.map → chart-measure-profile-Ket8fJyf.js.map} +1 -1
- 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-M3XpO_ah.js.map → chart-sankey-DjrvKw6K.js.map} +1 -1
- 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-A_u6lqlS.js.map → chart-sunburst-leGpuDj7.js.map} +1 -1
- 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-BuhMoagf.js.map → chart-waterfall-DyvQReN5.js.map} +1 -1
- package/dist/client/chunks/{charts-core-jRtb0S2M.js → charts-core-DaXSt1Dd.js} +2 -2
- package/dist/client/chunks/{charts-core-jRtb0S2M.js.map → charts-core-DaXSt1Dd.js.map} +1 -1
- 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-DE09kQE3.js.map → schema-visualization-Cb_E9_Gd.js.map} +1 -1
- 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-DlnXWdmz.js.map → useExplainAI-evnZkjCY.js.map} +1 -1
- package/dist/client/chunks/{utils-CTKNaXS8.js → utils-3P6z1vz5.js} +2 -2
- package/dist/client/chunks/{utils-CTKNaXS8.js.map → utils-3P6z1vz5.js.map} +1 -1
- 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/components/AgenticNotebook/agentChatParts.d.ts +34 -0
- package/dist/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
- 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/AnalysisQueryPanelParts.d.ts +64 -0
- package/dist/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
- package/dist/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
- package/dist/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
- package/dist/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
- package/dist/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
- package/dist/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
- package/dist/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
- package/dist/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
- package/dist/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
- package/dist/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
- 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/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 +5 -0
- 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/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
- package/dist/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
- package/dist/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
- 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/DashboardPortletCard.d.ts +2 -57
- 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.helpers.d.ts +33 -0
- package/dist/client/components/charts/ActivityGridChart.render.d.ts +31 -0
- package/dist/client/components/charts/AxisFormatControls.d.ts +3 -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/BubbleChart.helpers.d.ts +43 -0
- package/dist/client/components/charts/BubbleChart.render.d.ts +21 -0
- package/dist/client/components/charts/ChartStates.d.ts +38 -0
- 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/HeatMapCanvas.d.ts +25 -0
- package/dist/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
- package/dist/client/components/charts/KpiDelta.helpers.d.ts +20 -0
- 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/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/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/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/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/DashboardEditBar.d.ts +5 -0
- package/dist/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
- 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/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/utils.d.ts +4 -43
- 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/drillNavigation.d.ts +25 -0
- package/dist/client/hooks.js +3 -3
- package/dist/client/icons.js +2 -2
- package/dist/client/index.js +816 -669
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.js +3 -3
- package/dist/client/schema.js +1 -1
- package/dist/client/shared/chartConfigBuilders.d.ts +18 -0
- package/dist/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
- package/dist/client/shared/queryTransforms.d.ts +20 -0
- package/dist/client/shared/utils.d.ts +2 -4
- package/dist/client/stores/optionsToAnalysisConfig.d.ts +17 -0
- package/dist/client/styles.css +1 -1
- package/dist/client/utils/axisValueFormatting.d.ts +32 -0
- package/dist/client/utils/timeValueFormatting.d.ts +32 -0
- 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/google-BOnRIN1w.cjs +2 -0
- package/dist/server/{google-CFYljAOF.js → google-CvKM9yVM.js} +83 -71
- package/dist/server/index.cjs +179 -211
- package/dist/server/index.js +6330 -6458
- package/dist/server/{openai-BZdAA7Ji.js → openai-cDlFSTk6.js} +60 -58
- package/dist/server/openai-vXvLni8v.cjs +1 -0
- package/dist/server/server/adapters/base-adapter.d.ts +80 -35
- package/dist/server/server/adapters/databend-adapter.d.ts +8 -59
- package/dist/server/server/adapters/duckdb-adapter.d.ts +5 -59
- package/dist/server/server/adapters/mysql-adapter.d.ts +13 -70
- package/dist/server/server/adapters/postgres-adapter.d.ts +1 -65
- package/dist/server/server/adapters/snowflake-adapter.d.ts +5 -68
- package/dist/server/server/adapters/sqlite-adapter.d.ts +12 -32
- package/dist/server/server/adapters/window-function-builder.d.ts +11 -0
- package/dist/server/server/agent/chart-validation.d.ts +0 -5
- package/dist/server/server/agent/handler-steps.d.ts +37 -0
- package/dist/server/server/ai/discovery-helpers.d.ts +29 -0
- package/dist/server/server/ai/discovery.d.ts +4 -0
- package/dist/server/server/ai/suggestion-helpers.d.ts +33 -0
- package/dist/server/server/ai/suggestion.d.ts +0 -3
- package/dist/server/server/ai/validation-helpers.d.ts +21 -0
- package/dist/server/server/ai/validation.d.ts +0 -3
- package/dist/server/server/builders/analysis-utils.d.ts +106 -0
- package/dist/server/server/builders/cte-builder.d.ts +46 -0
- package/dist/server/server/builders/date-time-builder.d.ts +5 -0
- package/dist/server/server/builders/date-time-helpers.d.ts +34 -0
- package/dist/server/server/builders/filter-builder.d.ts +2 -0
- package/dist/server/server/builders/filter-operators.d.ts +23 -0
- package/dist/server/server/builders/flow-query-builder.d.ts +46 -19
- package/dist/server/server/builders/funnel-query-builder.d.ts +16 -5
- package/dist/server/server/builders/group-by-builder.d.ts +11 -0
- package/dist/server/server/builders/measure-builder.d.ts +43 -0
- package/dist/server/server/builders/retention-query-builder.d.ts +12 -14
- package/dist/server/server/cache-utils.d.ts +25 -5
- package/dist/server/server/compiler-metadata.d.ts +11 -0
- package/dist/server/server/compiler.d.ts +8 -14
- package/dist/server/server/cube-utils.d.ts +29 -4
- package/dist/server/server/execution/annotation-builder.d.ts +12 -0
- package/dist/server/server/execution/filter-cache-preloader.d.ts +19 -0
- package/dist/server/server/execution/mode-router.d.ts +25 -0
- package/dist/server/server/execution/query-result-cache.d.ts +21 -0
- package/dist/server/server/execution/result-post-processor.d.ts +10 -0
- package/dist/server/server/executor.d.ts +33 -30
- package/dist/server/server/executors/explain-utils.d.ts +28 -0
- package/dist/server/server/explain/explain-tree.d.ts +20 -0
- package/dist/server/server/filter-cache.d.ts +2 -2
- package/dist/server/server/gap-filler.d.ts +6 -0
- package/dist/server/server/index.d.ts +3 -1
- package/dist/server/server/logical-plan/cte-planner-helpers.d.ts +37 -0
- package/dist/server/server/logical-plan/cte-planner.d.ts +104 -0
- package/dist/server/server/logical-plan/filter-propagation.d.ts +44 -0
- package/dist/server/server/logical-plan/index.d.ts +6 -1
- package/dist/server/server/logical-plan/join-planner.d.ts +27 -0
- package/dist/server/server/logical-plan/logical-planner.d.ts +7 -200
- package/dist/server/server/logical-plan/optimiser.d.ts +3 -1
- package/dist/server/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
- package/dist/server/server/logical-plan/planner-utils.d.ts +20 -0
- package/dist/server/server/logical-plan/types.d.ts +17 -9
- package/dist/server/server/measure-classification.d.ts +40 -0
- package/dist/server/server/physical-plan/drizzle-plan-builder.d.ts +21 -21
- package/dist/server/server/physical-plan/drizzle-sql-builder.d.ts +11 -0
- package/dist/server/server/physical-plan/processors/index.d.ts +2 -0
- package/dist/server/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
- package/dist/server/server/physical-plan/processors/shared.d.ts +5 -0
- package/dist/server/server/query-handlers.d.ts +79 -0
- package/dist/server/server/query-modes.d.ts +28 -0
- package/dist/server/server/query-validator.d.ts +9 -0
- package/dist/server/server/resolvers/calculated-measure-resolver.d.ts +5 -0
- package/dist/server/server/resolvers/join-path-resolver.d.ts +6 -0
- package/dist/server/server/sql-format.d.ts +11 -0
- package/dist/server/server/types/cube.d.ts +18 -4
- package/dist/server/server/types/flow.d.ts +6 -5
- package/dist/server/server/types/index.d.ts +1 -1
- package/dist/server/server/types/validation.d.ts +14 -0
- package/package.json +11 -4
- 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/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-bubble-CfqiB538.js +0 -273
- package/dist/client/chunks/chart-bubble-CfqiB538.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-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-scatter-DaHYP_OL.js +0 -255
- package/dist/client/chunks/chart-scatter-DaHYP_OL.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/useDirtyStateTracking-CoeQbprt.js.map +0 -1
- package/dist/server/google-DUlXeeDA.cjs +0 -2
- package/dist/server/openai-D_U4V0kT.cjs +0 -1
package/dist/client/index.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { r as Dn } from "./chunks/
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
1
|
+
import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-DSpR0IW6.js";
|
|
2
|
+
import { n as a, t as o } from "./chunks/providers-DwQCKdGW.js";
|
|
3
|
+
import { A as s, B as c, C as l, E as u, I as d, L as f, M as p, N as m, R as h, S as g, T as _, V as v, _ as y, b, c as x, g as S, j as C, k as w, l as T, s as E, v as D, w as O, x as k, y as A, z as j } from "./chunks/chart-data-table-CKauQXme.js";
|
|
4
|
+
import { n as M, r as N } from "./chunks/chart-sankey-DjrvKw6K.js";
|
|
5
|
+
import { $ as P, B as F, C as I, D as L, E as ee, F as te, G as R, H as ne, I as re, J as ie, K as ae, L as oe, M as se, N as ce, O as le, P as ue, Q as de, R as fe, T as pe, U as me, V as he, W as ge, X as _e, Y as ve, Z as ye, _ as be, _t as xe, a as Se, at as Ce, c as we, ct as Te, dt as Ee, f as De, ft as Oe, gt as ke, h as Ae, ht as je, i as Me, it as Ne, j as Pe, k as Fe, lt as Ie, m as Le, mt as Re, n as ze, nt as Be, o as Ve, ot as He, p as Ue, pt as We, q as Ge, r as Ke, rt as qe, st as Je, t as Ye, tt as Xe, ut as Ze, vt as Qe, yt as $e, z as et } from "./chunks/DashboardEditModal-okVfH8ZK.js";
|
|
6
|
+
import { P as z, S as tt, _ as nt, b as rt, g as it, h as at, m as ot, p as st, v as ct, x as lt, y as ut, z as dt } from "./chunks/chart-activity-grid-DX0SJbxs.js";
|
|
7
|
+
import { S as ft, _ as pt, b as mt, c as ht, d as gt, f as _t, g as vt, h as yt, l as bt, m as xt, o as St, p as Ct, s as wt, v as Tt, y as Et } from "./chunks/useDirtyStateTracking-MbpxH_v6.js";
|
|
8
|
+
import { a as Dt, i as Ot, n as kt, o as At, r as jt, t as Mt } from "./chunks/useExplainAI-evnZkjCY.js";
|
|
9
|
+
import { a as Nt, c as Pt, i as Ft, l as It, o as Lt, r as Rt, s as zt } from "./chunks/chart-funnel-CToKSBaL.js";
|
|
10
|
+
import { a as Bt, i as Vt, n as Ht, o as Ut, r as Wt, s as Gt, t as Kt } from "./chunks/charts-loader-DdTeCeNo.js";
|
|
11
|
+
import { F as B } from "./chunks/chart-area-of01_62R.js";
|
|
12
|
+
import { f as qt, i as Jt, t as Yt } from "./chunks/utils-3P6z1vz5.js";
|
|
13
|
+
import { A as Xt, D as Zt, E as Qt, F as $t, I as en, M as tn, O as nn, P as rn, S as an, T as on, _ as sn, a as cn, b as ln, c as un, d as dn, f as fn, g as pn, h as mn, i as hn, j as gn, k as _n, l as vn, n as yn, o as bn, p as xn, r as Sn, s as Cn, t as wn, v as Tn, w as En, x as Dn, y as On } from "./chunks/analysis-builder-shared-BVK4TYfR.js";
|
|
14
|
+
import { r as kn } from "./chunks/chart-markdown-CV75S_zL.js";
|
|
15
|
+
import { t as An } from "./chunks/useNotebookLayout-Ck3Z3uzg.js";
|
|
16
|
+
import { n as jn } from "./chunks/chart-bubble-B2he1--4.js";
|
|
17
|
+
import V, { createContext as Mn, useCallback as H, useContext as Nn, useEffect as U, useMemo as W, useRef as G, useState as K } from "react";
|
|
18
|
+
import { Fragment as q, jsx as J, jsxs as Y } from "react/jsx-runtime";
|
|
18
19
|
//#region src/client/stores/notebookStore.tsx
|
|
19
|
-
var
|
|
20
|
+
var Pn = () => ({
|
|
20
21
|
blocks: [],
|
|
21
22
|
messages: [],
|
|
22
23
|
isStreaming: !1,
|
|
23
24
|
sessionId: null,
|
|
24
25
|
inputValue: ""
|
|
25
26
|
});
|
|
26
|
-
function
|
|
27
|
+
function Fn(e, t) {
|
|
27
28
|
return {
|
|
28
29
|
addBlock: (t) => e((e) => ({ blocks: [...e.blocks, t] })),
|
|
29
30
|
removeBlock: (t) => e((e) => ({ blocks: e.blocks.filter((e) => e.id !== t) })),
|
|
@@ -87,38 +88,38 @@ function Nn(e, t) {
|
|
|
87
88
|
blocks: t.blocks || [],
|
|
88
89
|
messages: t.messages || []
|
|
89
90
|
}),
|
|
90
|
-
reset: () => e(
|
|
91
|
+
reset: () => e(Pn())
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
|
-
function
|
|
94
|
-
let t =
|
|
94
|
+
function In() {
|
|
95
|
+
let t = Pn();
|
|
95
96
|
return i()(r(e((e, n) => ({
|
|
96
97
|
...t,
|
|
97
|
-
...
|
|
98
|
+
...Fn(e, n)
|
|
98
99
|
})), { name: "NotebookStore" }));
|
|
99
100
|
}
|
|
100
|
-
var
|
|
101
|
-
function
|
|
102
|
-
let n =
|
|
101
|
+
var Ln = Mn(null);
|
|
102
|
+
function Rn({ children: e, initialConfig: t }) {
|
|
103
|
+
let n = G(null);
|
|
103
104
|
if (!n.current) {
|
|
104
|
-
let e =
|
|
105
|
+
let e = In();
|
|
105
106
|
t && e.getState().load(t), n.current = e;
|
|
106
107
|
}
|
|
107
|
-
return /* @__PURE__ */
|
|
108
|
+
return /* @__PURE__ */ J(Ln.Provider, {
|
|
108
109
|
value: n.current,
|
|
109
110
|
children: e
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
|
-
function
|
|
113
|
-
let t =
|
|
113
|
+
function X(e) {
|
|
114
|
+
let t = Nn(Ln);
|
|
114
115
|
if (!t) throw Error("useNotebookStore must be used within NotebookStoreProvider");
|
|
115
116
|
return n(t, e);
|
|
116
117
|
}
|
|
117
|
-
var
|
|
118
|
+
var zn = (e) => e.blocks, Bn = (e) => e.messages, Vn = (e) => e.isStreaming, Hn = (e) => e.sessionId, Un = (e) => e.inputValue, Wn = (e) => ({
|
|
118
119
|
messages: e.messages,
|
|
119
120
|
isStreaming: e.isStreaming,
|
|
120
121
|
inputValue: e.inputValue
|
|
121
|
-
}),
|
|
122
|
+
}), Gn = (e) => ({
|
|
122
123
|
addMessage: e.addMessage,
|
|
123
124
|
appendToLastAssistantMessage: e.appendToLastAssistantMessage,
|
|
124
125
|
setLastAssistantError: e.setLastAssistantError,
|
|
@@ -127,29 +128,29 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
127
128
|
setIsStreaming: e.setIsStreaming,
|
|
128
129
|
setInputValue: e.setInputValue,
|
|
129
130
|
setSessionId: e.setSessionId
|
|
130
|
-
}),
|
|
131
|
+
}), Kn = (e) => ({
|
|
131
132
|
addBlock: e.addBlock,
|
|
132
133
|
removeBlock: e.removeBlock,
|
|
133
134
|
moveBlock: e.moveBlock,
|
|
134
135
|
updateBlock: e.updateBlock
|
|
135
|
-
}),
|
|
136
|
+
}), Z = {
|
|
136
137
|
width: "16px",
|
|
137
138
|
height: "16px",
|
|
138
139
|
color: "currentColor"
|
|
139
|
-
},
|
|
140
|
-
let [c, l] =
|
|
140
|
+
}, qn = D("chevronUp"), Jn = D("chevronDown"), Yn = D("edit"), Xn = D("delete"), Zn = V.memo(function({ block: e, colorPalette: t, onRemove: n, onMoveUp: r, onMoveDown: i, onEdit: a, isFirst: o, isLast: s }) {
|
|
141
|
+
let [c, l] = K(null), u = H((e) => {
|
|
141
142
|
l(e);
|
|
142
143
|
}, []);
|
|
143
|
-
return /* @__PURE__ */
|
|
144
|
+
return /* @__PURE__ */ Y("div", {
|
|
144
145
|
className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
|
|
145
|
-
children: [/* @__PURE__ */
|
|
146
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
146
147
|
className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
|
|
147
|
-
children: [/* @__PURE__ */
|
|
148
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
148
149
|
className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
150
151
|
className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
|
|
151
152
|
children: e.title || "Untitled"
|
|
152
|
-
}), c && /* @__PURE__ */
|
|
153
|
+
}), c && /* @__PURE__ */ J(Fe, {
|
|
153
154
|
chartConfig: c.chartConfig,
|
|
154
155
|
displayConfig: c.displayConfig,
|
|
155
156
|
queryObject: c.queryObject,
|
|
@@ -157,38 +158,38 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
157
158
|
chartType: c.chartType,
|
|
158
159
|
cacheInfo: c.cacheInfo ?? void 0
|
|
159
160
|
})]
|
|
160
|
-
}), /* @__PURE__ */
|
|
161
|
+
}), /* @__PURE__ */ Y("div", {
|
|
161
162
|
className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
|
|
162
163
|
children: [
|
|
163
|
-
!o && /* @__PURE__ */
|
|
164
|
+
!o && /* @__PURE__ */ J("button", {
|
|
164
165
|
onClick: () => r(e.id),
|
|
165
166
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
166
167
|
title: "Move up",
|
|
167
|
-
children: /* @__PURE__ */
|
|
168
|
+
children: /* @__PURE__ */ J(qn, { style: Z })
|
|
168
169
|
}),
|
|
169
|
-
!s && /* @__PURE__ */
|
|
170
|
+
!s && /* @__PURE__ */ J("button", {
|
|
170
171
|
onClick: () => i(e.id),
|
|
171
172
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
172
173
|
title: "Move down",
|
|
173
|
-
children: /* @__PURE__ */
|
|
174
|
+
children: /* @__PURE__ */ J(Jn, { style: Z })
|
|
174
175
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
+
/* @__PURE__ */ J("button", {
|
|
176
177
|
onClick: () => a(e),
|
|
177
178
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
178
179
|
title: "Edit visualization",
|
|
179
|
-
children: /* @__PURE__ */
|
|
180
|
+
children: /* @__PURE__ */ J(Yn, { style: Z })
|
|
180
181
|
}),
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ J("button", {
|
|
182
183
|
onClick: () => n(e.id),
|
|
183
184
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
184
185
|
title: "Remove",
|
|
185
|
-
children: /* @__PURE__ */
|
|
186
|
+
children: /* @__PURE__ */ J(Xn, { style: Z })
|
|
186
187
|
})
|
|
187
188
|
]
|
|
188
189
|
})]
|
|
189
|
-
}), /* @__PURE__ */
|
|
190
|
+
}), /* @__PURE__ */ J("div", {
|
|
190
191
|
className: "dc:flex-1 dc:min-h-0",
|
|
191
|
-
children: /* @__PURE__ */
|
|
192
|
+
children: /* @__PURE__ */ J(ve, {
|
|
192
193
|
query: e.query,
|
|
193
194
|
chartType: e.chartType,
|
|
194
195
|
chartConfig: e.chartConfig,
|
|
@@ -200,15 +201,15 @@ var Ln = (e) => e.blocks, Rn = (e) => e.messages, zn = (e) => e.isStreaming, Bn
|
|
|
200
201
|
})
|
|
201
202
|
})]
|
|
202
203
|
});
|
|
203
|
-
}),
|
|
204
|
+
}), Q = {
|
|
204
205
|
width: "16px",
|
|
205
206
|
height: "16px",
|
|
206
207
|
color: "currentColor"
|
|
207
|
-
}, Qn =
|
|
208
|
+
}, Qn = D("documentText"), $n = D("chevronUp"), er = D("chevronDown"), tr = D("delete");
|
|
208
209
|
function nr({ children: e, ...t }) {
|
|
209
|
-
return /* @__PURE__ */
|
|
210
|
+
return /* @__PURE__ */ J("div", {
|
|
210
211
|
className: "dc:overflow-x-auto dc:my-2",
|
|
211
|
-
children: /* @__PURE__ */
|
|
212
|
+
children: /* @__PURE__ */ J("table", {
|
|
212
213
|
...t,
|
|
213
214
|
children: e
|
|
214
215
|
})
|
|
@@ -240,86 +241,91 @@ var rr = { overrides: {
|
|
|
240
241
|
th: { props: { className: "dc:px-3 dc:py-2 dc:text-left dc:font-semibold dc:text-xs text-dc-text-secondary dc:uppercase dc:tracking-wider border-dc-border dc:border-b" } },
|
|
241
242
|
td: { props: { className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text border-dc-border dc:border-b" } },
|
|
242
243
|
tr: { props: { className: "dc:hover:opacity-80" } }
|
|
243
|
-
} }, ir =
|
|
244
|
-
return /* @__PURE__ */
|
|
244
|
+
} }, ir = V.memo(function({ block: e, onRemove: t, onMoveUp: n, onMoveDown: r, isFirst: i, isLast: a }) {
|
|
245
|
+
return /* @__PURE__ */ Y("div", {
|
|
245
246
|
className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
|
|
246
|
-
children: [/* @__PURE__ */
|
|
247
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
247
248
|
className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
|
|
248
|
-
children: [/* @__PURE__ */
|
|
249
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
249
250
|
className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
|
|
250
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ J(Qn, { style: Q }), /* @__PURE__ */ J("h3", {
|
|
251
252
|
className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
|
|
252
253
|
children: e.title || "Markdown"
|
|
253
254
|
})]
|
|
254
|
-
}), /* @__PURE__ */
|
|
255
|
+
}), /* @__PURE__ */ Y("div", {
|
|
255
256
|
className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
|
|
256
257
|
children: [
|
|
257
|
-
!i && /* @__PURE__ */
|
|
258
|
+
!i && /* @__PURE__ */ J("button", {
|
|
258
259
|
onClick: () => n(e.id),
|
|
259
260
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
260
261
|
title: "Move up",
|
|
261
|
-
children: /* @__PURE__ */
|
|
262
|
+
children: /* @__PURE__ */ J($n, { style: Q })
|
|
262
263
|
}),
|
|
263
|
-
!a && /* @__PURE__ */
|
|
264
|
+
!a && /* @__PURE__ */ J("button", {
|
|
264
265
|
onClick: () => r(e.id),
|
|
265
266
|
className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
266
267
|
title: "Move down",
|
|
267
|
-
children: /* @__PURE__ */
|
|
268
|
+
children: /* @__PURE__ */ J(er, { style: Q })
|
|
268
269
|
}),
|
|
269
|
-
/* @__PURE__ */
|
|
270
|
+
/* @__PURE__ */ J("button", {
|
|
270
271
|
onClick: () => t(e.id),
|
|
271
272
|
className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
|
|
272
273
|
title: "Remove",
|
|
273
|
-
children: /* @__PURE__ */
|
|
274
|
+
children: /* @__PURE__ */ J(tr, { style: Q })
|
|
274
275
|
})
|
|
275
276
|
]
|
|
276
277
|
})]
|
|
277
|
-
}), /* @__PURE__ */
|
|
278
|
+
}), /* @__PURE__ */ J("div", {
|
|
278
279
|
className: "dc:p-4 dc:min-w-0 dc:overflow-hidden",
|
|
279
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ J(kn, {
|
|
280
281
|
options: rr,
|
|
281
282
|
children: e.content
|
|
282
283
|
})
|
|
283
284
|
})]
|
|
284
285
|
});
|
|
285
|
-
})
|
|
286
|
-
|
|
287
|
-
|
|
286
|
+
});
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/client/components/AgenticNotebook/NotebookCanvas.tsx
|
|
289
|
+
function ar(e) {
|
|
290
|
+
let { analysisConfig: t } = Xe(e);
|
|
291
|
+
if (!t) return null;
|
|
292
|
+
let n = t.charts[t.analysisType];
|
|
293
|
+
return {
|
|
294
|
+
title: e.title,
|
|
295
|
+
query: JSON.stringify(t.query),
|
|
296
|
+
chartType: n?.chartType || "bar",
|
|
297
|
+
chartConfig: n?.chartConfig,
|
|
298
|
+
displayConfig: n?.displayConfig
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
var or = V.memo(function({ colorPalette: e }) {
|
|
302
|
+
let { t: n } = z(), r = e ?? pe(), i = X(zn), { removeBlock: a, moveBlock: o, updateBlock: s } = X(t(Kn)), c = G(null), [l, u] = K(null), d = G(i.length);
|
|
303
|
+
U(() => {
|
|
288
304
|
i.length > d.current && c.current?.scrollIntoView({ behavior: "smooth" }), d.current = i.length;
|
|
289
305
|
}, [i.length]);
|
|
290
|
-
let f =
|
|
306
|
+
let f = H((e) => a(e), [a]), p = H((e) => o(e, "up"), [o]), m = H((e) => o(e, "down"), [o]), h = H((e) => u(e), []), g = H((e) => {
|
|
291
307
|
if (!l) return;
|
|
292
|
-
let
|
|
293
|
-
|
|
294
|
-
let n = t.charts[t.analysisType];
|
|
295
|
-
s(l.id, {
|
|
296
|
-
title: e.title,
|
|
297
|
-
query: JSON.stringify(t.query),
|
|
298
|
-
chartType: n?.chartType || "bar",
|
|
299
|
-
chartConfig: n?.chartConfig,
|
|
300
|
-
displayConfig: n?.displayConfig
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
u(null);
|
|
308
|
+
let t = ar(e);
|
|
309
|
+
t && s(l.id, t), u(null);
|
|
304
310
|
}, [l, s]);
|
|
305
|
-
return i.length === 0 ? /* @__PURE__ */
|
|
311
|
+
return i.length === 0 ? /* @__PURE__ */ J("div", {
|
|
306
312
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
307
|
-
children: /* @__PURE__ */
|
|
313
|
+
children: /* @__PURE__ */ Y("div", {
|
|
308
314
|
className: "dc:text-center dc:max-w-sm dc:px-6",
|
|
309
|
-
children: [/* @__PURE__ */
|
|
315
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
310
316
|
className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2",
|
|
311
317
|
children: n("notebook.canvas.emptyTitle")
|
|
312
|
-
}), /* @__PURE__ */
|
|
318
|
+
}), /* @__PURE__ */ J("p", {
|
|
313
319
|
className: "dc:text-sm text-dc-text-secondary",
|
|
314
320
|
children: n("notebook.canvas.emptyDescription")
|
|
315
321
|
})]
|
|
316
322
|
})
|
|
317
|
-
}) : /* @__PURE__ */
|
|
323
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
318
324
|
className: "dc:h-full dc:overflow-y-auto dc:p-4",
|
|
319
325
|
children: [
|
|
320
326
|
i.map((e, t) => {
|
|
321
327
|
let n = t === 0, a = t === i.length - 1;
|
|
322
|
-
return e.type === "portlet" ? /* @__PURE__ */
|
|
328
|
+
return e.type === "portlet" ? /* @__PURE__ */ J(Zn, {
|
|
323
329
|
block: e,
|
|
324
330
|
colorPalette: r,
|
|
325
331
|
onRemove: f,
|
|
@@ -328,7 +334,7 @@ var rr = { overrides: {
|
|
|
328
334
|
onEdit: h,
|
|
329
335
|
isFirst: n,
|
|
330
336
|
isLast: a
|
|
331
|
-
}, e.id) : e.type === "markdown" ? /* @__PURE__ */
|
|
337
|
+
}, e.id) : e.type === "markdown" ? /* @__PURE__ */ J(ir, {
|
|
332
338
|
block: e,
|
|
333
339
|
onRemove: f,
|
|
334
340
|
onMoveUp: p,
|
|
@@ -337,8 +343,8 @@ var rr = { overrides: {
|
|
|
337
343
|
isLast: a
|
|
338
344
|
}, e.id) : null;
|
|
339
345
|
}),
|
|
340
|
-
/* @__PURE__ */
|
|
341
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ J("div", { ref: c }),
|
|
347
|
+
/* @__PURE__ */ J(we, {
|
|
342
348
|
isOpen: !!l,
|
|
343
349
|
onClose: () => u(null),
|
|
344
350
|
onSave: g,
|
|
@@ -362,143 +368,14 @@ var rr = { overrides: {
|
|
|
362
368
|
});
|
|
363
369
|
});
|
|
364
370
|
//#endregion
|
|
365
|
-
//#region src/client/
|
|
366
|
-
function or(e) {
|
|
367
|
-
if (e.startsWith("{") || e.includes("\"type\":\"error\"")) try {
|
|
368
|
-
let t = JSON.parse(e.replace(/^Error:\s*/, ""));
|
|
369
|
-
return {
|
|
370
|
-
overloaded_error: "The AI service is temporarily busy. Please try again in a moment.",
|
|
371
|
-
rate_limit_error: "Too many requests. Please wait a moment and try again.",
|
|
372
|
-
api_error: "The AI service encountered an error. Please try again.",
|
|
373
|
-
authentication_error: "Authentication failed. Please check your configuration."
|
|
374
|
-
}[t.error?.type || t.type || ""] || "The AI service encountered an error. Please try again.";
|
|
375
|
-
} catch {
|
|
376
|
-
return "The AI service encountered an error. Please try again.";
|
|
377
|
-
}
|
|
378
|
-
if (e.startsWith("Agent request failed:")) {
|
|
379
|
-
let t = e.match(/\d+/)?.[0];
|
|
380
|
-
return t === "429" ? "Too many requests. Please wait a moment and try again." : t === "503" || t === "529" ? "The AI service is temporarily busy. Please try again in a moment." : "The AI service is temporarily unavailable. Please try again.";
|
|
381
|
-
}
|
|
382
|
-
return e;
|
|
383
|
-
}
|
|
371
|
+
//#region src/client/components/AgenticNotebook/chatMessageParts.tsx
|
|
384
372
|
function sr(e) {
|
|
385
|
-
let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = p(), s = q(null), [c, l] = J(!1), u = q(e);
|
|
386
|
-
return u.current = e, {
|
|
387
|
-
sendMessage: W(async (e, c, d) => {
|
|
388
|
-
function f(e) {
|
|
389
|
-
let t = u.current;
|
|
390
|
-
switch (e.type) {
|
|
391
|
-
case "text_delta":
|
|
392
|
-
t.onTextDelta(e.data);
|
|
393
|
-
break;
|
|
394
|
-
case "tool_use_start":
|
|
395
|
-
t.onToolStart(e.data.id, e.data.name, e.data.input);
|
|
396
|
-
break;
|
|
397
|
-
case "tool_use_result":
|
|
398
|
-
t.onToolResult(e.data.id, e.data.name, e.data.result, e.data.isError);
|
|
399
|
-
break;
|
|
400
|
-
case "add_portlet":
|
|
401
|
-
t.onAddPortlet({
|
|
402
|
-
...e.data,
|
|
403
|
-
type: "portlet"
|
|
404
|
-
});
|
|
405
|
-
break;
|
|
406
|
-
case "add_markdown":
|
|
407
|
-
t.onAddMarkdown({
|
|
408
|
-
...e.data,
|
|
409
|
-
type: "markdown"
|
|
410
|
-
});
|
|
411
|
-
break;
|
|
412
|
-
case "dashboard_saved":
|
|
413
|
-
t.onDashboardSaved?.(e.data);
|
|
414
|
-
break;
|
|
415
|
-
case "turn_complete":
|
|
416
|
-
t.onTurnComplete?.();
|
|
417
|
-
break;
|
|
418
|
-
case "done":
|
|
419
|
-
t.onDone(e.data.sessionId, e.data.traceId);
|
|
420
|
-
break;
|
|
421
|
-
case "error":
|
|
422
|
-
t.onError(e.data.message);
|
|
423
|
-
break;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
s.current && s.current.abort();
|
|
427
|
-
let p = new AbortController();
|
|
428
|
-
s.current = p, l(!0);
|
|
429
|
-
try {
|
|
430
|
-
let s = t || `${o.apiUrl || "/cubejs-api/v1"}/agent/chat`, l = {
|
|
431
|
-
"Content-Type": "application/json",
|
|
432
|
-
...o.headers
|
|
433
|
-
};
|
|
434
|
-
n && (l["X-Agent-Api-Key"] = n), r && (l["X-Agent-Provider"] = r), i && (l["X-Agent-Model"] = i), a && (l["X-Agent-Provider-Endpoint"] = a);
|
|
435
|
-
let u = await fetch(s, {
|
|
436
|
-
method: "POST",
|
|
437
|
-
headers: l,
|
|
438
|
-
credentials: o.credentials ?? "include",
|
|
439
|
-
body: JSON.stringify({
|
|
440
|
-
message: e,
|
|
441
|
-
...c ? { sessionId: c } : {},
|
|
442
|
-
...d && d.length > 0 ? { history: d } : {}
|
|
443
|
-
}),
|
|
444
|
-
signal: p.signal
|
|
445
|
-
});
|
|
446
|
-
if (!u.ok) {
|
|
447
|
-
let e = await u.json().catch(() => ({}));
|
|
448
|
-
throw Error(e.error || `Agent request failed: ${u.status}`);
|
|
449
|
-
}
|
|
450
|
-
if (!u.body) throw Error("No response body received");
|
|
451
|
-
let m = u.body.getReader(), h = new TextDecoder(), g = "";
|
|
452
|
-
for (;;) {
|
|
453
|
-
let { done: e, value: t } = await m.read();
|
|
454
|
-
if (e) break;
|
|
455
|
-
g += h.decode(t, { stream: !0 });
|
|
456
|
-
let n = g.split("\n\n");
|
|
457
|
-
g = n.pop() || "";
|
|
458
|
-
for (let e of n) {
|
|
459
|
-
let t = e.trim().split("\n");
|
|
460
|
-
for (let e of t) if (e.startsWith("data: ")) try {
|
|
461
|
-
f(JSON.parse(e.slice(6)));
|
|
462
|
-
} catch {}
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
if (g.trim()) {
|
|
466
|
-
let e = g.trim().split("\n");
|
|
467
|
-
for (let t of e) if (t.startsWith("data: ")) try {
|
|
468
|
-
f(JSON.parse(t.slice(6)));
|
|
469
|
-
} catch {}
|
|
470
|
-
}
|
|
471
|
-
} catch (e) {
|
|
472
|
-
if (e.name !== "AbortError") {
|
|
473
|
-
let t = e instanceof Error ? e.message : "Stream failed";
|
|
474
|
-
u.current.onError(or(t));
|
|
475
|
-
}
|
|
476
|
-
} finally {
|
|
477
|
-
l(!1), s.current = null;
|
|
478
|
-
}
|
|
479
|
-
}, [
|
|
480
|
-
o,
|
|
481
|
-
t,
|
|
482
|
-
n,
|
|
483
|
-
r,
|
|
484
|
-
i,
|
|
485
|
-
a
|
|
486
|
-
]),
|
|
487
|
-
isStreaming: c,
|
|
488
|
-
abort: W(() => {
|
|
489
|
-
s.current && (s.current.abort(), s.current = null, l(!1));
|
|
490
|
-
}, [])
|
|
491
|
-
};
|
|
492
|
-
}
|
|
493
|
-
//#endregion
|
|
494
|
-
//#region src/client/components/AgenticNotebook/ChatMessage.tsx
|
|
495
|
-
function cr(e) {
|
|
496
373
|
let t = [], n = e, r = 0;
|
|
497
374
|
for (; n;) {
|
|
498
375
|
let e = n.match(/^(.*?)`([^`]+)`(.*)$/);
|
|
499
376
|
if (e) {
|
|
500
377
|
let [, i, a, o] = e;
|
|
501
|
-
i && t.push(/* @__PURE__ */
|
|
378
|
+
i && t.push(/* @__PURE__ */ J("span", { children: i }, r++)), t.push(/* @__PURE__ */ J("code", {
|
|
502
379
|
className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface dc:font-mono",
|
|
503
380
|
children: a
|
|
504
381
|
}, r++)), n = o;
|
|
@@ -507,95 +384,146 @@ function cr(e) {
|
|
|
507
384
|
let i = n.match(/^(.*?)\*\*([^*]+)\*\*(.*)$/);
|
|
508
385
|
if (i) {
|
|
509
386
|
let [, e, a, o] = i;
|
|
510
|
-
e && t.push(/* @__PURE__ */
|
|
387
|
+
e && t.push(/* @__PURE__ */ J("span", { children: e }, r++)), t.push(/* @__PURE__ */ J("strong", {
|
|
511
388
|
className: "dc:font-semibold",
|
|
512
389
|
children: a
|
|
513
390
|
}, r++)), n = o;
|
|
514
391
|
continue;
|
|
515
392
|
}
|
|
516
|
-
t.push(/* @__PURE__ */
|
|
393
|
+
t.push(/* @__PURE__ */ J("span", { children: n }, r));
|
|
517
394
|
break;
|
|
518
395
|
}
|
|
519
396
|
return t;
|
|
520
397
|
}
|
|
521
|
-
var
|
|
398
|
+
var cr = {
|
|
522
399
|
discover_cubes: "Discovering cubes",
|
|
523
400
|
get_cube_metadata: "Reading metadata",
|
|
524
401
|
execute_query: "Executing query",
|
|
525
402
|
add_portlet: "Adding visualization",
|
|
526
403
|
add_markdown: "Adding explanation"
|
|
527
404
|
};
|
|
405
|
+
function lr(e, t, n) {
|
|
406
|
+
return e ? "bg-dc-accent text-dc-accent-text dc:rounded-br-sm" : t && !n ? "bg-dc-warning-bg text-dc-text dc:rounded-bl-sm" : "bg-dc-surface-secondary text-dc-text dc:rounded-bl-sm";
|
|
407
|
+
}
|
|
528
408
|
function ur({ toolCall: e, loadingComponent: t }) {
|
|
529
|
-
|
|
530
|
-
|
|
409
|
+
return e.status === "running" ? t ? /* @__PURE__ */ J("span", {
|
|
410
|
+
className: "dc:inline-flex dc:items-center dc:justify-center dc:h-3 dc:w-3",
|
|
411
|
+
children: t
|
|
412
|
+
}) : /* @__PURE__ */ J(B, { size: "xs" }) : /* @__PURE__ */ J("span", {
|
|
413
|
+
className: "dc:text-xs",
|
|
414
|
+
children: e.status === "error" ? "✗" : "✓"
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
function dr(e) {
|
|
418
|
+
return typeof e == "string" ? e : JSON.stringify(e, null, 2);
|
|
419
|
+
}
|
|
420
|
+
function fr({ result: e }) {
|
|
421
|
+
return e == null ? null : /* @__PURE__ */ J("pre", {
|
|
422
|
+
className: "dc:mt-1 dc:p-2 dc:rounded dc:text-[11px] dc:overflow-x-auto dc:max-h-32 dc:overflow-y-auto bg-dc-surface-secondary text-dc-text-secondary",
|
|
423
|
+
children: dr(e)
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
function pr({ toolCall: e, loadingComponent: t }) {
|
|
427
|
+
let [n, r] = K(!1), i = cr[e.name] || e.name, a = e.status === "running";
|
|
428
|
+
return /* @__PURE__ */ Y("div", {
|
|
531
429
|
className: "dc:my-1 dc:text-xs",
|
|
532
|
-
children: [/* @__PURE__ */
|
|
430
|
+
children: [/* @__PURE__ */ Y("button", {
|
|
533
431
|
onClick: () => r(!n),
|
|
534
432
|
className: "dc:flex dc:items-center dc:gap-1.5 text-dc-text-secondary dc:hover:opacity-80 dc:transition-opacity",
|
|
535
433
|
children: [
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
}) : /* @__PURE__ */ X(Wt, { size: "xs" }) : /* @__PURE__ */ X("span", {
|
|
540
|
-
className: "dc:text-xs",
|
|
541
|
-
children: e.status === "error" ? "✗" : "✓"
|
|
434
|
+
/* @__PURE__ */ J(ur, {
|
|
435
|
+
toolCall: e,
|
|
436
|
+
loadingComponent: t
|
|
542
437
|
}),
|
|
543
|
-
/* @__PURE__ */
|
|
544
|
-
!a && /* @__PURE__ */
|
|
438
|
+
/* @__PURE__ */ Y("span", { children: [i, a ? "..." : ""] }),
|
|
439
|
+
!a && /* @__PURE__ */ J("span", {
|
|
545
440
|
className: "dc:text-[10px] dc:opacity-60",
|
|
546
441
|
children: n ? "▲" : "▼"
|
|
547
442
|
})
|
|
548
443
|
]
|
|
549
|
-
}), n &&
|
|
550
|
-
|
|
551
|
-
|
|
444
|
+
}), n && /* @__PURE__ */ J(fr, { result: e.result })]
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
function mr({ error: e, hasContent: t }) {
|
|
448
|
+
return /* @__PURE__ */ Y("div", {
|
|
449
|
+
className: `dc:flex dc:items-start dc:gap-2 ${t ? "dc:mt-2 dc:pt-2 dc:border-t dc:border-current dc:border-opacity-10" : ""}`,
|
|
450
|
+
children: [/* @__PURE__ */ J("span", {
|
|
451
|
+
className: "dc:text-base dc:leading-none dc:mt-0.5 text-dc-warning dc:flex-shrink-0",
|
|
452
|
+
children: "⚠"
|
|
453
|
+
}), /* @__PURE__ */ J("span", {
|
|
454
|
+
className: "text-dc-text-secondary",
|
|
455
|
+
children: e
|
|
552
456
|
})]
|
|
553
457
|
});
|
|
554
458
|
}
|
|
555
|
-
|
|
556
|
-
let
|
|
557
|
-
return
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
459
|
+
function hr(e) {
|
|
460
|
+
let t = e.role === "user", n = !!e.content?.trim(), r = !!e.error, i = e.toolCalls ?? [], a = i.length > 0;
|
|
461
|
+
return {
|
|
462
|
+
isUser: t,
|
|
463
|
+
hasContent: n,
|
|
464
|
+
hasError: r,
|
|
465
|
+
hasToolCalls: a,
|
|
466
|
+
toolCalls: i,
|
|
467
|
+
shouldRender: t || n || r || a
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function gr({ message: e, flags: t, loadingComponent: n }) {
|
|
471
|
+
let { isUser: r, hasContent: i, hasError: a, hasToolCalls: o, toolCalls: s } = t;
|
|
472
|
+
return /* @__PURE__ */ Y(q, { children: [
|
|
473
|
+
i && /* @__PURE__ */ J("div", {
|
|
474
|
+
className: "dc:whitespace-pre-wrap dc:break-words",
|
|
475
|
+
children: r ? e.content : sr(e.content)
|
|
476
|
+
}),
|
|
477
|
+
a && /* @__PURE__ */ J(mr, {
|
|
478
|
+
error: e.error,
|
|
479
|
+
hasContent: i
|
|
480
|
+
}),
|
|
481
|
+
o && /* @__PURE__ */ J(_r, {
|
|
482
|
+
toolCalls: s,
|
|
483
|
+
loadingComponent: n,
|
|
484
|
+
separated: i || a
|
|
485
|
+
})
|
|
486
|
+
] });
|
|
487
|
+
}
|
|
488
|
+
function _r({ toolCalls: e, loadingComponent: t, separated: n }) {
|
|
489
|
+
return /* @__PURE__ */ J("div", {
|
|
490
|
+
className: n ? "dc:mt-1 dc:border-t dc:border-current dc:border-opacity-10 dc:pt-1" : "",
|
|
491
|
+
children: e.map((e, n) => /* @__PURE__ */ J(pr, {
|
|
492
|
+
toolCall: e,
|
|
493
|
+
loadingComponent: t
|
|
494
|
+
}, e.id || n))
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
//#endregion
|
|
498
|
+
//#region src/client/components/AgenticNotebook/ChatMessage.tsx
|
|
499
|
+
var vr = { animation: "dc-msg-in 100ms ease-out" }, yr = V.memo(function({ message: e, loadingComponent: t }) {
|
|
500
|
+
let n = hr(e);
|
|
501
|
+
if (!n.shouldRender) return null;
|
|
502
|
+
let { isUser: r, hasContent: i, hasError: a } = n;
|
|
503
|
+
return /* @__PURE__ */ J("div", {
|
|
504
|
+
className: `dc:flex dc:mb-3 ${r ? "dc:justify-end" : "dc:justify-start"}`,
|
|
505
|
+
style: vr,
|
|
506
|
+
children: /* @__PURE__ */ J("div", {
|
|
507
|
+
className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${lr(r, a, i)}`,
|
|
508
|
+
children: /* @__PURE__ */ J(gr, {
|
|
509
|
+
message: e,
|
|
510
|
+
flags: n,
|
|
511
|
+
loadingComponent: t
|
|
512
|
+
})
|
|
585
513
|
})
|
|
586
514
|
});
|
|
587
|
-
}),
|
|
588
|
-
let { t: l } =
|
|
589
|
-
return
|
|
515
|
+
}), br = V.memo(function({ value: e, onChange: t, onSend: n, onStop: r, onContinue: i, isStreaming: a = !1, showContinue: o = !1, disabled: s = !1, placeholder: c }) {
|
|
516
|
+
let { t: l } = z(), u = c ?? l("notebook.chatInput.placeholder"), d = G(null);
|
|
517
|
+
return U(() => {
|
|
590
518
|
let e = d.current;
|
|
591
519
|
e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 150)}px`);
|
|
592
|
-
}, [e]), /* @__PURE__ */
|
|
520
|
+
}, [e]), /* @__PURE__ */ Y("div", {
|
|
593
521
|
className: "dc:flex dc:gap-2 dc:items-end dc:p-3 border-dc-border dc:border-t",
|
|
594
|
-
children: [/* @__PURE__ */
|
|
522
|
+
children: [/* @__PURE__ */ J("textarea", {
|
|
595
523
|
ref: d,
|
|
596
524
|
value: e,
|
|
597
525
|
onChange: (e) => t(e.target.value),
|
|
598
|
-
onKeyDown:
|
|
526
|
+
onKeyDown: H((t) => {
|
|
599
527
|
t.key === "Enter" && !t.shiftKey && (t.preventDefault(), !s && e.trim() && n());
|
|
600
528
|
}, [
|
|
601
529
|
s,
|
|
@@ -606,253 +534,356 @@ var dr = { animation: "dc-msg-in 100ms ease-out" }, fr = U.memo(function({ messa
|
|
|
606
534
|
disabled: s,
|
|
607
535
|
rows: 1,
|
|
608
536
|
className: "dc:flex-1 dc:resize-none dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text border-dc-border dc:border dc:outline-none dc:focus:ring-1 focus:ring-dc-accent dc:disabled:opacity-50"
|
|
609
|
-
}), a ? /* @__PURE__ */
|
|
537
|
+
}), a ? /* @__PURE__ */ J("button", {
|
|
610
538
|
onClick: r,
|
|
611
539
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors text-dc-error border-dc-border dc:border dc:hover:opacity-80 dc:shrink-0",
|
|
612
540
|
children: l("notebook.chatInput.stop")
|
|
613
|
-
}) : /* @__PURE__ */
|
|
541
|
+
}) : /* @__PURE__ */ Y(q, { children: [o && !e.trim() && /* @__PURE__ */ J("button", {
|
|
614
542
|
onClick: () => {
|
|
615
543
|
i?.(), d.current?.focus();
|
|
616
544
|
},
|
|
617
545
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors border-dc-border dc:border text-dc-text-secondary dc:hover:opacity-80 dc:shrink-0",
|
|
618
546
|
children: l("notebook.chatInput.continue")
|
|
619
|
-
}), /* @__PURE__ */
|
|
547
|
+
}), /* @__PURE__ */ J("button", {
|
|
620
548
|
onClick: n,
|
|
621
549
|
disabled: s || !e.trim(),
|
|
622
550
|
className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors bg-dc-accent text-dc-accent-text dc:hover:opacity-90 dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:shrink-0",
|
|
623
551
|
children: l("notebook.chatInput.send")
|
|
624
552
|
})] })]
|
|
625
553
|
});
|
|
626
|
-
})
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
554
|
+
});
|
|
555
|
+
//#endregion
|
|
556
|
+
//#region src/client/hooks/agentChatStream.ts
|
|
557
|
+
function xr(e) {
|
|
558
|
+
if (e.startsWith("{") || e.includes("\"type\":\"error\"")) try {
|
|
559
|
+
let t = JSON.parse(e.replace(/^Error:\s*/, ""));
|
|
560
|
+
return {
|
|
561
|
+
overloaded_error: "The AI service is temporarily busy. Please try again in a moment.",
|
|
562
|
+
rate_limit_error: "Too many requests. Please wait a moment and try again.",
|
|
563
|
+
api_error: "The AI service encountered an error. Please try again.",
|
|
564
|
+
authentication_error: "Authentication failed. Please check your configuration."
|
|
565
|
+
}[t.error?.type || t.type || ""] || "The AI service encountered an error. Please try again.";
|
|
566
|
+
} catch {
|
|
567
|
+
return "The AI service encountered an error. Please try again.";
|
|
568
|
+
}
|
|
569
|
+
if (e.startsWith("Agent request failed:")) {
|
|
570
|
+
let t = e.match(/\d+/)?.[0];
|
|
571
|
+
return t === "429" ? "Too many requests. Please wait a moment and try again." : t === "503" || t === "529" ? "The AI service is temporarily busy. Please try again in a moment." : "The AI service is temporarily unavailable. Please try again.";
|
|
572
|
+
}
|
|
573
|
+
return e;
|
|
574
|
+
}
|
|
575
|
+
function Sr(e, t) {
|
|
576
|
+
switch (e.type) {
|
|
577
|
+
case "text_delta":
|
|
578
|
+
t.onTextDelta(e.data);
|
|
579
|
+
break;
|
|
580
|
+
case "tool_use_start":
|
|
581
|
+
t.onToolStart(e.data.id, e.data.name, e.data.input);
|
|
582
|
+
break;
|
|
583
|
+
case "tool_use_result":
|
|
584
|
+
t.onToolResult(e.data.id, e.data.name, e.data.result, e.data.isError);
|
|
585
|
+
break;
|
|
586
|
+
case "add_portlet":
|
|
587
|
+
t.onAddPortlet({
|
|
588
|
+
...e.data,
|
|
589
|
+
type: "portlet"
|
|
590
|
+
});
|
|
591
|
+
break;
|
|
592
|
+
case "add_markdown":
|
|
593
|
+
t.onAddMarkdown({
|
|
594
|
+
...e.data,
|
|
595
|
+
type: "markdown"
|
|
596
|
+
});
|
|
597
|
+
break;
|
|
598
|
+
case "dashboard_saved":
|
|
599
|
+
t.onDashboardSaved?.(e.data);
|
|
600
|
+
break;
|
|
601
|
+
case "turn_complete":
|
|
602
|
+
t.onTurnComplete?.();
|
|
603
|
+
break;
|
|
604
|
+
case "done":
|
|
605
|
+
t.onDone(e.data.sessionId, e.data.traceId);
|
|
606
|
+
break;
|
|
607
|
+
case "error":
|
|
608
|
+
t.onError(e.data.message);
|
|
609
|
+
break;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
function Cr(e, t) {
|
|
613
|
+
let n = e.trim().split("\n");
|
|
614
|
+
for (let e of n) if (e.startsWith("data: ")) try {
|
|
615
|
+
t(JSON.parse(e.slice(6)));
|
|
616
|
+
} catch {}
|
|
617
|
+
}
|
|
618
|
+
function wr(e) {
|
|
619
|
+
let t = {
|
|
620
|
+
"Content-Type": "application/json",
|
|
621
|
+
...e.baseHeaders
|
|
622
|
+
};
|
|
623
|
+
return e.agentApiKey && (t["X-Agent-Api-Key"] = e.agentApiKey), e.agentProvider && (t["X-Agent-Provider"] = e.agentProvider), e.agentModel && (t["X-Agent-Model"] = e.agentModel), e.agentProviderEndpoint && (t["X-Agent-Provider-Endpoint"] = e.agentProviderEndpoint), t;
|
|
624
|
+
}
|
|
625
|
+
//#endregion
|
|
626
|
+
//#region src/client/hooks/useAgentChat.ts
|
|
627
|
+
function Tr(e) {
|
|
628
|
+
let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = j(), s = G(null), [c, l] = K(!1), u = G(e);
|
|
629
|
+
return u.current = e, {
|
|
630
|
+
sendMessage: H(async (e, c, d) => {
|
|
631
|
+
let f = (e) => Sr(e, u.current);
|
|
632
|
+
s.current && s.current.abort();
|
|
633
|
+
let p = new AbortController();
|
|
634
|
+
s.current = p, l(!0);
|
|
635
|
+
try {
|
|
636
|
+
let s = t || `${o.apiUrl || "/cubejs-api/v1"}/agent/chat`, l = wr({
|
|
637
|
+
baseHeaders: o.headers,
|
|
638
|
+
agentApiKey: n,
|
|
639
|
+
agentProvider: r,
|
|
640
|
+
agentModel: i,
|
|
641
|
+
agentProviderEndpoint: a
|
|
642
|
+
}), u = await fetch(s, {
|
|
643
|
+
method: "POST",
|
|
644
|
+
headers: l,
|
|
645
|
+
credentials: o.credentials ?? "include",
|
|
646
|
+
body: JSON.stringify({
|
|
647
|
+
message: e,
|
|
648
|
+
...c ? { sessionId: c } : {},
|
|
649
|
+
...d && d.length > 0 ? { history: d } : {}
|
|
650
|
+
}),
|
|
651
|
+
signal: p.signal
|
|
652
|
+
});
|
|
653
|
+
if (!u.ok) {
|
|
654
|
+
let e = await u.json().catch(() => ({}));
|
|
655
|
+
throw Error(e.error || `Agent request failed: ${u.status}`);
|
|
656
|
+
}
|
|
657
|
+
if (!u.body) throw Error("No response body received");
|
|
658
|
+
let m = u.body.getReader(), h = new TextDecoder(), g = "";
|
|
659
|
+
for (;;) {
|
|
660
|
+
let { done: e, value: t } = await m.read();
|
|
661
|
+
if (e) break;
|
|
662
|
+
g += h.decode(t, { stream: !0 });
|
|
663
|
+
let n = g.split("\n\n");
|
|
664
|
+
g = n.pop() || "";
|
|
665
|
+
for (let e of n) Cr(e, f);
|
|
666
|
+
}
|
|
667
|
+
g.trim() && Cr(g, f);
|
|
668
|
+
} catch (e) {
|
|
669
|
+
if (e.name !== "AbortError") {
|
|
670
|
+
let t = e instanceof Error ? e.message : "Stream failed";
|
|
671
|
+
u.current.onError(xr(t));
|
|
672
|
+
}
|
|
673
|
+
} finally {
|
|
674
|
+
l(!1), s.current = null;
|
|
675
|
+
}
|
|
676
|
+
}, [
|
|
677
|
+
o,
|
|
678
|
+
t,
|
|
679
|
+
n,
|
|
680
|
+
r,
|
|
681
|
+
i,
|
|
682
|
+
a
|
|
683
|
+
]),
|
|
684
|
+
isStreaming: c,
|
|
685
|
+
abort: H(() => {
|
|
686
|
+
s.current && (s.current.abort(), s.current = null, l(!1));
|
|
687
|
+
}, [])
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
//#endregion
|
|
691
|
+
//#region src/client/components/AgenticNotebook/useAgentChatController.ts
|
|
692
|
+
function Er({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onDashboardSaved: o, messages: s, isStreaming: c }) {
|
|
693
|
+
let [l, u] = K(!1), [d, f] = K(null), p = G(!1), { addMessage: m, appendToLastAssistantMessage: h, setLastAssistantError: g, addToolCallToLastAssistant: _, updateLastToolCall: v, setIsStreaming: y, setInputValue: b, setSessionId: x } = X(t(Gn)), S = X((e) => e.sessionId), C = X((e) => e.addBlock), w = G(s);
|
|
694
|
+
w.current = s;
|
|
695
|
+
let T = G(c);
|
|
696
|
+
T.current = c;
|
|
697
|
+
let E = G(S);
|
|
698
|
+
E.current = S;
|
|
699
|
+
let D = H(() => {
|
|
700
|
+
p.current && (p.current = !1, m({
|
|
635
701
|
id: `msg-${Date.now()}`,
|
|
636
702
|
role: "assistant",
|
|
637
703
|
content: "",
|
|
638
704
|
toolCalls: [],
|
|
639
705
|
timestamp: Date.now()
|
|
640
706
|
}));
|
|
641
|
-
}, [
|
|
642
|
-
G(() => {
|
|
643
|
-
x.length > ee.current && f.current?.scrollIntoView({ behavior: "smooth" }), ee.current = x.length;
|
|
644
|
-
}, [x]), G(() => {
|
|
645
|
-
v && f.current?.scrollIntoView({ behavior: "smooth" });
|
|
646
|
-
}, [v]);
|
|
647
|
-
let { sendMessage: B, abort: te } = sr({
|
|
707
|
+
}, [m]), { sendMessage: O, abort: k } = Tr({
|
|
648
708
|
agentEndpoint: e,
|
|
649
709
|
agentApiKey: n,
|
|
650
710
|
agentProvider: r,
|
|
651
711
|
agentModel: i,
|
|
652
712
|
agentProviderEndpoint: a,
|
|
653
|
-
onTextDelta:
|
|
654
|
-
|
|
655
|
-
}, [
|
|
656
|
-
onToolStart:
|
|
657
|
-
|
|
713
|
+
onTextDelta: H((e) => {
|
|
714
|
+
u(!1), D(), h(e);
|
|
715
|
+
}, [D, h]),
|
|
716
|
+
onToolStart: H((e, t, n) => {
|
|
717
|
+
u(!1), D(), _({
|
|
658
718
|
id: e,
|
|
659
719
|
name: t,
|
|
660
720
|
input: n,
|
|
661
721
|
status: "running"
|
|
662
722
|
});
|
|
663
|
-
}, [
|
|
664
|
-
onToolResult:
|
|
665
|
-
|
|
723
|
+
}, [D, _]),
|
|
724
|
+
onToolResult: H((e, t, n, r) => {
|
|
725
|
+
v({
|
|
666
726
|
id: e,
|
|
667
727
|
status: r ? "error" : "complete",
|
|
668
728
|
result: n
|
|
669
729
|
});
|
|
670
|
-
}, [
|
|
671
|
-
onAddPortlet:
|
|
672
|
-
|
|
673
|
-
}, [
|
|
674
|
-
onAddMarkdown:
|
|
675
|
-
|
|
676
|
-
}, [
|
|
677
|
-
onDashboardSaved:
|
|
678
|
-
onTurnComplete:
|
|
679
|
-
|
|
730
|
+
}, [v]),
|
|
731
|
+
onAddPortlet: H((e) => {
|
|
732
|
+
C(e);
|
|
733
|
+
}, [C]),
|
|
734
|
+
onAddMarkdown: H((e) => {
|
|
735
|
+
C(e);
|
|
736
|
+
}, [C]),
|
|
737
|
+
onDashboardSaved: o,
|
|
738
|
+
onTurnComplete: H(() => {
|
|
739
|
+
p.current = !0, u(!0);
|
|
680
740
|
}, []),
|
|
681
|
-
onDone:
|
|
682
|
-
|
|
683
|
-
}, [
|
|
684
|
-
onError:
|
|
685
|
-
|
|
741
|
+
onDone: H((e, t) => {
|
|
742
|
+
p.current = !1, x(e), y(!1), u(!1), t && f(t);
|
|
743
|
+
}, [x, y]),
|
|
744
|
+
onError: H((e) => {
|
|
745
|
+
u(!1), D(), g(e), y(!1);
|
|
686
746
|
}, [
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
747
|
+
D,
|
|
748
|
+
g,
|
|
749
|
+
y
|
|
690
750
|
])
|
|
691
|
-
}), V = W((e) => {
|
|
692
|
-
if (!e || L.current) return;
|
|
693
|
-
b.current = !1;
|
|
694
|
-
let t = I.current.map((e) => ({
|
|
695
|
-
role: e.role,
|
|
696
|
-
content: e.content,
|
|
697
|
-
...e.toolCalls && e.toolCalls.length > 0 ? { toolCalls: e.toolCalls } : {}
|
|
698
|
-
}));
|
|
699
|
-
w({
|
|
700
|
-
id: `msg-${Date.now()}`,
|
|
701
|
-
role: "user",
|
|
702
|
-
content: e,
|
|
703
|
-
timestamp: Date.now()
|
|
704
|
-
}), w({
|
|
705
|
-
id: `msg-${Date.now() + 1}`,
|
|
706
|
-
role: "assistant",
|
|
707
|
-
content: "",
|
|
708
|
-
toolCalls: [],
|
|
709
|
-
timestamp: Date.now()
|
|
710
|
-
}), A(""), k(!0), y(!0), B(e, R.current, t);
|
|
711
|
-
}, [
|
|
712
|
-
w,
|
|
713
|
-
A,
|
|
714
|
-
k,
|
|
715
|
-
B
|
|
716
|
-
]);
|
|
717
|
-
G(() => {
|
|
718
|
-
if (u && !p.current && x.length === 0) {
|
|
719
|
-
p.current = !0;
|
|
720
|
-
let e = setTimeout(() => V(u), 100);
|
|
721
|
-
return () => {
|
|
722
|
-
clearTimeout(e), p.current = !1;
|
|
723
|
-
};
|
|
724
|
-
}
|
|
725
|
-
}, [
|
|
726
|
-
u,
|
|
727
|
-
x.length,
|
|
728
|
-
V
|
|
729
|
-
]);
|
|
730
|
-
let ne = q(C);
|
|
731
|
-
ne.current = C;
|
|
732
|
-
let re = W(() => {
|
|
733
|
-
V(ne.current.trim());
|
|
734
|
-
}, [V]), ie = W(() => {
|
|
735
|
-
te(), k(!1);
|
|
736
|
-
}, [te, k]), ae = W(() => {
|
|
737
|
-
A("");
|
|
738
|
-
}, [A]), oe = W(() => {
|
|
739
|
-
te(), k(!1), y(!1), P(), h(null), _(/* @__PURE__ */ new Set()), o?.();
|
|
740
|
-
}, [
|
|
741
|
-
te,
|
|
742
|
-
k,
|
|
743
|
-
P,
|
|
744
|
-
o
|
|
745
|
-
]), se = W(() => {
|
|
746
|
-
V(d("notebook.saveAsDashboardPrompt"));
|
|
747
|
-
}, [V, d]), ce = W((e) => {
|
|
748
|
-
!m || !c || (c({
|
|
749
|
-
traceId: m,
|
|
750
|
-
value: e
|
|
751
|
-
}), _((e) => new Set(e).add(m)));
|
|
752
|
-
}, [m, c]), le = !!s && !S && F > 0 && x.length > 0, ue = !!c && !S && m && x.length > 0 && !g.has(m), de = m ? g.has(m) : !1;
|
|
753
|
-
return /* @__PURE__ */ Z("div", {
|
|
754
|
-
className: "dc:flex dc:flex-col dc:h-full bg-dc-surface",
|
|
755
|
-
children: [
|
|
756
|
-
/* @__PURE__ */ Z("div", {
|
|
757
|
-
className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b",
|
|
758
|
-
children: [/* @__PURE__ */ X("h3", {
|
|
759
|
-
className: "dc:text-sm dc:font-semibold text-dc-text",
|
|
760
|
-
children: d("notebook.aiAssistant")
|
|
761
|
-
}), /* @__PURE__ */ Z("div", {
|
|
762
|
-
className: "dc:flex dc:items-center dc:gap-1",
|
|
763
|
-
children: [le && /* @__PURE__ */ X("button", {
|
|
764
|
-
onClick: se,
|
|
765
|
-
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
|
|
766
|
-
title: d("notebook.saveAsDashboardTitle"),
|
|
767
|
-
children: d("notebook.saveAsDashboard")
|
|
768
|
-
}), x.length > 0 && /* @__PURE__ */ X("button", {
|
|
769
|
-
onClick: oe,
|
|
770
|
-
disabled: S,
|
|
771
|
-
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
|
|
772
|
-
title: d("notebook.clearTitle"),
|
|
773
|
-
children: d("common.actions.clear")
|
|
774
|
-
})]
|
|
775
|
-
})]
|
|
776
|
-
}),
|
|
777
|
-
/* @__PURE__ */ Z("div", {
|
|
778
|
-
className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3",
|
|
779
|
-
children: [
|
|
780
|
-
x.length === 0 ? /* @__PURE__ */ X(vr, {}) : x.map((e) => /* @__PURE__ */ X(fr, {
|
|
781
|
-
message: e,
|
|
782
|
-
loadingComponent: l
|
|
783
|
-
}, e.id)),
|
|
784
|
-
v && /* @__PURE__ */ X(_r, { loadingComponent: l }),
|
|
785
|
-
(ue || de) && /* @__PURE__ */ X("div", {
|
|
786
|
-
className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2",
|
|
787
|
-
children: de ? /* @__PURE__ */ X("span", {
|
|
788
|
-
className: "dc:text-sm text-dc-text-secondary",
|
|
789
|
-
children: d("notebook.feedbackThanks")
|
|
790
|
-
}) : /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X("span", {
|
|
791
|
-
className: "dc:text-sm text-dc-text-secondary",
|
|
792
|
-
children: d("notebook.feedbackQuestion")
|
|
793
|
-
}), /* @__PURE__ */ Z("div", {
|
|
794
|
-
className: "dc:flex dc:items-center dc:gap-2",
|
|
795
|
-
children: [/* @__PURE__ */ Z("button", {
|
|
796
|
-
onClick: () => ce(1),
|
|
797
|
-
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
798
|
-
children: [/* @__PURE__ */ X(mr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackYes")]
|
|
799
|
-
}), /* @__PURE__ */ Z("button", {
|
|
800
|
-
onClick: () => ce(0),
|
|
801
|
-
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
802
|
-
children: [/* @__PURE__ */ X(hr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackNo")]
|
|
803
|
-
})]
|
|
804
|
-
})] })
|
|
805
|
-
}),
|
|
806
|
-
/* @__PURE__ */ X("div", { ref: f })
|
|
807
|
-
]
|
|
808
|
-
}),
|
|
809
|
-
/* @__PURE__ */ X(pr, {
|
|
810
|
-
value: C,
|
|
811
|
-
onChange: A,
|
|
812
|
-
onSend: re,
|
|
813
|
-
onStop: ie,
|
|
814
|
-
onContinue: ae,
|
|
815
|
-
isStreaming: S,
|
|
816
|
-
showContinue: !S && x.length > 0
|
|
817
|
-
})
|
|
818
|
-
]
|
|
819
751
|
});
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
752
|
+
return {
|
|
753
|
+
doSend: H((e) => {
|
|
754
|
+
if (!e || T.current) return;
|
|
755
|
+
p.current = !1;
|
|
756
|
+
let t = w.current.map((e) => ({
|
|
757
|
+
role: e.role,
|
|
758
|
+
content: e.content,
|
|
759
|
+
...e.toolCalls && e.toolCalls.length > 0 ? { toolCalls: e.toolCalls } : {}
|
|
760
|
+
}));
|
|
761
|
+
m({
|
|
762
|
+
id: `msg-${Date.now()}`,
|
|
763
|
+
role: "user",
|
|
764
|
+
content: e,
|
|
765
|
+
timestamp: Date.now()
|
|
766
|
+
}), m({
|
|
767
|
+
id: `msg-${Date.now() + 1}`,
|
|
768
|
+
role: "assistant",
|
|
769
|
+
content: "",
|
|
770
|
+
toolCalls: [],
|
|
771
|
+
timestamp: Date.now()
|
|
772
|
+
}), b(""), y(!0), u(!0), O(e, E.current, t);
|
|
773
|
+
}, [
|
|
774
|
+
m,
|
|
775
|
+
b,
|
|
776
|
+
y,
|
|
777
|
+
O
|
|
778
|
+
]),
|
|
779
|
+
handleStop: H(() => {
|
|
780
|
+
k(), y(!1);
|
|
781
|
+
}, [k, y]),
|
|
782
|
+
abort: k,
|
|
783
|
+
isThinking: l,
|
|
784
|
+
setIsThinking: u,
|
|
785
|
+
lastTraceId: d,
|
|
786
|
+
setLastTraceId: f
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
//#endregion
|
|
790
|
+
//#region src/client/components/AgenticNotebook/agentChatParts.tsx
|
|
791
|
+
var Dr = D("thumbUp"), Or = D("thumbDown");
|
|
792
|
+
function kr(...e) {
|
|
793
|
+
return e.every(Boolean);
|
|
794
|
+
}
|
|
795
|
+
function Ar(e) {
|
|
796
|
+
let t = kr(!e.isStreaming, e.messageCount > 0), n = e.lastTraceId ? e.scoredTraceIds.has(e.lastTraceId) : !1;
|
|
797
|
+
return {
|
|
798
|
+
showSaveAsDashboard: kr(t, e.onDashboardSaved, e.portletBlockCount > 0),
|
|
799
|
+
showClear: e.messageCount > 0,
|
|
800
|
+
showFeedback: kr(t, e.onScore, !!e.lastTraceId, !n),
|
|
801
|
+
lastScored: n
|
|
802
|
+
};
|
|
803
|
+
}
|
|
804
|
+
function jr({ showSaveAsDashboard: e, showClear: t, isStreaming: n, onSaveAsDashboard: r, onClear: i }) {
|
|
805
|
+
let { t: a } = z();
|
|
806
|
+
return /* @__PURE__ */ Y("div", {
|
|
807
|
+
className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b",
|
|
808
|
+
children: [/* @__PURE__ */ J("h3", {
|
|
809
|
+
className: "dc:text-sm dc:font-semibold text-dc-text",
|
|
810
|
+
children: a("notebook.aiAssistant")
|
|
811
|
+
}), /* @__PURE__ */ Y("div", {
|
|
812
|
+
className: "dc:flex dc:items-center dc:gap-1",
|
|
813
|
+
children: [e && /* @__PURE__ */ J("button", {
|
|
814
|
+
onClick: r,
|
|
815
|
+
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
|
|
816
|
+
title: a("notebook.saveAsDashboardTitle"),
|
|
817
|
+
children: a("notebook.saveAsDashboard")
|
|
818
|
+
}), t && /* @__PURE__ */ J("button", {
|
|
819
|
+
onClick: i,
|
|
820
|
+
disabled: n,
|
|
821
|
+
className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
|
|
822
|
+
title: a("notebook.clearTitle"),
|
|
823
|
+
children: a("common.actions.clear")
|
|
824
|
+
})]
|
|
825
|
+
})]
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
function Mr({ scored: e, onScore: t }) {
|
|
829
|
+
let { t: n } = z();
|
|
830
|
+
return /* @__PURE__ */ J("div", {
|
|
831
|
+
className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2",
|
|
832
|
+
children: e ? /* @__PURE__ */ J("span", {
|
|
833
|
+
className: "dc:text-sm text-dc-text-secondary",
|
|
834
|
+
children: n("notebook.feedbackThanks")
|
|
835
|
+
}) : /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J("span", {
|
|
836
|
+
className: "dc:text-sm text-dc-text-secondary",
|
|
837
|
+
children: n("notebook.feedbackQuestion")
|
|
838
|
+
}), /* @__PURE__ */ Y("div", {
|
|
839
|
+
className: "dc:flex dc:items-center dc:gap-2",
|
|
840
|
+
children: [/* @__PURE__ */ Y("button", {
|
|
841
|
+
onClick: () => t(1),
|
|
842
|
+
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
843
|
+
children: [/* @__PURE__ */ J(Dr, { className: "dc:w-4 dc:h-4" }), n("notebook.feedbackYes")]
|
|
844
|
+
}), /* @__PURE__ */ Y("button", {
|
|
845
|
+
onClick: () => t(0),
|
|
846
|
+
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
|
|
847
|
+
children: [/* @__PURE__ */ J(Or, { className: "dc:w-4 dc:h-4" }), n("notebook.feedbackNo")]
|
|
848
|
+
})]
|
|
849
|
+
})] })
|
|
850
|
+
});
|
|
851
|
+
}
|
|
852
|
+
function Nr({ loadingComponent: e }) {
|
|
853
|
+
let { t } = z();
|
|
854
|
+
return /* @__PURE__ */ J("div", {
|
|
824
855
|
className: "dc:flex dc:mb-3 dc:justify-start",
|
|
825
856
|
style: { animation: "dc-msg-in 100ms ease-out" },
|
|
826
|
-
children: /* @__PURE__ */
|
|
857
|
+
children: /* @__PURE__ */ Y("div", {
|
|
827
858
|
className: "dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text-secondary dc:rounded-bl-sm dc:flex dc:items-center dc:gap-2",
|
|
828
|
-
children: [e ? /* @__PURE__ */
|
|
859
|
+
children: [e ? /* @__PURE__ */ J("span", {
|
|
829
860
|
className: "dc:inline-flex dc:items-center dc:justify-center dc:h-4 dc:w-4",
|
|
830
861
|
children: e
|
|
831
|
-
}) : /* @__PURE__ */
|
|
862
|
+
}) : /* @__PURE__ */ J(B, { size: "xs" }), /* @__PURE__ */ J("span", { children: t("notebook.thinking") })]
|
|
832
863
|
})
|
|
833
864
|
});
|
|
834
865
|
}
|
|
835
|
-
function
|
|
836
|
-
let { t: e } =
|
|
837
|
-
return /* @__PURE__ */
|
|
866
|
+
function Pr() {
|
|
867
|
+
let { t: e } = z();
|
|
868
|
+
return /* @__PURE__ */ J("div", {
|
|
838
869
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
839
|
-
children: /* @__PURE__ */
|
|
870
|
+
children: /* @__PURE__ */ Y("div", {
|
|
840
871
|
className: "dc:text-center dc:max-w-xs",
|
|
841
872
|
children: [
|
|
842
|
-
/* @__PURE__ */
|
|
873
|
+
/* @__PURE__ */ J("div", {
|
|
843
874
|
className: "dc:text-lg dc:font-semibold text-dc-text dc:mb-2",
|
|
844
875
|
children: e("notebook.emptyState.title")
|
|
845
876
|
}),
|
|
846
|
-
/* @__PURE__ */
|
|
877
|
+
/* @__PURE__ */ J("p", {
|
|
847
878
|
className: "dc:text-sm text-dc-text-secondary dc:mb-4",
|
|
848
879
|
children: e("notebook.emptyState.description")
|
|
849
880
|
}),
|
|
850
|
-
/* @__PURE__ */
|
|
881
|
+
/* @__PURE__ */ Y("div", {
|
|
851
882
|
className: "dc:space-y-2 dc:text-xs text-dc-text-muted",
|
|
852
883
|
children: [
|
|
853
|
-
/* @__PURE__ */
|
|
854
|
-
/* @__PURE__ */
|
|
855
|
-
/* @__PURE__ */
|
|
884
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example1") }),
|
|
885
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example2") }),
|
|
886
|
+
/* @__PURE__ */ J("p", { children: e("notebook.emptyState.example3") })
|
|
856
887
|
]
|
|
857
888
|
})
|
|
858
889
|
]
|
|
@@ -860,10 +891,154 @@ function vr() {
|
|
|
860
891
|
});
|
|
861
892
|
}
|
|
862
893
|
//#endregion
|
|
894
|
+
//#region src/client/components/AgenticNotebook/AgentChatPanel.tsx
|
|
895
|
+
function Fr({ messages: e, loadingComponent: t }) {
|
|
896
|
+
return e.length === 0 ? /* @__PURE__ */ J(Pr, {}) : /* @__PURE__ */ J(q, { children: e.map((e) => /* @__PURE__ */ J(yr, {
|
|
897
|
+
message: e,
|
|
898
|
+
loadingComponent: t
|
|
899
|
+
}, e.id)) });
|
|
900
|
+
}
|
|
901
|
+
var Ir = V.memo(function({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onClear: o, onDashboardSaved: s, onScore: c, loadingComponent: l, initialPrompt: u }) {
|
|
902
|
+
let { t: d } = z(), f = G(null), p = G(!1), [m, h] = K(/* @__PURE__ */ new Set()), { messages: g, isStreaming: _, inputValue: v } = X(t(Wn)), y = X((e) => e.setInputValue), b = X((e) => e.reset), x = X((e) => e.setIsStreaming), S = X((e) => e.blocks.filter((e) => e.type === "portlet").length), { doSend: C, handleStop: w, abort: T, isThinking: E, setIsThinking: D, lastTraceId: O, setLastTraceId: k } = Er({
|
|
903
|
+
agentEndpoint: e,
|
|
904
|
+
agentApiKey: n,
|
|
905
|
+
agentProvider: r,
|
|
906
|
+
agentModel: i,
|
|
907
|
+
agentProviderEndpoint: a,
|
|
908
|
+
onDashboardSaved: s,
|
|
909
|
+
messages: g,
|
|
910
|
+
isStreaming: _
|
|
911
|
+
}), A = G(g.length);
|
|
912
|
+
U(() => {
|
|
913
|
+
g.length > A.current && f.current?.scrollIntoView({ behavior: "smooth" }), A.current = g.length;
|
|
914
|
+
}, [g]), U(() => {
|
|
915
|
+
E && f.current?.scrollIntoView({ behavior: "smooth" });
|
|
916
|
+
}, [E]), U(() => {
|
|
917
|
+
if (u && !p.current && g.length === 0) {
|
|
918
|
+
p.current = !0;
|
|
919
|
+
let e = setTimeout(() => C(u), 100);
|
|
920
|
+
return () => {
|
|
921
|
+
clearTimeout(e), p.current = !1;
|
|
922
|
+
};
|
|
923
|
+
}
|
|
924
|
+
}, [
|
|
925
|
+
u,
|
|
926
|
+
g.length,
|
|
927
|
+
C
|
|
928
|
+
]);
|
|
929
|
+
let j = G(v);
|
|
930
|
+
j.current = v;
|
|
931
|
+
let M = H(() => {
|
|
932
|
+
C(j.current.trim());
|
|
933
|
+
}, [C]), N = H(() => {
|
|
934
|
+
y("");
|
|
935
|
+
}, [y]), P = H(() => {
|
|
936
|
+
T(), x(!1), D(!1), b(), k(null), h(/* @__PURE__ */ new Set()), o?.();
|
|
937
|
+
}, [
|
|
938
|
+
T,
|
|
939
|
+
x,
|
|
940
|
+
D,
|
|
941
|
+
b,
|
|
942
|
+
k,
|
|
943
|
+
o
|
|
944
|
+
]), F = H(() => {
|
|
945
|
+
C(d("notebook.saveAsDashboardPrompt"));
|
|
946
|
+
}, [C, d]), I = H((e) => {
|
|
947
|
+
!O || !c || (c({
|
|
948
|
+
traceId: O,
|
|
949
|
+
value: e
|
|
950
|
+
}), h((e) => new Set(e).add(O)));
|
|
951
|
+
}, [O, c]), { showSaveAsDashboard: L, showClear: ee, showFeedback: te, lastScored: R } = Ar({
|
|
952
|
+
onDashboardSaved: !!s,
|
|
953
|
+
onScore: !!c,
|
|
954
|
+
isStreaming: _,
|
|
955
|
+
portletBlockCount: S,
|
|
956
|
+
messageCount: g.length,
|
|
957
|
+
lastTraceId: O,
|
|
958
|
+
scoredTraceIds: m
|
|
959
|
+
});
|
|
960
|
+
return /* @__PURE__ */ Y("div", {
|
|
961
|
+
className: "dc:flex dc:flex-col dc:h-full bg-dc-surface",
|
|
962
|
+
children: [
|
|
963
|
+
/* @__PURE__ */ J(jr, {
|
|
964
|
+
showSaveAsDashboard: L,
|
|
965
|
+
showClear: ee,
|
|
966
|
+
isStreaming: _,
|
|
967
|
+
onSaveAsDashboard: F,
|
|
968
|
+
onClear: P
|
|
969
|
+
}),
|
|
970
|
+
/* @__PURE__ */ Y("div", {
|
|
971
|
+
className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3",
|
|
972
|
+
children: [
|
|
973
|
+
/* @__PURE__ */ J(Fr, {
|
|
974
|
+
messages: g,
|
|
975
|
+
loadingComponent: l
|
|
976
|
+
}),
|
|
977
|
+
E && /* @__PURE__ */ J(Nr, { loadingComponent: l }),
|
|
978
|
+
(te || R) && /* @__PURE__ */ J(Mr, {
|
|
979
|
+
scored: R,
|
|
980
|
+
onScore: I
|
|
981
|
+
}),
|
|
982
|
+
/* @__PURE__ */ J("div", { ref: f })
|
|
983
|
+
]
|
|
984
|
+
}),
|
|
985
|
+
/* @__PURE__ */ J(br, {
|
|
986
|
+
value: v,
|
|
987
|
+
onChange: y,
|
|
988
|
+
onSend: M,
|
|
989
|
+
onStop: w,
|
|
990
|
+
onContinue: N,
|
|
991
|
+
isStreaming: _,
|
|
992
|
+
showContinue: !_ && g.length > 0
|
|
993
|
+
})
|
|
994
|
+
]
|
|
995
|
+
});
|
|
996
|
+
});
|
|
997
|
+
//#endregion
|
|
998
|
+
//#region src/client/components/AgenticNotebook/useNotebookAutosave.ts
|
|
999
|
+
function Lr({ blockCount: e, messageCount: t, isStreaming: n, save: r, onSave: i }) {
|
|
1000
|
+
let a = G(), o = G(!1), s = G(i);
|
|
1001
|
+
s.current = i;
|
|
1002
|
+
let c = G(e > 0 || t > 0), l = H(() => {
|
|
1003
|
+
a.current && clearTimeout(a.current);
|
|
1004
|
+
}, []), u = H(() => {
|
|
1005
|
+
l(), a.current = setTimeout(() => {
|
|
1006
|
+
o.current = !1;
|
|
1007
|
+
let e = r();
|
|
1008
|
+
s.current?.(e);
|
|
1009
|
+
}, 1e3);
|
|
1010
|
+
}, [l, r]);
|
|
1011
|
+
(e > 0 || t > 0) && (c.current = !0);
|
|
1012
|
+
let d = !!s.current && c.current;
|
|
1013
|
+
return U(() => {
|
|
1014
|
+
if (d) {
|
|
1015
|
+
if (n) {
|
|
1016
|
+
o.current = !0, l();
|
|
1017
|
+
return;
|
|
1018
|
+
}
|
|
1019
|
+
return u(), l;
|
|
1020
|
+
}
|
|
1021
|
+
}, [
|
|
1022
|
+
d,
|
|
1023
|
+
e,
|
|
1024
|
+
t,
|
|
1025
|
+
n,
|
|
1026
|
+
l,
|
|
1027
|
+
u
|
|
1028
|
+
]), U(() => {
|
|
1029
|
+
!n && o.current && s.current && c.current && u();
|
|
1030
|
+
}, [n, u]), { clearSave: H(() => {
|
|
1031
|
+
s.current && (l(), s.current({
|
|
1032
|
+
blocks: [],
|
|
1033
|
+
messages: []
|
|
1034
|
+
}));
|
|
1035
|
+
}, [l]) };
|
|
1036
|
+
}
|
|
1037
|
+
//#endregion
|
|
863
1038
|
//#region src/client/components/AgenticNotebook/index.tsx
|
|
864
|
-
function
|
|
865
|
-
let { t: i } =
|
|
866
|
-
return /* @__PURE__ */
|
|
1039
|
+
function Rr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
|
|
1040
|
+
let { t: i } = z(), a = D("bookOpen"), o = D("documentText");
|
|
1041
|
+
return /* @__PURE__ */ Y("button", {
|
|
867
1042
|
type: "button",
|
|
868
1043
|
onClick: r,
|
|
869
1044
|
className: "dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-r dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
@@ -872,46 +1047,46 @@ function yr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
|
|
|
872
1047
|
width: 48
|
|
873
1048
|
} : { width: 48 },
|
|
874
1049
|
title: i("notebook.collapsed.expandNotebook"),
|
|
875
|
-
children: [/* @__PURE__ */
|
|
1050
|
+
children: [/* @__PURE__ */ J(a, { className: "dc:w-5 dc:h-5 text-dc-text-muted" }), /* @__PURE__ */ J("div", {
|
|
876
1051
|
className: "dc:flex dc:flex-col dc:items-center dc:gap-1.5 dc:flex-1 dc:overflow-y-auto dc:py-1",
|
|
877
1052
|
style: { scrollbarWidth: "none" },
|
|
878
|
-
children: e.length === 0 ? /* @__PURE__ */
|
|
1053
|
+
children: e.length === 0 ? /* @__PURE__ */ J("span", {
|
|
879
1054
|
className: "dc:text-[9px] text-dc-text-disabled dc:writing-vertical-lr dc:mt-2",
|
|
880
1055
|
style: { writingMode: "vertical-lr" },
|
|
881
1056
|
children: i("notebook.collapsed.noBlocks")
|
|
882
1057
|
}) : e.map((e) => {
|
|
883
1058
|
let n = e.id === t, r;
|
|
884
|
-
return r = e.type === "portlet" ?
|
|
1059
|
+
return r = e.type === "portlet" ? S(e.chartType) : o, /* @__PURE__ */ J("div", {
|
|
885
1060
|
className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded",
|
|
886
1061
|
style: n ? { animation: "dc-icon-pulse 0.6s ease-in-out 3" } : void 0,
|
|
887
1062
|
title: e.type === "portlet" ? e.title : e.title || i("notebook.collapsed.markdown"),
|
|
888
|
-
children: /* @__PURE__ */
|
|
1063
|
+
children: /* @__PURE__ */ J(r, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
889
1064
|
}, e.id);
|
|
890
1065
|
})
|
|
891
1066
|
})]
|
|
892
1067
|
});
|
|
893
1068
|
}
|
|
894
|
-
function
|
|
895
|
-
let { t } =
|
|
896
|
-
return /* @__PURE__ */
|
|
1069
|
+
function zr({ onExpand: e }) {
|
|
1070
|
+
let { t } = z(), n = D("sparkles");
|
|
1071
|
+
return /* @__PURE__ */ Y("button", {
|
|
897
1072
|
type: "button",
|
|
898
1073
|
onClick: e,
|
|
899
1074
|
className: "dc:w-12 dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-l dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
900
1075
|
title: t("notebook.collapsed.expandChat"),
|
|
901
|
-
children: [/* @__PURE__ */
|
|
1076
|
+
children: [/* @__PURE__ */ J(n, { className: "dc:w-5 dc:h-5 text-dc-accent" }), /* @__PURE__ */ J("span", {
|
|
902
1077
|
className: "dc:text-[10px] dc:font-medium text-dc-text-muted",
|
|
903
1078
|
style: { writingMode: "vertical-lr" },
|
|
904
1079
|
children: t("notebook.collapsed.aiChat")
|
|
905
1080
|
})]
|
|
906
1081
|
});
|
|
907
1082
|
}
|
|
908
|
-
function
|
|
909
|
-
let [p, m] =
|
|
910
|
-
|
|
1083
|
+
function Br({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r, agentProviderEndpoint: i, onSave: a, onDirtyStateChange: o, onDashboardSaved: s, onScore: c, colorPalette: l, loadingComponent: u, className: d, initialPrompt: f }) {
|
|
1084
|
+
let [p, m] = K(60), h = G(null), g = G(!1), { containerRef: _, layoutMode: v } = An(), [y, b] = K("chat"), [x, S] = K(null), [C, w] = K(!1), T = G(v), E = X((e) => e.blocks), D = E.length, O = X((e) => e.messages.length), k = X((e) => e.isStreaming), A = X((e) => e.save);
|
|
1085
|
+
U(() => {
|
|
911
1086
|
T.current === "narrow" && v === "wide" && b("chat"), T.current = v;
|
|
912
1087
|
}, [v]);
|
|
913
|
-
let j =
|
|
914
|
-
|
|
1088
|
+
let j = G(D);
|
|
1089
|
+
U(() => {
|
|
915
1090
|
if (v === "narrow" && y === "chat" && D > j.current) {
|
|
916
1091
|
let e = E[E.length - 1];
|
|
917
1092
|
if (e) {
|
|
@@ -927,8 +1102,8 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
927
1102
|
v,
|
|
928
1103
|
y
|
|
929
1104
|
]);
|
|
930
|
-
let M =
|
|
931
|
-
|
|
1105
|
+
let M = G(!1);
|
|
1106
|
+
U(() => {
|
|
932
1107
|
if (k) M.current = !0;
|
|
933
1108
|
else if (M.current && v === "narrow" && y === "chat" && D > 0) {
|
|
934
1109
|
M.current = !1, w(!0);
|
|
@@ -941,54 +1116,26 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
941
1116
|
y,
|
|
942
1117
|
D
|
|
943
1118
|
]);
|
|
944
|
-
let N =
|
|
1119
|
+
let N = H((e) => {
|
|
945
1120
|
_(e), h.current = e;
|
|
946
|
-
}, [_]), P =
|
|
1121
|
+
}, [_]), P = G({
|
|
947
1122
|
blockCount: D,
|
|
948
1123
|
msgCount: O
|
|
949
1124
|
});
|
|
950
|
-
|
|
1125
|
+
U(() => {
|
|
951
1126
|
o?.(D !== P.current.blockCount || O !== P.current.msgCount);
|
|
952
1127
|
}, [
|
|
953
1128
|
D,
|
|
954
1129
|
O,
|
|
955
1130
|
o
|
|
956
1131
|
]);
|
|
957
|
-
let
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
return;
|
|
965
|
-
}
|
|
966
|
-
return F.current && clearTimeout(F.current), F.current = setTimeout(() => {
|
|
967
|
-
I.current = !1;
|
|
968
|
-
let e = A();
|
|
969
|
-
L.current?.(e);
|
|
970
|
-
}, 1e3), () => {
|
|
971
|
-
F.current && clearTimeout(F.current);
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
}, [
|
|
975
|
-
D,
|
|
976
|
-
O,
|
|
977
|
-
k,
|
|
978
|
-
A
|
|
979
|
-
]), G(() => {
|
|
980
|
-
!k && I.current && L.current && R.current && (F.current && clearTimeout(F.current), F.current = setTimeout(() => {
|
|
981
|
-
I.current = !1;
|
|
982
|
-
let e = A();
|
|
983
|
-
L.current?.(e);
|
|
984
|
-
}, 1e3));
|
|
985
|
-
}, [k, A]);
|
|
986
|
-
let z = W(() => {
|
|
987
|
-
L.current && (F.current && clearTimeout(F.current), L.current({
|
|
988
|
-
blocks: [],
|
|
989
|
-
messages: []
|
|
990
|
-
}));
|
|
991
|
-
}, []), ee = W((e) => {
|
|
1132
|
+
let { clearSave: F } = Lr({
|
|
1133
|
+
blockCount: D,
|
|
1134
|
+
messageCount: O,
|
|
1135
|
+
isStreaming: k,
|
|
1136
|
+
save: A,
|
|
1137
|
+
onSave: a
|
|
1138
|
+
}), I = H((e) => {
|
|
992
1139
|
e.preventDefault(), g.current = !0;
|
|
993
1140
|
let t = (e) => {
|
|
994
1141
|
if (!g.current || !h.current) return;
|
|
@@ -998,58 +1145,58 @@ function xr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
|
|
|
998
1145
|
g.current = !1, document.removeEventListener("mousemove", t), document.removeEventListener("mouseup", n);
|
|
999
1146
|
};
|
|
1000
1147
|
document.addEventListener("mousemove", t), document.addEventListener("mouseup", n);
|
|
1001
|
-
}, []),
|
|
1148
|
+
}, []), L = /* @__PURE__ */ J(Ir, {
|
|
1002
1149
|
agentEndpoint: e,
|
|
1003
1150
|
agentApiKey: t,
|
|
1004
1151
|
agentProvider: n,
|
|
1005
1152
|
agentModel: r,
|
|
1006
1153
|
agentProviderEndpoint: i,
|
|
1007
|
-
onClear:
|
|
1154
|
+
onClear: F,
|
|
1008
1155
|
onDashboardSaved: s,
|
|
1009
1156
|
onScore: c,
|
|
1010
1157
|
loadingComponent: u,
|
|
1011
1158
|
initialPrompt: f
|
|
1012
1159
|
});
|
|
1013
|
-
return v === "narrow" ? /* @__PURE__ */
|
|
1160
|
+
return v === "narrow" ? /* @__PURE__ */ J("div", {
|
|
1014
1161
|
ref: N,
|
|
1015
1162
|
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
|
|
1016
|
-
children: y === "chat" ? /* @__PURE__ */
|
|
1163
|
+
children: y === "chat" ? /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J(Rr, {
|
|
1017
1164
|
blocks: E,
|
|
1018
1165
|
pulsingBlockId: x,
|
|
1019
1166
|
nudge: C,
|
|
1020
1167
|
onExpand: () => b("notebook")
|
|
1021
|
-
}), /* @__PURE__ */
|
|
1168
|
+
}), /* @__PURE__ */ J("div", {
|
|
1022
1169
|
className: "dc:h-full dc:overflow-hidden dc:flex-1",
|
|
1023
|
-
children:
|
|
1024
|
-
})] }) : /* @__PURE__ */
|
|
1170
|
+
children: L
|
|
1171
|
+
})] }) : /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J("div", {
|
|
1025
1172
|
className: "dc:h-full dc:overflow-hidden dc:flex-1",
|
|
1026
|
-
children: /* @__PURE__ */
|
|
1027
|
-
}), /* @__PURE__ */
|
|
1028
|
-
}) : /* @__PURE__ */
|
|
1173
|
+
children: /* @__PURE__ */ J(or, { colorPalette: l })
|
|
1174
|
+
}), /* @__PURE__ */ J(zr, { onExpand: () => b("chat") })] })
|
|
1175
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
1029
1176
|
ref: N,
|
|
1030
1177
|
className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
|
|
1031
1178
|
children: [
|
|
1032
|
-
/* @__PURE__ */
|
|
1179
|
+
/* @__PURE__ */ J("div", {
|
|
1033
1180
|
className: "dc:h-full dc:overflow-hidden",
|
|
1034
1181
|
style: { width: `${p}%` },
|
|
1035
|
-
children: /* @__PURE__ */
|
|
1182
|
+
children: /* @__PURE__ */ J(or, { colorPalette: l })
|
|
1036
1183
|
}),
|
|
1037
|
-
/* @__PURE__ */
|
|
1184
|
+
/* @__PURE__ */ J("div", {
|
|
1038
1185
|
className: "dc:w-1 dc:h-full dc:cursor-col-resize dc:flex-shrink-0 dc:transition-colors bg-dc-border dc:hover:bg-dc-accent",
|
|
1039
|
-
onMouseDown:
|
|
1186
|
+
onMouseDown: I
|
|
1040
1187
|
}),
|
|
1041
|
-
/* @__PURE__ */
|
|
1188
|
+
/* @__PURE__ */ J("div", {
|
|
1042
1189
|
className: "dc:h-full dc:overflow-hidden",
|
|
1043
1190
|
style: { width: `${100 - p}%` },
|
|
1044
|
-
children:
|
|
1191
|
+
children: L
|
|
1045
1192
|
})
|
|
1046
1193
|
]
|
|
1047
1194
|
});
|
|
1048
1195
|
}
|
|
1049
|
-
var
|
|
1050
|
-
return /* @__PURE__ */
|
|
1196
|
+
var Vr = V.memo(function({ config: e, colorPalette: t, ...n }) {
|
|
1197
|
+
return /* @__PURE__ */ J(Rn, {
|
|
1051
1198
|
initialConfig: e,
|
|
1052
|
-
children: /* @__PURE__ */
|
|
1199
|
+
children: /* @__PURE__ */ J(Br, {
|
|
1053
1200
|
...n,
|
|
1054
1201
|
colorPalette: t
|
|
1055
1202
|
})
|
|
@@ -1057,28 +1204,28 @@ var Sr = U.memo(function({ config: e, colorPalette: t, ...n }) {
|
|
|
1057
1204
|
});
|
|
1058
1205
|
//#endregion
|
|
1059
1206
|
//#region src/client/components/AnalyticsPage.tsx
|
|
1060
|
-
function
|
|
1061
|
-
let { t: e } =
|
|
1062
|
-
return /* @__PURE__ */
|
|
1207
|
+
function Hr() {
|
|
1208
|
+
let { t: e } = z();
|
|
1209
|
+
return /* @__PURE__ */ J("div", { children: e("analyticsPage.title") });
|
|
1063
1210
|
}
|
|
1064
1211
|
//#endregion
|
|
1065
1212
|
//#region src/client/stores/dataBrowserStore.tsx
|
|
1066
|
-
var
|
|
1067
|
-
function
|
|
1213
|
+
var Ur = "dc-data-browser-column-widths";
|
|
1214
|
+
function Wr(e) {
|
|
1068
1215
|
try {
|
|
1069
|
-
let t = localStorage.getItem(
|
|
1216
|
+
let t = localStorage.getItem(Ur);
|
|
1070
1217
|
return t ? JSON.parse(t)[e] ?? {} : {};
|
|
1071
1218
|
} catch {
|
|
1072
1219
|
return {};
|
|
1073
1220
|
}
|
|
1074
1221
|
}
|
|
1075
|
-
function
|
|
1222
|
+
function Gr(e, t) {
|
|
1076
1223
|
try {
|
|
1077
|
-
let n = localStorage.getItem(
|
|
1078
|
-
r[e] = t, localStorage.setItem(
|
|
1224
|
+
let n = localStorage.getItem(Ur), r = n ? JSON.parse(n) : {};
|
|
1225
|
+
r[e] = t, localStorage.setItem(Ur, JSON.stringify(r));
|
|
1079
1226
|
} catch {}
|
|
1080
1227
|
}
|
|
1081
|
-
function
|
|
1228
|
+
function Kr(e = {}) {
|
|
1082
1229
|
return i()((t, n) => ({
|
|
1083
1230
|
selectedCube: e.defaultCube ?? null,
|
|
1084
1231
|
visibleColumns: e.defaultColumns ?? [],
|
|
@@ -1089,7 +1236,7 @@ function Dr(e = {}) {
|
|
|
1089
1236
|
filters: [],
|
|
1090
1237
|
showFilterBar: !1,
|
|
1091
1238
|
showColumnPicker: !1,
|
|
1092
|
-
columnWidths: e.defaultCube ?
|
|
1239
|
+
columnWidths: e.defaultCube ? Wr(e.defaultCube) : {},
|
|
1093
1240
|
selectCube: (e, n) => t({
|
|
1094
1241
|
selectedCube: e,
|
|
1095
1242
|
visibleColumns: n,
|
|
@@ -1098,7 +1245,7 @@ function Dr(e = {}) {
|
|
|
1098
1245
|
page: 0,
|
|
1099
1246
|
filters: [],
|
|
1100
1247
|
showFilterBar: !1,
|
|
1101
|
-
columnWidths:
|
|
1248
|
+
columnWidths: Wr(e)
|
|
1102
1249
|
}),
|
|
1103
1250
|
setVisibleColumns: (e) => t({
|
|
1104
1251
|
visibleColumns: e,
|
|
@@ -1145,39 +1292,39 @@ function Dr(e = {}) {
|
|
|
1145
1292
|
...t.columnWidths,
|
|
1146
1293
|
[e]: n
|
|
1147
1294
|
};
|
|
1148
|
-
return t.selectedCube &&
|
|
1295
|
+
return t.selectedCube && Gr(t.selectedCube, r), { columnWidths: r };
|
|
1149
1296
|
}),
|
|
1150
1297
|
setColumnWidths: (e) => {
|
|
1151
1298
|
let r = n().selectedCube;
|
|
1152
|
-
r &&
|
|
1299
|
+
r && Gr(r, e), t({ columnWidths: e });
|
|
1153
1300
|
}
|
|
1154
1301
|
}));
|
|
1155
1302
|
}
|
|
1156
|
-
var
|
|
1157
|
-
function
|
|
1158
|
-
let i =
|
|
1159
|
-
return i.current ||=
|
|
1303
|
+
var qr = Mn(null);
|
|
1304
|
+
function Jr({ children: e, defaultPageSize: t, defaultCube: n, defaultColumns: r }) {
|
|
1305
|
+
let i = G(null);
|
|
1306
|
+
return i.current ||= Kr({
|
|
1160
1307
|
defaultPageSize: t,
|
|
1161
1308
|
defaultCube: n,
|
|
1162
1309
|
defaultColumns: r
|
|
1163
|
-
}), /* @__PURE__ */
|
|
1310
|
+
}), /* @__PURE__ */ J(qr.Provider, {
|
|
1164
1311
|
value: i.current,
|
|
1165
1312
|
children: e
|
|
1166
1313
|
});
|
|
1167
1314
|
}
|
|
1168
1315
|
function $(e) {
|
|
1169
|
-
let t =
|
|
1316
|
+
let t = Nn(qr);
|
|
1170
1317
|
if (!t) throw Error("useDataBrowserStore must be used within DataBrowserStoreProvider");
|
|
1171
1318
|
return n(t, e);
|
|
1172
1319
|
}
|
|
1173
1320
|
//#endregion
|
|
1174
1321
|
//#region src/client/hooks/useDataBrowser.ts
|
|
1175
|
-
function
|
|
1322
|
+
function Yr(e, t) {
|
|
1176
1323
|
if (!t) return !0;
|
|
1177
1324
|
let [n, r] = e.split("."), i = t.cubes.find((e) => e.name === n);
|
|
1178
1325
|
return i ? i.dimensions.some((e) => e.name === `${n}.${r}`) : !0;
|
|
1179
1326
|
}
|
|
1180
|
-
function
|
|
1327
|
+
function Xr(e, t) {
|
|
1181
1328
|
if (!t) return "string";
|
|
1182
1329
|
let [n] = e.split("."), r = t.cubes.find((e) => e.name === n);
|
|
1183
1330
|
if (!r) return "string";
|
|
@@ -1186,7 +1333,7 @@ function jr(e, t) {
|
|
|
1186
1333
|
let a = r.measures.find((t) => t.name === e);
|
|
1187
1334
|
return a ? a.type : "string";
|
|
1188
1335
|
}
|
|
1189
|
-
function
|
|
1336
|
+
function Zr(e, t) {
|
|
1190
1337
|
if (!t) return {
|
|
1191
1338
|
dimensions: [],
|
|
1192
1339
|
measures: []
|
|
@@ -1208,7 +1355,7 @@ function Mr(e, t) {
|
|
|
1208
1355
|
measures: n.measures.filter((e) => r.has(e.type)).map((e) => e.name)
|
|
1209
1356
|
};
|
|
1210
1357
|
}
|
|
1211
|
-
function
|
|
1358
|
+
function Qr() {
|
|
1212
1359
|
let e = $((e) => e.selectedCube), n = $((e) => e.visibleColumns), r = $((e) => e.sortColumn), i = $((e) => e.sortDirection), a = $((e) => e.page), o = $((e) => e.pageSize), s = $((e) => e.filters), c = $((e) => e.showFilterBar), l = $((e) => e.showColumnPicker), u = $(t((e) => ({
|
|
1213
1360
|
selectCube: e.selectCube,
|
|
1214
1361
|
setVisibleColumns: e.setVisibleColumns,
|
|
@@ -1220,15 +1367,15 @@ function Nr() {
|
|
|
1220
1367
|
setFilters: e.setFilters,
|
|
1221
1368
|
toggleFilterBar: e.toggleFilterBar,
|
|
1222
1369
|
setShowColumnPicker: e.setShowColumnPicker
|
|
1223
|
-
}))), { meta: d, getFieldLabel: f } =
|
|
1370
|
+
}))), { meta: d, getFieldLabel: f } = dt(), p = W(() => {
|
|
1224
1371
|
if (!d || !e) return null;
|
|
1225
1372
|
let t = d.cubes.find((t) => t.name === e);
|
|
1226
1373
|
if (!t) return null;
|
|
1227
1374
|
let n = t.dimensions.find((e) => e.primaryKey);
|
|
1228
1375
|
return n ? n.name : t.dimensions.length > 0 ? t.dimensions[0].name : null;
|
|
1229
|
-
}, [d, e]), m = r ?? p, h = r ? i : "asc", g =
|
|
1376
|
+
}, [d, e]), m = r ?? p, h = r ? i : "asc", g = W(() => {
|
|
1230
1377
|
if (!e || n.length === 0) return null;
|
|
1231
|
-
let t = n.filter((e) =>
|
|
1378
|
+
let t = n.filter((e) => Yr(e, d)), r = n.filter((e) => !Yr(e, d));
|
|
1232
1379
|
if (t.length === 0) return null;
|
|
1233
1380
|
let i = {
|
|
1234
1381
|
dimensions: t,
|
|
@@ -1246,7 +1393,7 @@ function Nr() {
|
|
|
1246
1393
|
a,
|
|
1247
1394
|
o,
|
|
1248
1395
|
d
|
|
1249
|
-
]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } =
|
|
1396
|
+
]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } = ft(g, {
|
|
1250
1397
|
skip: !g,
|
|
1251
1398
|
debounceMs: 400,
|
|
1252
1399
|
keepPreviousData: !0,
|
|
@@ -1282,24 +1429,24 @@ function Nr() {
|
|
|
1282
1429
|
}
|
|
1283
1430
|
//#endregion
|
|
1284
1431
|
//#region src/client/components/DataBrowser/DataBrowserSidebar.tsx
|
|
1285
|
-
var
|
|
1286
|
-
function
|
|
1287
|
-
let { t: r } =
|
|
1432
|
+
var $r = D("search"), ei = D("cube");
|
|
1433
|
+
function ti({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
1434
|
+
let { t: r } = z(), [i, a] = K(""), o = W(() => {
|
|
1288
1435
|
let t = [...e].sort((e, t) => (e.title || e.name).localeCompare(t.title || t.name));
|
|
1289
1436
|
if (!i) return t;
|
|
1290
1437
|
let n = i.toLowerCase();
|
|
1291
1438
|
return t.filter((e) => e.name.toLowerCase().includes(n) || e.title.toLowerCase().includes(n));
|
|
1292
1439
|
}, [e, i]);
|
|
1293
|
-
return /* @__PURE__ */
|
|
1440
|
+
return /* @__PURE__ */ Y("div", {
|
|
1294
1441
|
className: "dc:flex dc:flex-col dc:h-full dc:border-r border-dc-border bg-dc-surface dc:w-60 dc:shrink-0",
|
|
1295
|
-
children: [/* @__PURE__ */
|
|
1442
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
1296
1443
|
className: "dc:px-3 dc:py-3 dc:border-b border-dc-border",
|
|
1297
|
-
children: [/* @__PURE__ */
|
|
1444
|
+
children: [/* @__PURE__ */ J("h2", {
|
|
1298
1445
|
className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
|
|
1299
1446
|
children: r("dataBrowser.sidebar.cubes")
|
|
1300
|
-
}), /* @__PURE__ */
|
|
1447
|
+
}), /* @__PURE__ */ Y("div", {
|
|
1301
1448
|
className: "dc:relative",
|
|
1302
|
-
children: [/* @__PURE__ */
|
|
1449
|
+
children: [/* @__PURE__ */ J($r, { className: "dc:absolute dc:left-2 dc:top-1/2 dc:-translate-y-1/2 dc:w-3.5 dc:h-3.5 text-dc-text-muted" }), /* @__PURE__ */ J("input", {
|
|
1303
1450
|
type: "text",
|
|
1304
1451
|
value: i,
|
|
1305
1452
|
onChange: (e) => a(e.target.value),
|
|
@@ -1307,16 +1454,16 @@ function Ir({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
|
1307
1454
|
className: "dc:w-full dc:pl-7 dc:pr-2 dc:py-1.5 dc:text-xs dc:rounded border-dc-border dc:border bg-dc-surface text-dc-text dc:outline-none dc:focus:ring-1 focus:ring-dc-accent"
|
|
1308
1455
|
})]
|
|
1309
1456
|
})]
|
|
1310
|
-
}), /* @__PURE__ */
|
|
1457
|
+
}), /* @__PURE__ */ Y("div", {
|
|
1311
1458
|
className: "dc:flex-1 dc:overflow-y-auto dc:py-1",
|
|
1312
|
-
children: [o.map((e) => /* @__PURE__ */
|
|
1459
|
+
children: [o.map((e) => /* @__PURE__ */ Y("button", {
|
|
1313
1460
|
onClick: () => n(e.name),
|
|
1314
1461
|
className: `dc:flex dc:items-center dc:gap-2 dc:w-full dc:px-3 dc:py-1.5 dc:text-left dc:text-sm dc:transition-colors ${t === e.name ? "bg-dc-accent-bg text-dc-accent dc:font-medium" : "text-dc-text dc:hover:bg-dc-surface-hover"}`,
|
|
1315
|
-
children: [/* @__PURE__ */
|
|
1462
|
+
children: [/* @__PURE__ */ J(ei, { className: "dc:w-4 dc:h-4 dc:shrink-0 text-dc-text-muted" }), /* @__PURE__ */ J("span", {
|
|
1316
1463
|
className: "dc:truncate",
|
|
1317
1464
|
children: e.title || e.name
|
|
1318
1465
|
})]
|
|
1319
|
-
}, e.name)), o.length === 0 && /* @__PURE__ */
|
|
1466
|
+
}, e.name)), o.length === 0 && /* @__PURE__ */ J("div", {
|
|
1320
1467
|
className: "dc:px-3 dc:py-4 dc:text-xs text-dc-text-muted dc:text-center",
|
|
1321
1468
|
children: r("dataBrowser.sidebar.noCubes")
|
|
1322
1469
|
})]
|
|
@@ -1325,77 +1472,77 @@ function Ir({ cubes: e, selectedCube: t, onSelectCube: n }) {
|
|
|
1325
1472
|
}
|
|
1326
1473
|
//#endregion
|
|
1327
1474
|
//#region src/client/components/DataBrowser/DataBrowserToolbar.tsx
|
|
1328
|
-
var
|
|
1329
|
-
function
|
|
1330
|
-
let { t: p } =
|
|
1331
|
-
return /* @__PURE__ */
|
|
1475
|
+
var ni = D("filter"), ri = D("settings"), ii = D("chevronLeft"), ai = D("chevronRight"), oi = D("refresh");
|
|
1476
|
+
function si({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleColumnPicker: r, page: i, pageSize: a, rowCount: o, hasNextPage: s, hasPrevPage: c, onPageChange: l, onPageSizeChange: u, isFetching: d, onRefresh: f }) {
|
|
1477
|
+
let { t: p } = z();
|
|
1478
|
+
return /* @__PURE__ */ Y("div", {
|
|
1332
1479
|
className: "dc:flex dc:items-center dc:gap-2 dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface-secondary",
|
|
1333
1480
|
children: [
|
|
1334
|
-
/* @__PURE__ */
|
|
1481
|
+
/* @__PURE__ */ Y("button", {
|
|
1335
1482
|
onClick: n,
|
|
1336
1483
|
className: `dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border dc:transition-colors ${e ? "border-dc-accent bg-dc-accent-bg text-dc-accent" : "border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover"}`,
|
|
1337
1484
|
children: [
|
|
1338
|
-
/* @__PURE__ */
|
|
1485
|
+
/* @__PURE__ */ J(ni, { className: "dc:w-3.5 dc:h-3.5" }),
|
|
1339
1486
|
p("dataBrowser.toolbar.filters"),
|
|
1340
|
-
t > 0 && /* @__PURE__ */
|
|
1487
|
+
t > 0 && /* @__PURE__ */ J("span", {
|
|
1341
1488
|
className: "dc:inline-flex dc:items-center dc:justify-center dc:w-4 dc:h-4 dc:text-[10px] dc:font-bold dc:rounded-full bg-dc-accent text-dc-surface",
|
|
1342
1489
|
children: t
|
|
1343
1490
|
})
|
|
1344
1491
|
]
|
|
1345
1492
|
}),
|
|
1346
|
-
/* @__PURE__ */
|
|
1493
|
+
/* @__PURE__ */ Y("button", {
|
|
1347
1494
|
onClick: r,
|
|
1348
1495
|
className: "dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
1349
|
-
children: [/* @__PURE__ */
|
|
1496
|
+
children: [/* @__PURE__ */ J(ri, { className: "dc:w-3.5 dc:h-3.5" }), p("dataBrowser.toolbar.columns")]
|
|
1350
1497
|
}),
|
|
1351
|
-
/* @__PURE__ */
|
|
1352
|
-
/* @__PURE__ */
|
|
1498
|
+
/* @__PURE__ */ J("div", { className: "dc:flex-1" }),
|
|
1499
|
+
/* @__PURE__ */ J("span", {
|
|
1353
1500
|
className: "dc:text-xs text-dc-text-muted",
|
|
1354
1501
|
children: p("dataBrowser.toolbar.rows", { count: o })
|
|
1355
1502
|
}),
|
|
1356
|
-
/* @__PURE__ */
|
|
1503
|
+
/* @__PURE__ */ J("button", {
|
|
1357
1504
|
onClick: f,
|
|
1358
1505
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:transition-colors",
|
|
1359
1506
|
title: "Refresh",
|
|
1360
|
-
children: /* @__PURE__ */
|
|
1507
|
+
children: /* @__PURE__ */ J(oi, { className: `dc:w-3.5 dc:h-3.5 text-dc-text-muted ${d ? "dc:animate-spin" : ""}` })
|
|
1361
1508
|
}),
|
|
1362
|
-
/* @__PURE__ */
|
|
1509
|
+
/* @__PURE__ */ Y("select", {
|
|
1363
1510
|
value: a,
|
|
1364
1511
|
onChange: (e) => u(Number(e.target.value)),
|
|
1365
1512
|
className: "dc:text-xs dc:px-1.5 dc:py-1 dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:outline-none",
|
|
1366
1513
|
children: [
|
|
1367
|
-
/* @__PURE__ */
|
|
1514
|
+
/* @__PURE__ */ J("option", {
|
|
1368
1515
|
value: 20,
|
|
1369
1516
|
children: "20"
|
|
1370
1517
|
}),
|
|
1371
|
-
/* @__PURE__ */
|
|
1518
|
+
/* @__PURE__ */ J("option", {
|
|
1372
1519
|
value: 50,
|
|
1373
1520
|
children: "50"
|
|
1374
1521
|
}),
|
|
1375
|
-
/* @__PURE__ */
|
|
1522
|
+
/* @__PURE__ */ J("option", {
|
|
1376
1523
|
value: 100,
|
|
1377
1524
|
children: "100"
|
|
1378
1525
|
})
|
|
1379
1526
|
]
|
|
1380
1527
|
}),
|
|
1381
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ Y("div", {
|
|
1382
1529
|
className: "dc:flex dc:items-center dc:gap-1",
|
|
1383
1530
|
children: [
|
|
1384
|
-
/* @__PURE__ */
|
|
1531
|
+
/* @__PURE__ */ J("button", {
|
|
1385
1532
|
onClick: () => l(i - 1),
|
|
1386
1533
|
disabled: !c,
|
|
1387
1534
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
|
|
1388
|
-
children: /* @__PURE__ */
|
|
1535
|
+
children: /* @__PURE__ */ J(ii, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
1389
1536
|
}),
|
|
1390
|
-
/* @__PURE__ */
|
|
1537
|
+
/* @__PURE__ */ J("span", {
|
|
1391
1538
|
className: "dc:text-xs dc:font-medium text-dc-text dc:min-w-[2rem] dc:text-center",
|
|
1392
1539
|
children: i + 1
|
|
1393
1540
|
}),
|
|
1394
|
-
/* @__PURE__ */
|
|
1541
|
+
/* @__PURE__ */ J("button", {
|
|
1395
1542
|
onClick: () => l(i + 1),
|
|
1396
1543
|
disabled: !s,
|
|
1397
1544
|
className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
|
|
1398
|
-
children: /* @__PURE__ */
|
|
1545
|
+
children: /* @__PURE__ */ J(ai, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
|
|
1399
1546
|
})
|
|
1400
1547
|
]
|
|
1401
1548
|
})
|
|
@@ -1404,9 +1551,9 @@ function Hr({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleCo
|
|
|
1404
1551
|
}
|
|
1405
1552
|
//#endregion
|
|
1406
1553
|
//#region src/client/components/DataBrowser/DataBrowserTable.tsx
|
|
1407
|
-
var
|
|
1408
|
-
function
|
|
1409
|
-
let n =
|
|
1554
|
+
var ci = D("chevronUp"), li = D("chevronDown");
|
|
1555
|
+
function ui(e, t) {
|
|
1556
|
+
let n = Xr(e, t);
|
|
1410
1557
|
return {
|
|
1411
1558
|
string: "text",
|
|
1412
1559
|
number: "num",
|
|
@@ -1418,14 +1565,14 @@ function Gr(e, t) {
|
|
|
1418
1565
|
max: "num"
|
|
1419
1566
|
}[n] || n;
|
|
1420
1567
|
}
|
|
1421
|
-
function
|
|
1422
|
-
return
|
|
1568
|
+
function di(e, t) {
|
|
1569
|
+
return ui(e, t) === "num";
|
|
1423
1570
|
}
|
|
1424
|
-
function
|
|
1571
|
+
function fi(e) {
|
|
1425
1572
|
return e == null ? "" : typeof e == "number" ? e.toLocaleString() : typeof e == "boolean" ? e ? "true" : "false" : e instanceof Date ? e.toISOString() : String(e);
|
|
1426
1573
|
}
|
|
1427
|
-
var
|
|
1428
|
-
let { t: d } =
|
|
1574
|
+
var pi = 60, mi = 150, hi = V.memo(function({ data: e, columns: t, sortColumn: n, sortDirection: r, onSort: i, getFieldLabel: a, meta: o, isLoading: s, isFetching: c, selectedCube: l, loadingComponent: u }) {
|
|
1575
|
+
let { t: d } = z(), f = $((e) => e.columnWidths), p = $((e) => e.setColumnWidth), m = $((e) => e.setColumnWidths), h = G(null), g = G(!1), _ = H((e, n) => {
|
|
1429
1576
|
e.preventDefault(), e.stopPropagation();
|
|
1430
1577
|
let r = e.clientX;
|
|
1431
1578
|
g.current = !1;
|
|
@@ -1437,9 +1584,9 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1437
1584
|
i && (n[i] = e.getBoundingClientRect().width);
|
|
1438
1585
|
}), m(n);
|
|
1439
1586
|
}
|
|
1440
|
-
let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width :
|
|
1587
|
+
let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width : mi, s = (e) => {
|
|
1441
1588
|
let t = e.clientX - r;
|
|
1442
|
-
Math.abs(t) > 2 && (g.current = !0), p(n, Math.max(
|
|
1589
|
+
Math.abs(t) > 2 && (g.current = !0), p(n, Math.max(pi, o + t));
|
|
1443
1590
|
}, c = () => {
|
|
1444
1591
|
document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", c), document.body.style.cursor = "", document.body.style.userSelect = "", requestAnimationFrame(() => {
|
|
1445
1592
|
g.current = !1;
|
|
@@ -1450,24 +1597,24 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1450
1597
|
t,
|
|
1451
1598
|
p,
|
|
1452
1599
|
m
|
|
1453
|
-
]), v =
|
|
1600
|
+
]), v = H((e) => {
|
|
1454
1601
|
g.current || i(e);
|
|
1455
|
-
}, [i]), y = Object.keys(f).length > 0 ? t.reduce((e, t) => e + (f[t] ??
|
|
1456
|
-
return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */
|
|
1602
|
+
}, [i]), y = Object.keys(f).length > 0 ? t.reduce((e, t) => e + (f[t] ?? mi), 0) : void 0;
|
|
1603
|
+
return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */ J("div", {
|
|
1457
1604
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
1458
|
-
children: /* @__PURE__ */
|
|
1605
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1459
1606
|
className: "dc:text-center text-dc-text-muted",
|
|
1460
|
-
children: [/* @__PURE__ */
|
|
1607
|
+
children: [/* @__PURE__ */ J("div", {
|
|
1461
1608
|
className: "dc:text-sm dc:font-semibold dc:mb-1",
|
|
1462
1609
|
children: d("dataBrowser.noData")
|
|
1463
|
-
}), /* @__PURE__ */
|
|
1610
|
+
}), /* @__PURE__ */ J("div", {
|
|
1464
1611
|
className: "dc:text-xs text-dc-text-secondary",
|
|
1465
1612
|
children: d("dataBrowser.noRows")
|
|
1466
1613
|
})]
|
|
1467
1614
|
})
|
|
1468
|
-
}) : /* @__PURE__ */
|
|
1615
|
+
}) : /* @__PURE__ */ Y("div", {
|
|
1469
1616
|
className: "dc:relative dc:flex-1 dc:overflow-auto",
|
|
1470
|
-
children: [c && /* @__PURE__ */
|
|
1617
|
+
children: [c && /* @__PURE__ */ J("div", { className: "dc:absolute dc:inset-0 bg-dc-surface dc:opacity-40 dc:z-10 dc:pointer-events-none" }), /* @__PURE__ */ Y("table", {
|
|
1471
1618
|
ref: h,
|
|
1472
1619
|
className: "dc:border-collapse",
|
|
1473
1620
|
style: {
|
|
@@ -1476,31 +1623,31 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1476
1623
|
minWidth: "100%"
|
|
1477
1624
|
},
|
|
1478
1625
|
children: [
|
|
1479
|
-
/* @__PURE__ */
|
|
1480
|
-
/* @__PURE__ */
|
|
1626
|
+
/* @__PURE__ */ J("colgroup", { children: t.map((e) => /* @__PURE__ */ J("col", { style: { width: f[e] ?? mi } }, e)) }),
|
|
1627
|
+
/* @__PURE__ */ J("thead", {
|
|
1481
1628
|
className: "dc:sticky dc:top-0 dc:z-20",
|
|
1482
1629
|
style: { backgroundColor: "var(--dc-surface-secondary)" },
|
|
1483
|
-
children: /* @__PURE__ */
|
|
1484
|
-
let s = n === e, c = a(e), l =
|
|
1485
|
-
return /* @__PURE__ */
|
|
1630
|
+
children: /* @__PURE__ */ J("tr", { children: t.map((e, i) => {
|
|
1631
|
+
let s = n === e, c = a(e), l = ui(e, o), u = i === t.length - 1, d = di(e, o);
|
|
1632
|
+
return /* @__PURE__ */ Y("th", {
|
|
1486
1633
|
onClick: () => v(e),
|
|
1487
1634
|
className: `dc:relative dc:px-3 dc:py-2 dc:text-xs dc:font-normal dc:cursor-pointer dc:select-none dc:border-b border-dc-border dc:transition-colors${u ? "" : " dc:border-r"}${d ? " dc:text-right" : " dc:text-left"}`,
|
|
1488
1635
|
style: { color: "var(--dc-text-muted)" },
|
|
1489
|
-
children: [/* @__PURE__ */
|
|
1636
|
+
children: [/* @__PURE__ */ Y("div", {
|
|
1490
1637
|
className: `dc:flex dc:items-center dc:gap-1.5 dc:overflow-hidden${d ? " dc:justify-end" : ""}`,
|
|
1491
1638
|
children: [
|
|
1492
|
-
/* @__PURE__ */
|
|
1639
|
+
/* @__PURE__ */ J("span", {
|
|
1493
1640
|
className: "dc:font-medium dc:truncate",
|
|
1494
1641
|
style: { color: "var(--dc-text)" },
|
|
1495
1642
|
children: c
|
|
1496
1643
|
}),
|
|
1497
|
-
/* @__PURE__ */
|
|
1644
|
+
/* @__PURE__ */ J("span", {
|
|
1498
1645
|
className: "dc:text-[10px] dc:opacity-50 dc:shrink-0",
|
|
1499
1646
|
children: l
|
|
1500
1647
|
}),
|
|
1501
|
-
s &&
|
|
1648
|
+
s && J(r === "asc" ? ci : li, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" })
|
|
1502
1649
|
]
|
|
1503
|
-
}), /* @__PURE__ */
|
|
1650
|
+
}), /* @__PURE__ */ J("div", {
|
|
1504
1651
|
onMouseDown: (t) => _(t, e),
|
|
1505
1652
|
className: "dc:absolute dc:top-0 dc:right-0 dc:w-1.5 dc:h-full dc:cursor-col-resize dc:hover:bg-dc-accent dc:opacity-0 dc:hover:opacity-100 dc:transition-opacity",
|
|
1506
1653
|
style: { zIndex: 30 }
|
|
@@ -1508,7 +1655,7 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1508
1655
|
}, e);
|
|
1509
1656
|
}) })
|
|
1510
1657
|
}),
|
|
1511
|
-
/* @__PURE__ */
|
|
1658
|
+
/* @__PURE__ */ J("tbody", { children: e.map((e, n) => /* @__PURE__ */ J("tr", {
|
|
1512
1659
|
className: "dc:border-b border-dc-border",
|
|
1513
1660
|
style: { transition: "background-color 0.1s" },
|
|
1514
1661
|
onMouseEnter: (e) => {
|
|
@@ -1518,30 +1665,30 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1518
1665
|
e.currentTarget.style.backgroundColor = "";
|
|
1519
1666
|
},
|
|
1520
1667
|
children: t.map((n, r) => {
|
|
1521
|
-
let i = r === t.length - 1, a =
|
|
1522
|
-
return /* @__PURE__ */
|
|
1668
|
+
let i = r === t.length - 1, a = di(n, o);
|
|
1669
|
+
return /* @__PURE__ */ J("td", {
|
|
1523
1670
|
className: `dc:px-3 dc:py-1.5 dc:text-sm dc:overflow-hidden dc:text-ellipsis dc:whitespace-nowrap${i ? "" : " dc:border-r border-dc-border"}${a ? " dc:text-right dc:tabular-nums" : ""}`,
|
|
1524
1671
|
style: { color: "var(--dc-text)" },
|
|
1525
|
-
children:
|
|
1672
|
+
children: fi(e[n])
|
|
1526
1673
|
}, n);
|
|
1527
1674
|
})
|
|
1528
1675
|
}, n)) })
|
|
1529
1676
|
]
|
|
1530
1677
|
})]
|
|
1531
|
-
}) : /* @__PURE__ */
|
|
1678
|
+
}) : /* @__PURE__ */ J("div", {
|
|
1532
1679
|
className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:h-full dc:gap-3",
|
|
1533
|
-
children: u ?? /* @__PURE__ */
|
|
1680
|
+
children: u ?? /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J(B, { size: "md" }), /* @__PURE__ */ J("div", {
|
|
1534
1681
|
className: "dc:text-sm text-dc-text-muted",
|
|
1535
1682
|
children: d("dataBrowser.loadingData")
|
|
1536
1683
|
})] })
|
|
1537
|
-
}) : /* @__PURE__ */
|
|
1684
|
+
}) : /* @__PURE__ */ J("div", {
|
|
1538
1685
|
className: "dc:flex dc:items-center dc:justify-center dc:h-full",
|
|
1539
|
-
children: /* @__PURE__ */
|
|
1686
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1540
1687
|
className: "dc:text-center text-dc-text-muted",
|
|
1541
|
-
children: [/* @__PURE__ */
|
|
1688
|
+
children: [/* @__PURE__ */ J("div", {
|
|
1542
1689
|
className: "dc:text-base dc:font-semibold dc:mb-1",
|
|
1543
1690
|
children: d("dataBrowser.selectCube")
|
|
1544
|
-
}), /* @__PURE__ */
|
|
1691
|
+
}), /* @__PURE__ */ J("div", {
|
|
1545
1692
|
className: "dc:text-sm text-dc-text-secondary",
|
|
1546
1693
|
children: d("dataBrowser.selectCubeHint")
|
|
1547
1694
|
})]
|
|
@@ -1550,41 +1697,41 @@ var Jr = 60, Yr = 150, Xr = U.memo(function({ data: e, columns: t, sortColumn: n
|
|
|
1550
1697
|
});
|
|
1551
1698
|
//#endregion
|
|
1552
1699
|
//#region src/client/components/DataBrowser/index.tsx
|
|
1553
|
-
function
|
|
1554
|
-
let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } =
|
|
1700
|
+
function gi({ className: e = "", maxHeight: t = "100vh", loadingComponent: n }) {
|
|
1701
|
+
let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } = Qr(), k = W(() => v ? v.cubes.map((e) => ({
|
|
1555
1702
|
name: e.name,
|
|
1556
1703
|
title: e.title || e.name
|
|
1557
|
-
})) : [], [v]), A =
|
|
1558
|
-
let { dimensions: t } =
|
|
1704
|
+
})) : [], [v]), A = H((e) => {
|
|
1705
|
+
let { dimensions: t } = Zr(e, v);
|
|
1559
1706
|
b(e, t);
|
|
1560
|
-
}, [v, b]), j =
|
|
1707
|
+
}, [v, b]), j = W(() => {
|
|
1561
1708
|
function e(t) {
|
|
1562
1709
|
return t.reduce((t, n) => "member" in n ? t + 1 : "type" in n && "filters" in n ? t + e(n.filters) : t, 0);
|
|
1563
1710
|
}
|
|
1564
1711
|
return e(l);
|
|
1565
|
-
}, [l]), M =
|
|
1712
|
+
}, [l]), M = W(() => {
|
|
1566
1713
|
if (!v) return null;
|
|
1567
1714
|
if (r) {
|
|
1568
1715
|
let e = v.cubes.find((e) => e.name === r);
|
|
1569
1716
|
return e ? { cubes: [e] } : null;
|
|
1570
1717
|
}
|
|
1571
1718
|
return v;
|
|
1572
|
-
}, [v, r]), N =
|
|
1719
|
+
}, [v, r]), N = H((e, t, n, r) => {
|
|
1573
1720
|
D(e.name);
|
|
1574
1721
|
}, [D]);
|
|
1575
|
-
return /* @__PURE__ */
|
|
1722
|
+
return /* @__PURE__ */ Y("div", {
|
|
1576
1723
|
className: `dc:flex dc:border border-dc-border dc:rounded-lg dc:overflow-hidden bg-dc-surface ${e}`,
|
|
1577
1724
|
style: { height: t },
|
|
1578
1725
|
children: [
|
|
1579
|
-
/* @__PURE__ */
|
|
1726
|
+
/* @__PURE__ */ J(ti, {
|
|
1580
1727
|
cubes: k,
|
|
1581
1728
|
selectedCube: r,
|
|
1582
1729
|
onSelectCube: A
|
|
1583
1730
|
}),
|
|
1584
|
-
/* @__PURE__ */
|
|
1731
|
+
/* @__PURE__ */ Y("div", {
|
|
1585
1732
|
className: "dc:flex dc:flex-col dc:flex-1 dc:min-w-0",
|
|
1586
1733
|
children: [
|
|
1587
|
-
r && /* @__PURE__ */
|
|
1734
|
+
r && /* @__PURE__ */ J(si, {
|
|
1588
1735
|
showFilterBar: u,
|
|
1589
1736
|
filterCount: j,
|
|
1590
1737
|
onToggleFilterBar: T,
|
|
@@ -1599,15 +1746,15 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1599
1746
|
isFetching: m,
|
|
1600
1747
|
onRefresh: () => O()
|
|
1601
1748
|
}),
|
|
1602
|
-
r && u && /* @__PURE__ */
|
|
1749
|
+
r && u && /* @__PURE__ */ J("div", {
|
|
1603
1750
|
className: "dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface",
|
|
1604
|
-
children: /* @__PURE__ */
|
|
1751
|
+
children: /* @__PURE__ */ J(en, {
|
|
1605
1752
|
filters: l,
|
|
1606
1753
|
schema: M,
|
|
1607
1754
|
onFiltersChange: w
|
|
1608
1755
|
})
|
|
1609
1756
|
}),
|
|
1610
|
-
/* @__PURE__ */
|
|
1757
|
+
/* @__PURE__ */ J(hi, {
|
|
1611
1758
|
data: f,
|
|
1612
1759
|
columns: i,
|
|
1613
1760
|
sortColumn: a,
|
|
@@ -1622,7 +1769,7 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1622
1769
|
})
|
|
1623
1770
|
]
|
|
1624
1771
|
}),
|
|
1625
|
-
d && M && /* @__PURE__ */
|
|
1772
|
+
d && M && /* @__PURE__ */ J(be, {
|
|
1626
1773
|
isOpen: d,
|
|
1627
1774
|
onClose: () => E(!1),
|
|
1628
1775
|
onSelect: N,
|
|
@@ -1633,11 +1780,11 @@ function Zr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
|
|
|
1633
1780
|
]
|
|
1634
1781
|
});
|
|
1635
1782
|
}
|
|
1636
|
-
function
|
|
1637
|
-
return /* @__PURE__ */
|
|
1783
|
+
function _i({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight: r, loadingComponent: i }) {
|
|
1784
|
+
return /* @__PURE__ */ J(Jr, {
|
|
1638
1785
|
defaultPageSize: n,
|
|
1639
1786
|
defaultCube: t,
|
|
1640
|
-
children: /* @__PURE__ */
|
|
1787
|
+
children: /* @__PURE__ */ J(gi, {
|
|
1641
1788
|
className: e,
|
|
1642
1789
|
maxHeight: r,
|
|
1643
1790
|
loadingComponent: i
|
|
@@ -1646,13 +1793,13 @@ function Qr({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight:
|
|
|
1646
1793
|
}
|
|
1647
1794
|
//#endregion
|
|
1648
1795
|
//#region src/client/components/DashboardThumbnailPlaceholder.tsx
|
|
1649
|
-
var
|
|
1650
|
-
function
|
|
1651
|
-
return /* @__PURE__ */
|
|
1796
|
+
var vi = D("segment");
|
|
1797
|
+
function yi({ className: e = "" }) {
|
|
1798
|
+
return /* @__PURE__ */ J("div", {
|
|
1652
1799
|
className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${e}`,
|
|
1653
|
-
children: /* @__PURE__ */
|
|
1800
|
+
children: /* @__PURE__ */ Y("div", {
|
|
1654
1801
|
className: "dc:text-center",
|
|
1655
|
-
children: [/* @__PURE__ */
|
|
1802
|
+
children: [/* @__PURE__ */ J(vi, { className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50" }), /* @__PURE__ */ J("span", {
|
|
1656
1803
|
className: "dc:text-xs text-dc-text-muted",
|
|
1657
1804
|
children: "No preview"
|
|
1658
1805
|
})]
|
|
@@ -1660,6 +1807,6 @@ function ei({ className: e = "" }) {
|
|
|
1660
1807
|
});
|
|
1661
1808
|
}
|
|
1662
1809
|
//#endregion
|
|
1663
|
-
export {
|
|
1810
|
+
export { Vr as AgenticNotebook, De as AnalysisBuilder, Ke as AnalyticsDashboard, Hr as AnalyticsPage, ve as AnalyticsPortlet, de as ChartErrorBoundary, Ve as ConfirmModal, c as CubeClient, E as CubeProvider, u as DEFAULT_ICONS, Ye as DashboardEditModal, Ae as DashboardFilterBar, Me as DashboardGrid, Le as DashboardGridSurface, Se as DashboardModals, ee as DashboardProvider, ce as DashboardStoreProvider, yi as DashboardThumbnailPlaceholder, I as DashboardToolbar, _i as DataBrowser, _e as DrillBreadcrumb, ye as DrillMenu, rn as ExecutionPlanPanel, $t as ExplainAIPanel, Kt as LazyChart, B as LoadingIndicator, Ue as Modal, Rn as NotebookStoreProvider, we as PortletAnalysisModal, ze as PortletContainer, o as ScrollContainerProvider, st as THEME_PRESETS, ot as applyTheme, Rt as buildFunnelConfigFromQueries, Ft as buildServerFunnelQuery, m as captureThumbnail, T as chartPluginRegistry, vn as compressAndEncode, v as createCubeClient, Yt as createDashboardLayout, ue as createDashboardStore, Ne as createDefaultConfig, Ce as createDefaultFlowConfig, He as createDefaultFunnelConfig, Je as createDefaultQueryConfig, Te as createDefaultRetentionConfig, Ie as createDefaultWorkspace, kt as createExplainQueryKey, St as createFlowQueryKey, ht as createFunnelQueryKey, In as createNotebookStore, dn as decodeAndDecompress, pn as detectAsymmetricDateRanges, sn as detectMeasureCollisions, s as exportPortletToXlsx, Jt as formatChartData, Nt as formatDuration, _t as generateQueryLabel, fn as generateShareUrl, wn as getAvailableBindingKeyDimensions, Ht as getAvailableChartTypes, Lt as getBindingKeyField, yn as getBindingKeyLabel, S as getChartTypeIcon, Ct as getCombinedFields, zt as getCubeNameFromQuery, y as getFieldTypeIcon, D as getIcon, A as getIconData, b as getIconRegistry, k as getIconsByCategory, g as getMeasureTypeIcon, xt as getQueryIndices, yt as getQueryLabels, at as getTheme, it as getThemeVariable, Wt as getUnavailableChartTypes, Tn as getValidationSummary, qt as highlightCodeBlocks, Vt as isChartTypeAvailable, nt as isDarkMode, C as isExportAvailable, Ze as isFlowConfig, Ee as isFunnelConfig, Pt as isFunnelData, Sn as isMinimumFunnelConfigValid, Oe as isMultiQuery, Qe as isMultiQueryConfig, vt as isMultiQueryData, On as isMultiQueryValid, We as isQueryConfig, Re as isRetentionConfig, M as isSankeyData, N as isServerFlowQuery, $e as isServerFunnelQuery, xn as isShareableSize, je as isSingleQuery, d as isThumbnailCaptureAvailable, ke as isValidAnalysisConfig, xe as isValidAnalysisWorkspace, Bt as isValidChartType, pt as mergeQueryResults, Tt as mergeResultsByKey, Et as mergeResultsConcat, Be as migrateConfig, qe as migrateLegacyPortlet, mn as parseShareUrl, Ut as preloadChart, Gt as preloadCharts, l as registerIcons, O as resetIcons, ct as resetTheme, te as selectAllActions, Kn as selectBlockActions, zn as selectBlocks, En as selectBreakdowns, on as selectChartConfig, Gn as selectChatActions, Wn as selectChatState, Qt as selectCurrentState, re as selectDebugData, oe as selectDebugDataActions, fe as selectEditModeActions, et as selectEditModeState, Zt as selectFilters, nn as selectFunnelState, Un as selectInputValue, Vn as selectIsStreaming, F as selectLayoutActions, he as selectLayoutState, Bn as selectMessages, _n as selectMetrics, ne as selectModalActions, me as selectModalState, Xt as selectMultiQueryState, ge as selectPortletDebugData, Hn as selectSessionId, R as selectThumbnailDirty, gn as selectUIState, _ as setIcon, ut as setTheme, rt as setThemeVariable, It as transformServerFunnelResult, Tr as useAgentChat, un as useAnalysisBuilder, tn as useAnalysisBuilderStore, j as useCubeApi, x as useCubeContext, w as useCubeFeatures, tt as useCubeFieldLabel, ft as useCubeLoadQuery, ft as useCubeQuery, dt as useCubeMeta, h as useCubeMetaQuery, le as useDashboard, L as useDashboardContext, ae as useDashboardStore, Ge as useDashboardStoreApi, ie as useDashboardStoreOptional, Qr as useDataBrowser, P as useDrillInteraction, Ot as useDryRunQueries, Dt as useDryRunQuery, Pe as useElementVisibility, Mt as useExplainAI, jt as useExplainQuery, wt as useFlowQuery, bt as useFunnelQuery, gt as useMultiCubeLoadQuery, At as useMultiDryRunQueries, X as useNotebookStore, a as useScrollContainer, se as useScrollDetection, jn as useTheme, hn as validateBindingKeyExists, cn as validateBindingKeyForSteps, bn as validateFunnelConfig, mt as validateMergeKey, ln as validateMergeKeys, Dn as validateMultiQueryConfig, Cn as validateStepQueries, an as validateTimeDimensionAlignment, p as warnIfExcelJsMissing, f as warnIfScreenshotLibMissing, lt as watchThemeChanges };
|
|
1664
1811
|
|
|
1665
1812
|
//# sourceMappingURL=index.js.map
|