drizzle-cube 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (796) hide show
  1. package/dist/adapters/ActivityGridChart.config-BtECymia.cjs +1 -0
  2. package/dist/adapters/ActivityGridChart.config-CTd5HYjI.js +2 -0
  3. package/dist/adapters/AreaChart.config-1B8iQnfn.js +2 -0
  4. package/dist/adapters/AreaChart.config-hnncyQL4.cjs +1 -0
  5. package/dist/adapters/BarChart.config-C-QCf1rL.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CFelK1qP.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-CD9WEPyF.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-DEbLA0BX.cjs +1 -0
  9. package/dist/adapters/BubbleChart.config-B_M4hzzV.js +2 -0
  10. package/dist/adapters/BubbleChart.config-dRZZlAke.cjs +1 -0
  11. package/dist/adapters/CandlestickChart.config-Dsil2Fop.cjs +1 -0
  12. package/dist/adapters/CandlestickChart.config-fuhyFvob.js +2 -0
  13. package/dist/adapters/DataTable.config-q2gqBi6t.cjs +1 -0
  14. package/dist/adapters/DataTable.config-wIQnHX5R.js +2 -0
  15. package/dist/adapters/FunnelChart.config-Dz710ssx.js +2 -0
  16. package/dist/adapters/FunnelChart.config-YNP9CeS-.cjs +1 -0
  17. package/dist/adapters/GaugeChart.config-BG9FcMCn.cjs +1 -0
  18. package/dist/adapters/GaugeChart.config-CgwniXkd.js +2 -0
  19. package/dist/adapters/HeatMapChart.config-1zSMXXoN.cjs +1 -0
  20. package/dist/adapters/HeatMapChart.config-YVEWx6s5.js +2 -0
  21. package/dist/adapters/KpiDelta.config-BWvYXuFp.cjs +1 -0
  22. package/dist/adapters/KpiDelta.config-C_dYM64q.js +2 -0
  23. package/dist/adapters/KpiNumber.config-CXg6toZG.js +2 -0
  24. package/dist/adapters/KpiNumber.config-CZmV-yU1.cjs +1 -0
  25. package/dist/adapters/KpiText.config-BY-SJvAF.js +2 -0
  26. package/dist/adapters/KpiText.config-GSIxy0CE.cjs +1 -0
  27. package/dist/adapters/LineChart.config-CJtF8SOu.js +2 -0
  28. package/dist/adapters/LineChart.config-d0y60gw9.cjs +1 -0
  29. package/dist/adapters/MarkdownChart.config-B6w0spya.cjs +1 -0
  30. package/dist/adapters/MarkdownChart.config-BuIQcWOn.js +2 -0
  31. package/dist/adapters/MeasureProfileChart.config-Bo2n5Ae5.cjs +1 -0
  32. package/dist/adapters/MeasureProfileChart.config-C5d34lsc.js +2 -0
  33. package/dist/adapters/PieChart.config-CDxfXCIt.cjs +1 -0
  34. package/dist/adapters/PieChart.config-CuZxQc5m.js +2 -0
  35. package/dist/adapters/RadarChart.config-DpdVWyh5.cjs +1 -0
  36. package/dist/adapters/RadarChart.config-KrxwaaGu.js +2 -0
  37. package/dist/adapters/RadialBarChart.config-DpRZd0FW.js +2 -0
  38. package/dist/adapters/RadialBarChart.config-faIY4jpE.cjs +1 -0
  39. package/dist/adapters/RetentionCombinedChart.config-CUnScqnS.cjs +1 -0
  40. package/dist/adapters/RetentionCombinedChart.config-Dd8FuawP.js +2 -0
  41. package/dist/adapters/RetentionHeatmap.config-CPd6GeoQ.js +2 -0
  42. package/dist/adapters/RetentionHeatmap.config-CPlHbLom.cjs +1 -0
  43. package/dist/adapters/SankeyChart.config-DbIUqi-H.cjs +1 -0
  44. package/dist/adapters/SankeyChart.config-kzAnW0C7.js +2 -0
  45. package/dist/adapters/ScatterChart.config-4Okvn27v.js +2 -0
  46. package/dist/adapters/ScatterChart.config-4f9nNw3e.cjs +1 -0
  47. package/dist/adapters/SunburstChart.config-BsUQkIM_.js +2 -0
  48. package/dist/adapters/SunburstChart.config-lvnYkWs7.cjs +1 -0
  49. package/dist/adapters/TreeMapChart.config-S0qsgAFW.js +2 -0
  50. package/dist/adapters/TreeMapChart.config-jbwKsTYt.cjs +1 -0
  51. package/dist/adapters/WaterfallChart.config-CDQ74-pS.cjs +1 -0
  52. package/dist/adapters/WaterfallChart.config-XdtH-O5g.js +2 -0
  53. package/dist/adapters/chartConfigHelpers-CcvqrIWF.js +72 -0
  54. package/dist/adapters/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  55. package/dist/adapters/{locale-ZLUUNUxr.cjs → compiler-ChGO4ZLU.cjs} +1 -1
  56. package/dist/adapters/{locale-DDvZDFVn.js → compiler-LKTN9PTt.js} +2 -21
  57. package/dist/adapters/core/cube-http-handler.d.ts +27 -0
  58. package/dist/adapters/core/http-port.d.ts +39 -0
  59. package/dist/adapters/core/index.cjs +1 -0
  60. package/dist/adapters/core/index.d.ts +11 -0
  61. package/dist/adapters/core/index.js +2 -0
  62. package/dist/adapters/core/mcp-handler.d.ts +13 -0
  63. package/dist/adapters/core/rest-handlers.d.ts +14 -0
  64. package/dist/adapters/core/security-context.d.ts +17 -0
  65. package/dist/adapters/core-Bbchr0ui.js +244 -0
  66. package/dist/adapters/core-F1pCQPde.cjs +1 -0
  67. package/dist/adapters/express/index.cjs +2 -2
  68. package/dist/adapters/express/index.js +93 -201
  69. package/dist/adapters/fastify/index.cjs +2 -2
  70. package/dist/adapters/fastify/index.js +79 -217
  71. package/dist/adapters/handler-DRZb2ip6.cjs +25 -0
  72. package/dist/adapters/{handler-CfgE0JSL.js → handler-u8FyzPBT.js} +1572 -1500
  73. package/dist/adapters/hono/index.cjs +2 -2
  74. package/dist/adapters/hono/index.js +69 -225
  75. package/dist/adapters/mcp-tools.cjs +1 -1
  76. package/dist/adapters/mcp-tools.js +1 -1
  77. package/dist/adapters/mcp-transport-Bw_zqky2.js +591 -0
  78. package/dist/adapters/mcp-transport-CNIPoe1i.cjs +40 -0
  79. package/dist/adapters/nextjs/index.cjs +1 -1
  80. package/dist/adapters/nextjs/index.d.ts +8 -9
  81. package/dist/adapters/nextjs/index.js +181 -288
  82. package/dist/adapters/nextjs/mcp-handler.d.ts +0 -28
  83. package/dist/adapters/{openai-D0musiYP.cjs → openai-B4kAJTSD.cjs} +3 -3
  84. package/dist/adapters/{openai-vXvLni8v.cjs → openai-Cdf2wWZA.cjs} +1 -1
  85. package/dist/adapters/{openai-B5jEiqiB.js → openai-CmMzrs1Y.js} +18 -2
  86. package/dist/adapters/{openai-cDlFSTk6.js → openai-DhzGY9R4.js} +1 -1
  87. package/dist/cjs/adapters/core/cube-http-handler.d.ts +27 -0
  88. package/dist/cjs/adapters/core/http-port.d.ts +39 -0
  89. package/dist/cjs/adapters/core/index.d.ts +11 -0
  90. package/dist/cjs/adapters/core/mcp-handler.d.ts +13 -0
  91. package/dist/cjs/adapters/core/rest-handlers.d.ts +14 -0
  92. package/dist/cjs/adapters/core/security-context.d.ts +17 -0
  93. package/dist/cjs/adapters/express/index.d.ts +114 -0
  94. package/dist/cjs/adapters/fastify/index.d.ts +113 -0
  95. package/dist/cjs/adapters/hono/agent-handler.d.ts +9 -0
  96. package/dist/cjs/adapters/hono/index.d.ts +120 -0
  97. package/dist/cjs/adapters/locale.d.ts +8 -0
  98. package/dist/cjs/adapters/mcp-tools-handlers.d.ts +18 -0
  99. package/dist/cjs/adapters/mcp-tools.d.ts +134 -0
  100. package/dist/cjs/adapters/mcp-transport.d.ts +158 -0
  101. package/dist/cjs/adapters/nextjs/index.d.ts +195 -0
  102. package/dist/cjs/adapters/nextjs/mcp-handler.d.ts +8 -0
  103. package/dist/cjs/adapters/types.d.ts +41 -0
  104. package/dist/cjs/adapters/utils.d.ts +354 -0
  105. package/dist/cjs/client/adapters/adapterRegistry.d.ts +44 -0
  106. package/dist/cjs/client/adapters/flowModeAdapter.d.ts +3 -0
  107. package/dist/cjs/client/adapters/funnelModeAdapter.d.ts +19 -0
  108. package/dist/cjs/client/adapters/index.d.ts +29 -0
  109. package/dist/cjs/client/adapters/modeAdapter.d.ts +117 -0
  110. package/dist/cjs/client/adapters/queryModeAdapter.d.ts +16 -0
  111. package/dist/cjs/client/adapters/retentionModeAdapter.d.ts +3 -0
  112. package/dist/cjs/client/charts/ChartLoader.d.ts +69 -0
  113. package/dist/cjs/client/charts/chartComponentRegistry.d.ts +38 -0
  114. package/dist/cjs/client/charts/chartConfigHelpers.d.ts +38 -0
  115. package/dist/cjs/client/charts/chartConfigRegistry.d.ts +19 -0
  116. package/dist/cjs/client/charts/chartConfigs.d.ts +142 -0
  117. package/dist/cjs/client/charts/chartPlugin.d.ts +73 -0
  118. package/dist/cjs/client/charts/chartRegistry.d.ts +73 -0
  119. package/dist/cjs/client/charts/lazyChartConfigRegistry.d.ts +100 -0
  120. package/dist/cjs/client/charts.d.ts +17 -0
  121. package/dist/cjs/client/client/BatchCoordinator.d.ts +38 -0
  122. package/dist/cjs/client/client/CubeClient.d.ts +32 -0
  123. package/dist/cjs/client/components/AIAssistant/constants.d.ts +11 -0
  124. package/dist/cjs/client/components/AIAssistant/index.d.ts +10 -0
  125. package/dist/cjs/client/components/AIAssistant/types.d.ts +49 -0
  126. package/dist/cjs/client/components/AIAssistant/utils.d.ts +17 -0
  127. package/dist/cjs/client/components/AgenticNotebook/AgentChatPanel.d.ts +27 -0
  128. package/dist/cjs/client/components/AgenticNotebook/ChatInput.d.ts +14 -0
  129. package/dist/cjs/client/components/AgenticNotebook/ChatMessage.d.ts +9 -0
  130. package/dist/cjs/client/components/AgenticNotebook/NotebookCanvas.d.ts +6 -0
  131. package/dist/cjs/client/components/AgenticNotebook/NotebookMarkdownBlock.d.ts +12 -0
  132. package/dist/cjs/client/components/AgenticNotebook/NotebookPortletBlock.d.ts +15 -0
  133. package/dist/cjs/client/components/AgenticNotebook/agentChatParts.d.ts +34 -0
  134. package/dist/cjs/client/components/AgenticNotebook/chatMessageParts.d.ts +39 -0
  135. package/dist/cjs/client/components/AgenticNotebook/index.d.ts +56 -0
  136. package/dist/cjs/client/components/AgenticNotebook/useAgentChatController.d.ts +25 -0
  137. package/dist/cjs/client/components/AgenticNotebook/useNotebookAutosave.d.ts +12 -0
  138. package/dist/cjs/client/components/AnalysisBuilder/AnalysisAIPanel.d.ts +25 -0
  139. package/dist/cjs/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +29 -0
  140. package/dist/cjs/client/components/AnalysisBuilder/AnalysisChartConfigPanel.d.ts +18 -0
  141. package/dist/cjs/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.d.ts +11 -0
  142. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterGroup.d.ts +20 -0
  143. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterItem.d.ts +14 -0
  144. package/dist/cjs/client/components/AnalysisBuilder/AnalysisFilterSection.d.ts +16 -0
  145. package/dist/cjs/client/components/AnalysisBuilder/AnalysisModeErrorBoundary.d.ts +27 -0
  146. package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanel.d.ts +12 -0
  147. package/dist/cjs/client/components/AnalysisBuilder/AnalysisQueryPanelParts.d.ts +64 -0
  148. package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsHeader.d.ts +67 -0
  149. package/dist/cjs/client/components/AnalysisBuilder/AnalysisResultsPanel.d.ts +14 -0
  150. package/dist/cjs/client/components/AnalysisBuilder/AnalysisTypeSelector.d.ts +17 -0
  151. package/dist/cjs/client/components/AnalysisBuilder/BreakdownComparisonToggle.d.ts +13 -0
  152. package/dist/cjs/client/components/AnalysisBuilder/BreakdownItemCard.d.ts +12 -0
  153. package/dist/cjs/client/components/AnalysisBuilder/BreakdownRow.d.ts +26 -0
  154. package/dist/cjs/client/components/AnalysisBuilder/BreakdownSection.d.ts +9 -0
  155. package/dist/cjs/client/components/AnalysisBuilder/DisplayOptionControl.d.ts +10 -0
  156. package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanel.d.ts +49 -0
  157. package/dist/cjs/client/components/AnalysisBuilder/ExecutionPlanPanelParts.d.ts +22 -0
  158. package/dist/cjs/client/components/AnalysisBuilder/ExplainAIPanel.d.ts +16 -0
  159. package/dist/cjs/client/components/AnalysisBuilder/FieldDetailPanel.d.ts +4 -0
  160. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchItem.d.ts +6 -0
  161. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchModal.d.ts +2 -0
  162. package/dist/cjs/client/components/AnalysisBuilder/FieldSearchResults.d.ts +16 -0
  163. package/dist/cjs/client/components/AnalysisBuilder/FilterConfigModal.d.ts +17 -0
  164. package/dist/cjs/client/components/AnalysisBuilder/FilterValueInput.d.ts +63 -0
  165. package/dist/cjs/client/components/AnalysisBuilder/FlowConfigPanel.d.ts +28 -0
  166. package/dist/cjs/client/components/AnalysisBuilder/FlowDepthControls.d.ts +10 -0
  167. package/dist/cjs/client/components/AnalysisBuilder/FlowModeContent.d.ts +57 -0
  168. package/dist/cjs/client/components/AnalysisBuilder/FlowVisualizationPicker.d.ts +7 -0
  169. package/dist/cjs/client/components/AnalysisBuilder/FunnelBindingKeySelector.d.ts +21 -0
  170. package/dist/cjs/client/components/AnalysisBuilder/FunnelConfigPanel.d.ts +24 -0
  171. package/dist/cjs/client/components/AnalysisBuilder/FunnelModeContent.d.ts +48 -0
  172. package/dist/cjs/client/components/AnalysisBuilder/FunnelStepCard.d.ts +25 -0
  173. package/dist/cjs/client/components/AnalysisBuilder/FunnelStepList.d.ts +26 -0
  174. package/dist/cjs/client/components/AnalysisBuilder/LegacyBooleanOptions.d.ts +8 -0
  175. package/dist/cjs/client/components/AnalysisBuilder/LimitSection.d.ts +14 -0
  176. package/dist/cjs/client/components/AnalysisBuilder/MetricItemCard.d.ts +11 -0
  177. package/dist/cjs/client/components/AnalysisBuilder/MetricRow.d.ts +23 -0
  178. package/dist/cjs/client/components/AnalysisBuilder/MetricsSection.d.ts +9 -0
  179. package/dist/cjs/client/components/AnalysisBuilder/RetentionConfigPanel.d.ts +36 -0
  180. package/dist/cjs/client/components/AnalysisBuilder/RetentionModeContent.d.ts +71 -0
  181. package/dist/cjs/client/components/AnalysisBuilder/SectionHeading.d.ts +12 -0
  182. package/dist/cjs/client/components/AnalysisBuilder/SortToggleButton.d.ts +13 -0
  183. package/dist/cjs/client/components/AnalysisBuilder/StringArrayInput.d.ts +17 -0
  184. package/dist/cjs/client/components/AnalysisBuilder/filterConfigModalUtils.d.ts +30 -0
  185. package/dist/cjs/client/components/AnalysisBuilder/hooks/useAnalysisBuilderImperativeHandle.d.ts +13 -0
  186. package/dist/cjs/client/components/AnalysisBuilder/hooks/useDragReorder.d.ts +25 -0
  187. package/dist/cjs/client/components/AnalysisBuilder/hooks/useFieldSearchKeyboard.d.ts +11 -0
  188. package/dist/cjs/client/components/AnalysisBuilder/index.d.ts +9 -0
  189. package/dist/cjs/client/components/AnalysisBuilder/types.d.ts +851 -0
  190. package/dist/cjs/client/components/AnalysisBuilder/utils/axisConfigUtils.d.ts +23 -0
  191. package/dist/cjs/client/components/AnalysisBuilder/utils/executionPlanMarkdown.d.ts +8 -0
  192. package/dist/cjs/client/components/AnalysisBuilder/utils/fieldUtils.d.ts +69 -0
  193. package/dist/cjs/client/components/AnalysisBuilder/utils/filterUtils.d.ts +19 -0
  194. package/dist/cjs/client/components/AnalysisBuilder/utils/idUtils.d.ts +11 -0
  195. package/dist/cjs/client/components/AnalysisBuilder/utils/index.d.ts +11 -0
  196. package/dist/cjs/client/components/AnalysisBuilder/utils/queryUtils.d.ts +11 -0
  197. package/dist/cjs/client/components/AnalysisBuilder/utils/recentFieldsUtils.d.ts +14 -0
  198. package/dist/cjs/client/components/AnalysisBuilder/utils/resultsPanelDerive.d.ts +68 -0
  199. package/dist/cjs/client/components/AnalysisBuilder/utils/shareStateUtils.d.ts +68 -0
  200. package/dist/cjs/client/components/AnalysisBuilder/utils/sortUtils.d.ts +7 -0
  201. package/dist/cjs/client/components/AnalysisBuilder/utils/storageUtils.d.ts +44 -0
  202. package/dist/cjs/client/components/AnalysisBuilderLazy.d.ts +4 -0
  203. package/dist/cjs/client/components/AnalyticsDashboard.d.ts +2 -0
  204. package/dist/cjs/client/components/AnalyticsPage.d.ts +1 -0
  205. package/dist/cjs/client/components/AnalyticsPortlet.d.ts +10 -0
  206. package/dist/cjs/client/components/ChartErrorBoundary.d.ts +21 -0
  207. package/dist/cjs/client/components/ChartTypeSelector.d.ts +15 -0
  208. package/dist/cjs/client/components/ColorPaletteSelector.d.ts +11 -0
  209. package/dist/cjs/client/components/ConfirmModal.d.ts +30 -0
  210. package/dist/cjs/client/components/DashboardEditModal.d.ts +15 -0
  211. package/dist/cjs/client/components/DashboardFilterPanel.d.ts +15 -0
  212. package/dist/cjs/client/components/DashboardFilters/CompactFilterBar.d.ts +13 -0
  213. package/dist/cjs/client/components/DashboardFilters/CompactFilterBarParts.d.ts +26 -0
  214. package/dist/cjs/client/components/DashboardFilters/CustomDateDropdown.d.ts +10 -0
  215. package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModal.d.ts +20 -0
  216. package/dist/cjs/client/components/DashboardFilters/DashboardFilterConfigModalParts.d.ts +27 -0
  217. package/dist/cjs/client/components/DashboardFilters/DashboardFilterItem.d.ts +14 -0
  218. package/dist/cjs/client/components/DashboardFilters/DashboardFilterValueInput.d.ts +39 -0
  219. package/dist/cjs/client/components/DashboardFilters/DatePresetChips.d.ts +8 -0
  220. package/dist/cjs/client/components/DashboardFilters/EditModeFilterList.d.ts +13 -0
  221. package/dist/cjs/client/components/DashboardFilters/FilterChip.d.ts +12 -0
  222. package/dist/cjs/client/components/DashboardFilters/FilterEditModal.d.ts +15 -0
  223. package/dist/cjs/client/components/DashboardFilters/FilterValuePopover.d.ts +11 -0
  224. package/dist/cjs/client/components/DashboardFilters/ReadOnlyFilterList.d.ts +13 -0
  225. package/dist/cjs/client/components/DashboardFilters/XTDDropdown.d.ts +10 -0
  226. package/dist/cjs/client/components/DashboardFilters/dashboardFilterConfigModalUtils.d.ts +21 -0
  227. package/dist/cjs/client/components/DashboardFilters/useCompactFilterBar.d.ts +19 -0
  228. package/dist/cjs/client/components/DashboardFilters/useDashboardFilterConfigModal.d.ts +69 -0
  229. package/dist/cjs/client/components/DashboardFilters/useDateRangeState.d.ts +19 -0
  230. package/dist/cjs/client/components/DashboardFilters/useFilterDropdowns.d.ts +21 -0
  231. package/dist/cjs/client/components/DashboardFilters/useFilterValueFetch.d.ts +23 -0
  232. package/dist/cjs/client/components/DashboardGrid.d.ts +22 -0
  233. package/dist/cjs/client/components/DashboardPortletCard.d.ts +4 -0
  234. package/dist/cjs/client/components/DashboardThumbnailPlaceholder.d.ts +13 -0
  235. package/dist/cjs/client/components/DataBrowser/DataBrowserSidebar.d.ts +16 -0
  236. package/dist/cjs/client/components/DataBrowser/DataBrowserTable.d.ts +16 -0
  237. package/dist/cjs/client/components/DataBrowser/DataBrowserToolbar.d.ts +22 -0
  238. package/dist/cjs/client/components/DataBrowser/index.d.ts +28 -0
  239. package/dist/cjs/client/components/DataHistogram.d.ts +27 -0
  240. package/dist/cjs/client/components/DebugModal.d.ts +17 -0
  241. package/dist/cjs/client/components/DrillBreadcrumb.d.ts +7 -0
  242. package/dist/cjs/client/components/DrillMenu.d.ts +8 -0
  243. package/dist/cjs/client/components/FloatingEditToolbar.d.ts +30 -0
  244. package/dist/cjs/client/components/LoadingIndicator.d.ts +16 -0
  245. package/dist/cjs/client/components/MobileStackedLayout.d.ts +14 -0
  246. package/dist/cjs/client/components/Modal.d.ts +16 -0
  247. package/dist/cjs/client/components/PortletAnalysisModal.d.ts +27 -0
  248. package/dist/cjs/client/components/PortletContainer.d.ts +10 -0
  249. package/dist/cjs/client/components/PortletFilterConfigModal.d.ts +13 -0
  250. package/dist/cjs/client/components/RowManagedLayout.d.ts +19 -0
  251. package/dist/cjs/client/components/ScaledGridWrapper.d.ts +12 -0
  252. package/dist/cjs/client/components/SchemaVisualization/CubeNode.d.ts +25 -0
  253. package/dist/cjs/client/components/SchemaVisualization/FieldDetailPanel.d.ts +15 -0
  254. package/dist/cjs/client/components/SchemaVisualization/RelationshipEdge.d.ts +13 -0
  255. package/dist/cjs/client/components/SchemaVisualization/SchemaVisualizationLazy.d.ts +3 -0
  256. package/dist/cjs/client/components/SchemaVisualization/index.d.ts +10 -0
  257. package/dist/cjs/client/components/SchemaVisualization/useERDLayout.d.ts +39 -0
  258. package/dist/cjs/client/components/SchemaVisualization/xyflowContext.d.ts +11 -0
  259. package/dist/cjs/client/components/TextPortletModal.d.ts +12 -0
  260. package/dist/cjs/client/components/analyticsPortlet/PortletChart.d.ts +31 -0
  261. package/dist/cjs/client/components/analyticsPortlet/PortletChartView.d.ts +35 -0
  262. package/dist/cjs/client/components/analyticsPortlet/PortletStates.d.ts +65 -0
  263. package/dist/cjs/client/components/analyticsPortlet/parsePortletQuery.d.ts +22 -0
  264. package/dist/cjs/client/components/analyticsPortlet/portletRenderState.d.ts +31 -0
  265. package/dist/cjs/client/components/analyticsPortlet/usePortletDebugData.d.ts +37 -0
  266. package/dist/cjs/client/components/analyticsPortlet/usePortletDrillState.d.ts +17 -0
  267. package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +37 -0
  268. package/dist/cjs/client/components/charts/ActivityGridChart.config.d.ts +10 -0
  269. package/dist/cjs/client/components/charts/ActivityGridChart.d.ts +4 -0
  270. package/dist/cjs/client/components/charts/ActivityGridChart.helpers.d.ts +33 -0
  271. package/dist/cjs/client/components/charts/ActivityGridChart.render.d.ts +31 -0
  272. package/dist/cjs/client/components/charts/AngledXAxisTick.d.ts +19 -0
  273. package/dist/cjs/client/components/charts/AreaChart.config.d.ts +10 -0
  274. package/dist/cjs/client/components/charts/AreaChart.d.ts +4 -0
  275. package/dist/cjs/client/components/charts/AxisFormatControls.d.ts +37 -0
  276. package/dist/cjs/client/components/charts/BarChart.config.d.ts +10 -0
  277. package/dist/cjs/client/components/charts/BarChart.d.ts +4 -0
  278. package/dist/cjs/client/components/charts/BarChart.helpers.d.ts +23 -0
  279. package/dist/cjs/client/components/charts/BarSeries.d.ts +29 -0
  280. package/dist/cjs/client/components/charts/BoxPlotChart.config.d.ts +10 -0
  281. package/dist/cjs/client/components/charts/BoxPlotChart.d.ts +4 -0
  282. package/dist/cjs/client/components/charts/BubbleChart.config.d.ts +10 -0
  283. package/dist/cjs/client/components/charts/BubbleChart.d.ts +4 -0
  284. package/dist/cjs/client/components/charts/BubbleChart.helpers.d.ts +43 -0
  285. package/dist/cjs/client/components/charts/BubbleChart.render.d.ts +21 -0
  286. package/dist/cjs/client/components/charts/CandlestickChart.config.d.ts +10 -0
  287. package/dist/cjs/client/components/charts/CandlestickChart.d.ts +4 -0
  288. package/dist/cjs/client/components/charts/ChartContainer.d.ts +7 -0
  289. package/dist/cjs/client/components/charts/ChartLegend.d.ts +7 -0
  290. package/dist/cjs/client/components/charts/ChartStates.d.ts +38 -0
  291. package/dist/cjs/client/components/charts/ChartTooltip.d.ts +7 -0
  292. package/dist/cjs/client/components/charts/DataTable.config.d.ts +10 -0
  293. package/dist/cjs/client/components/charts/DataTable.d.ts +4 -0
  294. package/dist/cjs/client/components/charts/FunnelChart.config.d.ts +14 -0
  295. package/dist/cjs/client/components/charts/FunnelChart.d.ts +11 -0
  296. package/dist/cjs/client/components/charts/FunnelChart.helpers.d.ts +25 -0
  297. package/dist/cjs/client/components/charts/FunnelViews.d.ts +16 -0
  298. package/dist/cjs/client/components/charts/GaugeChart.config.d.ts +10 -0
  299. package/dist/cjs/client/components/charts/GaugeChart.d.ts +4 -0
  300. package/dist/cjs/client/components/charts/HeatMapCanvas.d.ts +25 -0
  301. package/dist/cjs/client/components/charts/HeatMapChart.config.d.ts +13 -0
  302. package/dist/cjs/client/components/charts/HeatMapChart.d.ts +10 -0
  303. package/dist/cjs/client/components/charts/HeatMapChart.helpers.d.ts +64 -0
  304. package/dist/cjs/client/components/charts/KpiDelta.config.d.ts +10 -0
  305. package/dist/cjs/client/components/charts/KpiDelta.d.ts +4 -0
  306. package/dist/cjs/client/components/charts/KpiDelta.helpers.d.ts +20 -0
  307. package/dist/cjs/client/components/charts/KpiNumber.config.d.ts +10 -0
  308. package/dist/cjs/client/components/charts/KpiNumber.d.ts +4 -0
  309. package/dist/cjs/client/components/charts/KpiNumber.helpers.d.ts +30 -0
  310. package/dist/cjs/client/components/charts/KpiStates.d.ts +19 -0
  311. package/dist/cjs/client/components/charts/KpiText.config.d.ts +10 -0
  312. package/dist/cjs/client/components/charts/KpiText.d.ts +4 -0
  313. package/dist/cjs/client/components/charts/LineChart.config.d.ts +10 -0
  314. package/dist/cjs/client/components/charts/LineChart.d.ts +4 -0
  315. package/dist/cjs/client/components/charts/MarkdownChart.config.d.ts +10 -0
  316. package/dist/cjs/client/components/charts/MarkdownChart.d.ts +4 -0
  317. package/dist/cjs/client/components/charts/MeasureProfileChart.config.d.ts +10 -0
  318. package/dist/cjs/client/components/charts/MeasureProfileChart.d.ts +4 -0
  319. package/dist/cjs/client/components/charts/MissingDependencyFallback.d.ts +12 -0
  320. package/dist/cjs/client/components/charts/PieChart.config.d.ts +10 -0
  321. package/dist/cjs/client/components/charts/PieChart.d.ts +4 -0
  322. package/dist/cjs/client/components/charts/RadarChart.config.d.ts +10 -0
  323. package/dist/cjs/client/components/charts/RadarChart.d.ts +4 -0
  324. package/dist/cjs/client/components/charts/RadialBarChart.config.d.ts +10 -0
  325. package/dist/cjs/client/components/charts/RadialBarChart.d.ts +4 -0
  326. package/dist/cjs/client/components/charts/RetentionCombinedChart.config.d.ts +2 -0
  327. package/dist/cjs/client/components/charts/RetentionCombinedChart.d.ts +14 -0
  328. package/dist/cjs/client/components/charts/RetentionHeatmap.config.d.ts +2 -0
  329. package/dist/cjs/client/components/charts/RetentionHeatmap.d.ts +7 -0
  330. package/dist/cjs/client/components/charts/SankeyChart.config.d.ts +14 -0
  331. package/dist/cjs/client/components/charts/SankeyChart.d.ts +10 -0
  332. package/dist/cjs/client/components/charts/ScatterChart.config.d.ts +10 -0
  333. package/dist/cjs/client/components/charts/ScatterChart.d.ts +4 -0
  334. package/dist/cjs/client/components/charts/ScatterChart.helpers.d.ts +43 -0
  335. package/dist/cjs/client/components/charts/ScatterSeries.d.ts +17 -0
  336. package/dist/cjs/client/components/charts/ScatterTooltip.d.ts +21 -0
  337. package/dist/cjs/client/components/charts/SunburstChart.config.d.ts +14 -0
  338. package/dist/cjs/client/components/charts/SunburstChart.d.ts +10 -0
  339. package/dist/cjs/client/components/charts/TreeMapChart.config.d.ts +10 -0
  340. package/dist/cjs/client/components/charts/TreeMapChart.d.ts +4 -0
  341. package/dist/cjs/client/components/charts/TreeMapChart.helpers.d.ts +37 -0
  342. package/dist/cjs/client/components/charts/TreeMapContent.d.ts +24 -0
  343. package/dist/cjs/client/components/charts/TreeMapLegend.d.ts +13 -0
  344. package/dist/cjs/client/components/charts/WaterfallChart.config.d.ts +10 -0
  345. package/dist/cjs/client/components/charts/WaterfallChart.d.ts +4 -0
  346. package/dist/cjs/client/components/charts/cartesianChartHelpers.d.ts +126 -0
  347. package/dist/cjs/client/components/charts/chartAxisResolution.d.ts +32 -0
  348. package/dist/cjs/client/components/charts/chartScaffolding.d.ts +77 -0
  349. package/dist/cjs/client/components/charts/gaugeChartHelpers.d.ts +36 -0
  350. package/dist/cjs/client/components/charts/index.d.ts +25 -0
  351. package/dist/cjs/client/components/charts/kpiTextHelpers.d.ts +46 -0
  352. package/dist/cjs/client/components/charts/radarChartHelpers.d.ts +14 -0
  353. package/dist/cjs/client/components/charts/radialBarChartHelpers.d.ts +22 -0
  354. package/dist/cjs/client/components/charts/useChartDimensions.d.ts +20 -0
  355. package/dist/cjs/client/components/charts/useKpiDimensions.d.ts +30 -0
  356. package/dist/cjs/client/components/dashboard/DashboardContext.d.ts +113 -0
  357. package/dist/cjs/client/components/dashboard/DashboardCoordinator.d.ts +2 -0
  358. package/dist/cjs/client/components/dashboard/DashboardEditBar.d.ts +5 -0
  359. package/dist/cjs/client/components/dashboard/DashboardFilterBar.d.ts +8 -0
  360. package/dist/cjs/client/components/dashboard/DashboardGridSurface.d.ts +8 -0
  361. package/dist/cjs/client/components/dashboard/DashboardModals.d.ts +8 -0
  362. package/dist/cjs/client/components/dashboard/DashboardProvider.d.ts +2 -0
  363. package/dist/cjs/client/components/dashboard/DashboardToolbar.d.ts +11 -0
  364. package/dist/cjs/client/components/dashboard/LayoutModeToggle.d.ts +10 -0
  365. package/dist/cjs/client/components/dashboard/dashboardGridUtils.d.ts +17 -0
  366. package/dist/cjs/client/components/dashboard/index.d.ts +13 -0
  367. package/dist/cjs/client/components/dashboardPortletCard/FilterFieldChip.d.ts +12 -0
  368. package/dist/cjs/client/components/dashboardPortletCard/PortletCardHeader.d.ts +43 -0
  369. package/dist/cjs/client/components/dashboardPortletCard/cardStyles.d.ts +33 -0
  370. package/dist/cjs/client/components/dashboardPortletCard/filterField.d.ts +12 -0
  371. package/dist/cjs/client/components/dashboardPortletCard/propsEqual.d.ts +55 -0
  372. package/dist/cjs/client/components/dashboardPortletCard/usePortletCardActions.d.ts +16 -0
  373. package/dist/cjs/client/components/portletAnalysisModal/saveValidation.d.ts +8 -0
  374. package/dist/cjs/client/components/shared/DateRangeFilter.d.ts +4 -0
  375. package/dist/cjs/client/components/shared/DateRangeSelector.d.ts +13 -0
  376. package/dist/cjs/client/components/shared/FilterBuilder.d.ts +4 -0
  377. package/dist/cjs/client/components/shared/FilterGroup.d.ts +4 -0
  378. package/dist/cjs/client/components/shared/FilterItem.d.ts +4 -0
  379. package/dist/cjs/client/components/shared/FilterValueSelector.d.ts +4 -0
  380. package/dist/cjs/client/components/shared/dateRangeUtils.d.ts +40 -0
  381. package/dist/cjs/client/components/shared/filterDisplayUtils.d.ts +10 -0
  382. package/dist/cjs/client/components/shared/filterItem/FilterDateRangeSelector.d.ts +17 -0
  383. package/dist/cjs/client/components/shared/filterItem/FilterFieldDropdown.d.ts +16 -0
  384. package/dist/cjs/client/components/shared/filterItem/dateRangeSync.d.ts +14 -0
  385. package/dist/cjs/client/components/shared/filterItem/fieldVisuals.d.ts +5 -0
  386. package/dist/cjs/client/components/shared/filterValueSelector/FilterValueInputs.d.ts +55 -0
  387. package/dist/cjs/client/components/shared/filterValueSelector/useFilterValueSelectorState.d.ts +25 -0
  388. package/dist/cjs/client/components/shared/queryFieldUtils.d.ts +21 -0
  389. package/dist/cjs/client/components/shared/types.d.ts +60 -0
  390. package/dist/cjs/client/components/shared/utils.d.ts +71 -0
  391. package/dist/cjs/client/components.d.ts +17 -0
  392. package/dist/cjs/client/hooks/agentChatStream.d.ts +39 -0
  393. package/dist/cjs/client/hooks/analysisQueryExecutionModes.d.ts +133 -0
  394. package/dist/cjs/client/hooks/dashboard/layoutUtils.d.ts +7 -0
  395. package/dist/cjs/client/hooks/dashboard/useDashboardController.d.ts +53 -0
  396. package/dist/cjs/client/hooks/dashboard/useGridLayoutEngine.d.ts +10 -0
  397. package/dist/cjs/client/hooks/dashboard/useRowLayoutEngine.d.ts +18 -0
  398. package/dist/cjs/client/hooks/drillNavigation.d.ts +25 -0
  399. package/dist/cjs/client/hooks/queries/index.d.ts +20 -0
  400. package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +85 -0
  401. package/dist/cjs/client/hooks/queries/useCubeMetaQuery.d.ts +51 -0
  402. package/dist/cjs/client/hooks/queries/useDryRunQuery.d.ts +153 -0
  403. package/dist/cjs/client/hooks/queries/useExplainAI.d.ts +62 -0
  404. package/dist/cjs/client/hooks/queries/useExplainQuery.d.ts +62 -0
  405. package/dist/cjs/client/hooks/queries/useFlowQuery.d.ts +72 -0
  406. package/dist/cjs/client/hooks/queries/useFunnelQuery.d.ts +20 -0
  407. package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +70 -0
  408. package/dist/cjs/client/hooks/queries/useRetentionQuery.d.ts +67 -0
  409. package/dist/cjs/client/hooks/useAgentChat.d.ts +60 -0
  410. package/dist/cjs/client/hooks/useAnalysisBuilderHook.d.ts +245 -0
  411. package/dist/cjs/client/hooks/useAnalysisEffects.d.ts +33 -0
  412. package/dist/{client/hooks/useAnalysisQueryExecution.d.ts → cjs/client/hooks/useAnalysisQuery.d.ts} +3 -3
  413. package/dist/cjs/client/hooks/useAnalysisState.d.ts +165 -0
  414. package/dist/cjs/client/hooks/useCubeFieldLabel.d.ts +16 -0
  415. package/dist/cjs/client/hooks/useDashboardHook.d.ts +123 -0
  416. package/dist/cjs/client/hooks/useDataBrowser.d.ts +67 -0
  417. package/dist/cjs/client/hooks/useDebounce.d.ts +12 -0
  418. package/dist/cjs/client/hooks/useDebounceQuery.d.ts +48 -0
  419. package/dist/cjs/client/hooks/useDirtyStateTracking.d.ts +37 -0
  420. package/dist/cjs/client/hooks/useDragAutoScroll.d.ts +18 -0
  421. package/dist/cjs/client/hooks/useDrillInteraction.d.ts +9 -0
  422. package/dist/cjs/client/hooks/useElementVisibility.d.ts +30 -0
  423. package/dist/cjs/client/hooks/useFilterValues.d.ts +19 -0
  424. package/dist/cjs/client/hooks/useNotebookLayout.d.ts +8 -0
  425. package/dist/cjs/client/hooks/useResponsiveDashboard.d.ts +16 -0
  426. package/dist/cjs/client/hooks/useScrollDetection.d.ts +29 -0
  427. package/dist/cjs/client/hooks/useTheme.d.ts +11 -0
  428. package/dist/cjs/client/hooks/useTranslation.d.ts +21 -0
  429. package/dist/cjs/client/hooks.d.ts +17 -0
  430. package/dist/cjs/client/icons/customIcons.d.ts +22 -0
  431. package/dist/cjs/client/icons/defaultIcons.d.ts +5 -0
  432. package/dist/cjs/client/icons/index.d.ts +22 -0
  433. package/dist/cjs/client/icons/registry.d.ts +58 -0
  434. package/dist/cjs/client/icons/types.d.ts +134 -0
  435. package/dist/cjs/client/icons.d.ts +2 -0
  436. package/dist/cjs/client/index.d.ts +76 -0
  437. package/dist/cjs/client/providers/CubeApiProvider.d.ts +24 -0
  438. package/dist/cjs/client/providers/CubeFeaturesProvider.d.ts +19 -0
  439. package/dist/cjs/client/providers/CubeMetaContext.d.ts +11 -0
  440. package/dist/cjs/client/providers/CubeMetaProvider.d.ts +6 -0
  441. package/dist/cjs/client/providers/CubeProvider.d.ts +70 -0
  442. package/dist/cjs/client/providers/I18nProvider.d.ts +18 -0
  443. package/dist/cjs/client/providers/ScrollContainerContext.d.ts +19 -0
  444. package/dist/cjs/client/providers.d.ts +10 -0
  445. package/dist/cjs/client/schema.d.ts +13 -0
  446. package/dist/cjs/client/shared/chartConfigBuilders.d.ts +18 -0
  447. package/dist/cjs/client/shared/chartDefaults.d.ts +59 -0
  448. package/dist/cjs/client/shared/components/CodeBlock.d.ts +13 -0
  449. package/dist/cjs/client/shared/components/QueryAnalysisPanel.d.ts +7 -0
  450. package/dist/cjs/client/shared/components/QueryAnalysisPanel.sections.d.ts +41 -0
  451. package/dist/cjs/client/shared/index.d.ts +11 -0
  452. package/dist/cjs/client/shared/queryKey.d.ts +1 -0
  453. package/dist/cjs/client/shared/queryTransforms.d.ts +20 -0
  454. package/dist/cjs/client/shared/types.d.ts +184 -0
  455. package/dist/cjs/client/shared/utils.d.ts +104 -0
  456. package/dist/cjs/client/stores/analysisBuilderStore.d.ts +578 -0
  457. package/dist/cjs/client/stores/dashboardStore.d.ts +292 -0
  458. package/dist/cjs/client/stores/dataBrowserStore.d.ts +34 -0
  459. package/dist/cjs/client/stores/index.d.ts +13 -0
  460. package/dist/cjs/client/stores/notebookStore.d.ts +157 -0
  461. package/dist/cjs/client/stores/optionsToAnalysisConfig.d.ts +17 -0
  462. package/dist/cjs/client/stores/slices/coreSlice.d.ts +96 -0
  463. package/dist/cjs/client/stores/slices/flowSlice.d.ts +69 -0
  464. package/dist/cjs/client/stores/slices/funnelSlice.d.ts +61 -0
  465. package/dist/cjs/client/stores/slices/index.d.ts +13 -0
  466. package/dist/cjs/client/stores/slices/querySlice.d.ts +55 -0
  467. package/dist/cjs/client/stores/slices/retentionSlice.d.ts +66 -0
  468. package/dist/cjs/client/stores/slices/uiSlice.d.ts +52 -0
  469. package/dist/cjs/client/theme/index.d.ts +135 -0
  470. package/dist/cjs/client/types/analysisConfig.d.ts +185 -0
  471. package/dist/cjs/client/types/drill.d.ts +240 -0
  472. package/dist/cjs/client/types/flow.d.ts +191 -0
  473. package/dist/cjs/client/types/funnel.d.ts +288 -0
  474. package/dist/cjs/client/types/retention.d.ts +301 -0
  475. package/dist/cjs/client/types.d.ts +600 -0
  476. package/dist/cjs/client/utils/axisValueFormatting.d.ts +32 -0
  477. package/dist/cjs/client/utils/chartConstants.d.ts +16 -0
  478. package/dist/cjs/client/utils/chartUtils.d.ts +35 -0
  479. package/dist/cjs/client/utils/colorPalettes.d.ts +35 -0
  480. package/dist/cjs/client/utils/comparisonUtils.d.ts +96 -0
  481. package/dist/cjs/client/utils/configMigration.d.ts +85 -0
  482. package/dist/cjs/client/utils/drillQueryBuilder.d.ts +41 -0
  483. package/dist/cjs/client/utils/exportXlsx.d.ts +20 -0
  484. package/dist/cjs/client/utils/filterUtils.d.ts +113 -0
  485. package/dist/cjs/client/utils/funnelExecution.d.ts +211 -0
  486. package/dist/cjs/client/utils/funnelValidation.d.ts +46 -0
  487. package/dist/cjs/client/utils/index.d.ts +94 -0
  488. package/dist/cjs/client/utils/joinReachability.d.ts +27 -0
  489. package/dist/cjs/client/utils/measureIcons.d.ts +11 -0
  490. package/dist/cjs/client/utils/multiQueryUtils.d.ts +86 -0
  491. package/dist/cjs/client/utils/multiQueryValidation.d.ts +69 -0
  492. package/dist/cjs/client/utils/periodUtils.d.ts +40 -0
  493. package/dist/cjs/client/utils/pivotUtils.d.ts +87 -0
  494. package/dist/cjs/client/utils/shareUtils.d.ts +61 -0
  495. package/dist/cjs/client/utils/syntaxHighlighting.d.ts +36 -0
  496. package/dist/cjs/client/utils/targetUtils.d.ts +36 -0
  497. package/dist/cjs/client/utils/thumbnail.d.ts +36 -0
  498. package/dist/cjs/client/utils/timeValueFormatting.d.ts +32 -0
  499. package/dist/cjs/client/utils.d.ts +8 -0
  500. package/dist/cjs/package.json +3 -0
  501. package/dist/cjs/server/adapters/base-adapter.d.ts +332 -0
  502. package/dist/cjs/server/adapters/databend-adapter.d.ts +63 -0
  503. package/dist/cjs/server/adapters/duckdb-adapter.d.ts +68 -0
  504. package/dist/cjs/server/adapters/mysql-adapter.d.ts +65 -0
  505. package/dist/cjs/server/adapters/postgres-adapter.d.ts +55 -0
  506. package/dist/cjs/server/adapters/singlestore-adapter.d.ts +4 -0
  507. package/dist/cjs/server/adapters/snowflake-adapter.d.ts +53 -0
  508. package/dist/cjs/server/adapters/sqlite-adapter.d.ts +120 -0
  509. package/dist/cjs/server/adapters/window-function-builder.d.ts +11 -0
  510. package/dist/cjs/server/agent/chart-validation.d.ts +22 -0
  511. package/dist/cjs/server/agent/handler-steps.d.ts +37 -0
  512. package/dist/cjs/server/agent/handler.d.ts +25 -0
  513. package/dist/cjs/server/agent/index.d.ts +11 -0
  514. package/dist/cjs/server/agent/providers/anthropic.d.ts +24 -0
  515. package/dist/cjs/server/agent/providers/factory.d.ts +12 -0
  516. package/dist/cjs/server/agent/providers/google.d.ts +23 -0
  517. package/dist/cjs/server/agent/providers/index.d.ts +6 -0
  518. package/dist/cjs/server/agent/providers/openai.d.ts +26 -0
  519. package/dist/cjs/server/agent/providers/types.d.ts +95 -0
  520. package/dist/cjs/server/agent/system-prompt.d.ts +5 -0
  521. package/dist/cjs/server/agent/tools.d.ts +28 -0
  522. package/dist/cjs/server/agent/types.d.ts +192 -0
  523. package/dist/cjs/server/ai/discovery-helpers.d.ts +29 -0
  524. package/dist/cjs/server/ai/discovery.d.ts +66 -0
  525. package/dist/cjs/server/ai/index.d.ts +10 -0
  526. package/dist/cjs/server/ai/mcp-prompts.d.ts +83 -0
  527. package/dist/cjs/server/ai/query-schema.d.ts +258 -0
  528. package/dist/cjs/server/ai/schemas.d.ts +63 -0
  529. package/dist/cjs/server/ai/suggestion-helpers.d.ts +33 -0
  530. package/dist/cjs/server/ai/suggestion.d.ts +16 -0
  531. package/dist/cjs/server/ai/validation-helpers.d.ts +21 -0
  532. package/dist/cjs/server/ai/validation.d.ts +31 -0
  533. package/dist/cjs/server/builders/analysis-utils.d.ts +106 -0
  534. package/dist/cjs/server/builders/comparison-query-builder.d.ts +70 -0
  535. package/dist/cjs/server/builders/cte-builder.d.ts +108 -0
  536. package/dist/cjs/server/builders/date-time-builder.d.ts +34 -0
  537. package/dist/cjs/server/builders/date-time-helpers.d.ts +34 -0
  538. package/dist/cjs/server/builders/filter-builder.d.ts +25 -0
  539. package/dist/cjs/server/builders/filter-operators.d.ts +23 -0
  540. package/dist/cjs/server/builders/flow-query-builder.d.ts +136 -0
  541. package/dist/cjs/server/builders/funnel-query-builder.d.ts +145 -0
  542. package/dist/cjs/server/builders/group-by-builder.d.ts +38 -0
  543. package/dist/cjs/server/builders/index.d.ts +13 -0
  544. package/dist/cjs/server/builders/measure-builder.d.ts +185 -0
  545. package/dist/cjs/server/builders/retention-query-builder.d.ts +98 -0
  546. package/dist/cjs/server/cache-providers/index.d.ts +5 -0
  547. package/dist/cjs/server/cache-providers/memory.d.ts +105 -0
  548. package/dist/cjs/server/cache-utils.d.ts +85 -0
  549. package/dist/cjs/server/compiler-metadata.d.ts +11 -0
  550. package/dist/cjs/server/compiler.d.ts +212 -0
  551. package/dist/cjs/server/cube-utils.d.ts +158 -0
  552. package/dist/cjs/server/database-utils.d.ts +18 -0
  553. package/dist/cjs/server/execution/annotation-builder.d.ts +12 -0
  554. package/dist/cjs/server/execution/filter-cache-preloader.d.ts +19 -0
  555. package/dist/cjs/server/execution/mode-router.d.ts +25 -0
  556. package/dist/cjs/server/execution/query-result-cache.d.ts +21 -0
  557. package/dist/cjs/server/execution/result-post-processor.d.ts +10 -0
  558. package/dist/cjs/server/executor.d.ts +186 -0
  559. package/dist/cjs/server/executors/base-executor.d.ts +16 -0
  560. package/dist/cjs/server/executors/databend-executor.d.ts +33 -0
  561. package/dist/cjs/server/executors/duckdb-executor.d.ts +33 -0
  562. package/dist/cjs/server/executors/explain-utils.d.ts +28 -0
  563. package/dist/cjs/server/executors/index.d.ts +21 -0
  564. package/dist/cjs/server/executors/mysql-executor.d.ts +27 -0
  565. package/dist/cjs/server/executors/postgres-executor.d.ts +27 -0
  566. package/dist/cjs/server/executors/singlestore-executor.d.ts +9 -0
  567. package/dist/cjs/server/executors/snowflake-executor.d.ts +33 -0
  568. package/dist/cjs/server/executors/sqlite-executor.d.ts +28 -0
  569. package/dist/cjs/server/explain/databend-parser.d.ts +16 -0
  570. package/dist/cjs/server/explain/duckdb-parser.d.ts +28 -0
  571. package/dist/cjs/server/explain/explain-tree.d.ts +20 -0
  572. package/dist/cjs/server/explain/index.d.ts +9 -0
  573. package/dist/cjs/server/explain/mysql-parser.d.ts +38 -0
  574. package/dist/cjs/server/explain/postgres-parser.d.ts +18 -0
  575. package/dist/cjs/server/explain/snowflake-parser.d.ts +17 -0
  576. package/dist/cjs/server/explain/sqlite-parser.d.ts +23 -0
  577. package/dist/cjs/server/filter-cache.d.ts +73 -0
  578. package/dist/cjs/server/gap-filler.d.ts +48 -0
  579. package/dist/cjs/server/index.d.ts +38 -0
  580. package/dist/cjs/server/logical-plan/cte-planner-helpers.d.ts +37 -0
  581. package/dist/cjs/server/logical-plan/cte-planner.d.ts +104 -0
  582. package/dist/cjs/server/logical-plan/filter-propagation.d.ts +44 -0
  583. package/dist/cjs/server/logical-plan/index.d.ts +19 -0
  584. package/dist/cjs/server/logical-plan/join-planner.d.ts +27 -0
  585. package/dist/cjs/server/logical-plan/logical-plan-builder.d.ts +58 -0
  586. package/dist/cjs/server/logical-plan/logical-planner.d.ts +39 -0
  587. package/dist/cjs/server/logical-plan/optimiser.d.ts +34 -0
  588. package/dist/cjs/server/logical-plan/plan-analysis-reporter.d.ts +59 -0
  589. package/dist/cjs/server/logical-plan/planner-utils.d.ts +20 -0
  590. package/dist/cjs/server/logical-plan/types.d.ts +199 -0
  591. package/dist/cjs/server/measure-classification.d.ts +40 -0
  592. package/dist/cjs/server/physical-plan/drizzle-plan-builder.d.ts +50 -0
  593. package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +118 -0
  594. package/dist/cjs/server/physical-plan/index.d.ts +2 -0
  595. package/dist/cjs/server/physical-plan/processors/cte-processor.d.ts +6 -0
  596. package/dist/cjs/server/physical-plan/processors/index.d.ts +8 -0
  597. package/dist/cjs/server/physical-plan/processors/joins-processor.d.ts +6 -0
  598. package/dist/cjs/server/physical-plan/processors/keys-dedup-processor.d.ts +13 -0
  599. package/dist/cjs/server/physical-plan/processors/multi-fact-processor.d.ts +13 -0
  600. package/dist/cjs/server/physical-plan/processors/predicates-processor.d.ts +6 -0
  601. package/dist/cjs/server/physical-plan/processors/selection-processor.d.ts +6 -0
  602. package/dist/cjs/server/physical-plan/processors/shared.d.ts +38 -0
  603. package/dist/cjs/server/physical-plan/processors/window-processor.d.ts +6 -0
  604. package/dist/cjs/server/prompts/explain-analysis-prompt.d.ts +47 -0
  605. package/dist/cjs/server/prompts/index.d.ts +27 -0
  606. package/dist/cjs/server/prompts/single-step-prompt.d.ts +31 -0
  607. package/dist/cjs/server/prompts/step0-validation-prompt.d.ts +39 -0
  608. package/dist/cjs/server/prompts/step1-shape-prompt.d.ts +29 -0
  609. package/dist/cjs/server/prompts/step2-complete-prompt.d.ts +19 -0
  610. package/dist/cjs/server/prompts/types.d.ts +37 -0
  611. package/dist/cjs/server/query-handlers.d.ts +79 -0
  612. package/dist/cjs/server/query-modes.d.ts +28 -0
  613. package/dist/cjs/server/query-validator.d.ts +9 -0
  614. package/dist/cjs/server/resolvers/calculated-measure-resolver.d.ts +98 -0
  615. package/dist/cjs/server/resolvers/index.d.ts +6 -0
  616. package/dist/cjs/server/resolvers/join-path-resolver.d.ts +158 -0
  617. package/dist/cjs/server/sql-format.d.ts +11 -0
  618. package/dist/cjs/server/template-substitution.d.ts +57 -0
  619. package/dist/cjs/server/types/analysis.d.ts +189 -0
  620. package/dist/cjs/server/types/cache.d.ts +132 -0
  621. package/dist/cjs/server/types/core.d.ts +164 -0
  622. package/dist/cjs/server/types/cube.d.ts +544 -0
  623. package/dist/cjs/server/types/executor.d.ts +156 -0
  624. package/dist/cjs/server/types/flow.d.ts +144 -0
  625. package/dist/cjs/server/types/funnel.d.ts +118 -0
  626. package/dist/cjs/server/types/index.d.ts +11 -0
  627. package/dist/cjs/server/types/metadata.d.ts +113 -0
  628. package/dist/cjs/server/types/query.d.ts +153 -0
  629. package/dist/cjs/server/types/retention.d.ts +141 -0
  630. package/dist/cjs/server/types/utils.d.ts +11 -0
  631. package/dist/cjs/server/types/validation.d.ts +14 -0
  632. package/dist/client/charts/chartComponentRegistry.d.ts +1 -9
  633. package/dist/client/charts/chartConfigRegistry.d.ts +5 -1
  634. package/dist/client/charts/chartPlugin.d.ts +1 -2
  635. package/dist/client/charts/chartRegistry.d.ts +73 -0
  636. package/dist/client/charts.js +3 -3
  637. package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js → DashboardEditModal-CWurUU2B.js} +7 -7
  638. package/dist/client/chunks/{DashboardEditModal-okVfH8ZK.js.map → DashboardEditModal-CWurUU2B.js.map} +1 -1
  639. package/dist/client/chunks/{analysis-builder-DB88FojM.js → analysis-builder-Uj_Fxv0-.js} +1588 -1857
  640. package/dist/client/chunks/analysis-builder-Uj_Fxv0-.js.map +1 -0
  641. package/dist/client/chunks/{analysis-builder-shared-BVK4TYfR.js → analysis-builder-shared-AdAYIfj_.js} +1531 -1266
  642. package/dist/client/chunks/analysis-builder-shared-AdAYIfj_.js.map +1 -0
  643. package/dist/client/chunks/{chart-config-activity-grid-D_UX4NHC.js → chart-config-activity-grid-BU_bkvER.js} +1 -11
  644. package/dist/client/chunks/chart-config-activity-grid-BU_bkvER.js.map +1 -0
  645. package/dist/client/chunks/{chart-config-area-BNigHUy8.js → chart-config-area-DxwIZ4Uf.js} +1 -5
  646. package/dist/client/chunks/{chart-config-area-BNigHUy8.js.map → chart-config-area-DxwIZ4Uf.js.map} +1 -1
  647. package/dist/client/chunks/{chart-config-bar-DSO_LRTx.js → chart-config-bar-Cc8GY9aQ.js} +5 -9
  648. package/dist/client/chunks/chart-config-bar-Cc8GY9aQ.js.map +1 -0
  649. package/dist/client/chunks/{chart-config-box-plot-oW8axV2q.js → chart-config-box-plot-Bs8ovYvV.js} +3 -8
  650. package/dist/client/chunks/chart-config-box-plot-Bs8ovYvV.js.map +1 -0
  651. package/dist/client/chunks/{chart-config-bubble-gIoqVyjZ.js → chart-config-bubble-BfgY7pt8.js} +1 -11
  652. package/dist/client/chunks/chart-config-bubble-BfgY7pt8.js.map +1 -0
  653. package/dist/client/chunks/{chart-config-candlestick-N6DchAA3.js → chart-config-candlestick-jaeNNEtC.js} +1 -11
  654. package/dist/client/chunks/chart-config-candlestick-jaeNNEtC.js.map +1 -0
  655. package/dist/client/chunks/{chart-config-data-table-d7VBY-y_.js → chart-config-data-table-CRk0C0rW.js} +1 -4
  656. package/dist/client/chunks/chart-config-data-table-CRk0C0rW.js.map +1 -0
  657. package/dist/client/chunks/{chart-config-funnel-DEYMcxsD.js → chart-config-funnel-boT_LNfl.js} +1 -4
  658. package/dist/client/chunks/chart-config-funnel-boT_LNfl.js.map +1 -0
  659. package/dist/client/chunks/{chart-config-gauge-Dq-_H9UN.js → chart-config-gauge-C5uJEr97.js} +3 -8
  660. package/dist/client/chunks/chart-config-gauge-C5uJEr97.js.map +1 -0
  661. package/dist/client/chunks/{chart-config-heat-map-CfRnRNcw.js → chart-config-heat-map-CCarP44-.js} +1 -11
  662. package/dist/client/chunks/chart-config-heat-map-CCarP44-.js.map +1 -0
  663. package/dist/client/chunks/{chart-config-kpi-delta-DSQbvqu_.js → chart-config-kpi-delta-DYopvwyG.js} +3 -8
  664. package/dist/client/chunks/chart-config-kpi-delta-DYopvwyG.js.map +1 -0
  665. package/dist/client/chunks/{chart-config-kpi-number-EFSWY1We.js → chart-config-kpi-number-BhMdoArB.js} +3 -8
  666. package/dist/client/chunks/chart-config-kpi-number-BhMdoArB.js.map +1 -0
  667. package/dist/client/chunks/{chart-config-kpi-text-KM3V5X2u.js → chart-config-kpi-text-DE6Zdi53.js} +3 -8
  668. package/dist/client/chunks/chart-config-kpi-text-DE6Zdi53.js.map +1 -0
  669. package/dist/client/chunks/{chart-config-line-D6jG8PCH.js → chart-config-line-CBfM0Rds.js} +6 -10
  670. package/dist/client/chunks/chart-config-line-CBfM0Rds.js.map +1 -0
  671. package/dist/client/chunks/{chart-config-markdown-BtRIe8JN.js → chart-config-markdown-BCDyBI8K.js} +1 -4
  672. package/dist/client/chunks/chart-config-markdown-BCDyBI8K.js.map +1 -0
  673. package/dist/client/chunks/{chart-config-measure-profile-DxRGa-zf.js → chart-config-measure-profile-BgQIH1u2.js} +1 -8
  674. package/dist/client/chunks/chart-config-measure-profile-BgQIH1u2.js.map +1 -0
  675. package/dist/client/chunks/{chart-config-pie-BhzW-fdn.js → chart-config-pie-ChfFz6DV.js} +5 -9
  676. package/dist/client/chunks/chart-config-pie-ChfFz6DV.js.map +1 -0
  677. package/dist/client/chunks/{chart-config-radar-D7REP1q_.js → chart-config-radar-BlAIGnww.js} +5 -9
  678. package/dist/client/chunks/chart-config-radar-BlAIGnww.js.map +1 -0
  679. package/dist/client/chunks/{chart-config-radial-bar-Byx6qOPU.js → chart-config-radial-bar-VFerwbCO.js} +5 -9
  680. package/dist/client/chunks/chart-config-radial-bar-VFerwbCO.js.map +1 -0
  681. package/dist/client/chunks/{chart-config-sankey-BTnWA7EW.js → chart-config-sankey-BhrDxIgj.js} +1 -4
  682. package/dist/client/chunks/chart-config-sankey-BhrDxIgj.js.map +1 -0
  683. package/dist/client/chunks/{chart-config-scatter-DSYTjwRb.js → chart-config-scatter-q_olh54e.js} +1 -11
  684. package/dist/client/chunks/chart-config-scatter-q_olh54e.js.map +1 -0
  685. package/dist/client/chunks/{chart-config-sunburst-Bwjtdf7X.js → chart-config-sunburst-BOmkOnKn.js} +1 -4
  686. package/dist/client/chunks/chart-config-sunburst-BOmkOnKn.js.map +1 -0
  687. package/dist/client/chunks/{chart-config-tree-map-DVrvf3yQ.js → chart-config-tree-map-BjX88YBY.js} +5 -9
  688. package/dist/client/chunks/chart-config-tree-map-BjX88YBY.js.map +1 -0
  689. package/dist/client/chunks/{chart-config-waterfall-DmFeQdIk.js → chart-config-waterfall-QsWXVSoF.js} +3 -8
  690. package/dist/client/chunks/chart-config-waterfall-QsWXVSoF.js.map +1 -0
  691. package/dist/client/chunks/{chart-data-table-CKauQXme.js → chart-data-table-D4g5_jfF.js} +1277 -1094
  692. package/dist/client/chunks/chart-data-table-D4g5_jfF.js.map +1 -0
  693. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js → chart-kpi-delta-BvWOt8-D.js} +2 -2
  694. package/dist/client/chunks/{chart-kpi-delta-Dn-jjO-2.js.map → chart-kpi-delta-BvWOt8-D.js.map} +1 -1
  695. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js → chart-kpi-number-xgZmMiQY.js} +3 -3
  696. package/dist/client/chunks/{chart-kpi-number-P_WBiO5S.js.map → chart-kpi-number-xgZmMiQY.js.map} +1 -1
  697. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js → chart-kpi-text-ZO3eFi7t.js} +2 -2
  698. package/dist/client/chunks/{chart-kpi-text-C-Y4eb5H.js.map → chart-kpi-text-ZO3eFi7t.js.map} +1 -1
  699. package/dist/client/chunks/{charts-loader-DdTeCeNo.js → charts-loader-B0DOQMFH.js} +6 -6
  700. package/dist/client/chunks/{charts-loader-DdTeCeNo.js.map → charts-loader-B0DOQMFH.js.map} +1 -1
  701. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js → schema-visualization-DJPTktM6.js} +2 -2
  702. package/dist/client/chunks/{schema-visualization-Cb_E9_Gd.js.map → schema-visualization-DJPTktM6.js.map} +1 -1
  703. package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js → useDirtyStateTracking-BY_IIG1n.js} +2 -2
  704. package/dist/client/chunks/{useDirtyStateTracking-MbpxH_v6.js.map → useDirtyStateTracking-BY_IIG1n.js.map} +1 -1
  705. package/dist/client/chunks/{useExplainAI-evnZkjCY.js → useExplainAI-PjMBmj2p.js} +4 -4
  706. package/dist/client/chunks/{useExplainAI-evnZkjCY.js.map → useExplainAI-PjMBmj2p.js.map} +1 -1
  707. package/dist/client/chunks/{utils-3P6z1vz5.js → utils-Cq-j5E5I.js} +2 -2
  708. package/dist/client/chunks/{utils-3P6z1vz5.js.map → utils-Cq-j5E5I.js.map} +1 -1
  709. package/dist/client/chunks/{vendor-DSpR0IW6.js → vendor-D4jADu8t.js} +2 -2
  710. package/dist/client/chunks/{vendor-DSpR0IW6.js.map → vendor-D4jADu8t.js.map} +1 -1
  711. package/dist/client/components/AIAssistant/index.d.ts +2 -2
  712. package/dist/client/components/charts/ActivityGridChart.config.d.ts +6 -1
  713. package/dist/client/components/charts/AreaChart.config.d.ts +6 -1
  714. package/dist/client/components/charts/BarChart.config.d.ts +6 -1
  715. package/dist/client/components/charts/BoxPlotChart.config.d.ts +6 -1
  716. package/dist/client/components/charts/BubbleChart.config.d.ts +6 -1
  717. package/dist/client/components/charts/CandlestickChart.config.d.ts +6 -1
  718. package/dist/client/components/charts/DataTable.config.d.ts +6 -1
  719. package/dist/client/components/charts/FunnelChart.config.d.ts +5 -0
  720. package/dist/client/components/charts/GaugeChart.config.d.ts +6 -1
  721. package/dist/client/components/charts/HeatMapChart.config.d.ts +6 -1
  722. package/dist/client/components/charts/KpiDelta.config.d.ts +6 -1
  723. package/dist/client/components/charts/KpiNumber.config.d.ts +6 -1
  724. package/dist/client/components/charts/KpiText.config.d.ts +6 -1
  725. package/dist/client/components/charts/LineChart.config.d.ts +6 -1
  726. package/dist/client/components/charts/MarkdownChart.config.d.ts +6 -1
  727. package/dist/client/components/charts/MeasureProfileChart.config.d.ts +6 -1
  728. package/dist/client/components/charts/PieChart.config.d.ts +6 -1
  729. package/dist/client/components/charts/RadarChart.config.d.ts +6 -1
  730. package/dist/client/components/charts/RadialBarChart.config.d.ts +6 -1
  731. package/dist/client/components/charts/SankeyChart.config.d.ts +5 -0
  732. package/dist/client/components/charts/ScatterChart.config.d.ts +6 -1
  733. package/dist/client/components/charts/SunburstChart.config.d.ts +5 -0
  734. package/dist/client/components/charts/TreeMapChart.config.d.ts +6 -1
  735. package/dist/client/components/charts/WaterfallChart.config.d.ts +6 -1
  736. package/dist/client/components.js +2 -2
  737. package/dist/client/hooks/analysisQueryExecutionModes.d.ts +1 -1
  738. package/dist/client/hooks/useAnalysisEffects.d.ts +33 -0
  739. package/dist/client/hooks/useAnalysisQuery.d.ts +144 -0
  740. package/dist/client/hooks/useAnalysisState.d.ts +165 -0
  741. package/dist/client/hooks.js +3 -3
  742. package/dist/client/icons/registry.d.ts +0 -6
  743. package/dist/client/icons/types.d.ts +5 -0
  744. package/dist/client/icons.js +1 -1
  745. package/dist/client/index.js +9 -9
  746. package/dist/client/providers.js +1 -1
  747. package/dist/client/schema.js +1 -1
  748. package/dist/client/utils.js +3 -3
  749. package/dist/client-bundle-stats.html +1 -1
  750. package/dist/mcp-app/mcp-app.html +34 -34
  751. package/dist/server/chartConfigHelpers-CcvqrIWF.js +72 -0
  752. package/dist/server/chartConfigHelpers-DHQB-_v5.cjs +1 -0
  753. package/dist/server/index.cjs +68 -68
  754. package/dist/server/index.js +3800 -3728
  755. package/dist/server/{openai-D0musiYP.cjs → openai-B4kAJTSD.cjs} +3 -3
  756. package/dist/server/{openai-vXvLni8v.cjs → openai-Cdf2wWZA.cjs} +1 -1
  757. package/dist/server/{openai-B5jEiqiB.js → openai-CmMzrs1Y.js} +18 -2
  758. package/dist/server/{openai-cDlFSTk6.js → openai-DhzGY9R4.js} +1 -1
  759. package/package.json +85 -29
  760. package/dist/adapters/handler-Cn0dOctE.cjs +0 -25
  761. package/dist/adapters/hono/mcp-handler.d.ts +0 -37
  762. package/dist/adapters/mcp-transport-B7ddET3M.cjs +0 -40
  763. package/dist/adapters/mcp-transport-Dfuj4j4q.js +0 -591
  764. package/dist/client/chunks/analysis-builder-DB88FojM.js.map +0 -1
  765. package/dist/client/chunks/analysis-builder-shared-BVK4TYfR.js.map +0 -1
  766. package/dist/client/chunks/chart-config-activity-grid-D_UX4NHC.js.map +0 -1
  767. package/dist/client/chunks/chart-config-bar-DSO_LRTx.js.map +0 -1
  768. package/dist/client/chunks/chart-config-box-plot-oW8axV2q.js.map +0 -1
  769. package/dist/client/chunks/chart-config-bubble-gIoqVyjZ.js.map +0 -1
  770. package/dist/client/chunks/chart-config-candlestick-N6DchAA3.js.map +0 -1
  771. package/dist/client/chunks/chart-config-data-table-d7VBY-y_.js.map +0 -1
  772. package/dist/client/chunks/chart-config-funnel-DEYMcxsD.js.map +0 -1
  773. package/dist/client/chunks/chart-config-gauge-Dq-_H9UN.js.map +0 -1
  774. package/dist/client/chunks/chart-config-heat-map-CfRnRNcw.js.map +0 -1
  775. package/dist/client/chunks/chart-config-kpi-delta-DSQbvqu_.js.map +0 -1
  776. package/dist/client/chunks/chart-config-kpi-number-EFSWY1We.js.map +0 -1
  777. package/dist/client/chunks/chart-config-kpi-text-KM3V5X2u.js.map +0 -1
  778. package/dist/client/chunks/chart-config-line-D6jG8PCH.js.map +0 -1
  779. package/dist/client/chunks/chart-config-markdown-BtRIe8JN.js.map +0 -1
  780. package/dist/client/chunks/chart-config-measure-profile-DxRGa-zf.js.map +0 -1
  781. package/dist/client/chunks/chart-config-pie-BhzW-fdn.js.map +0 -1
  782. package/dist/client/chunks/chart-config-radar-D7REP1q_.js.map +0 -1
  783. package/dist/client/chunks/chart-config-radial-bar-Byx6qOPU.js.map +0 -1
  784. package/dist/client/chunks/chart-config-sankey-BTnWA7EW.js.map +0 -1
  785. package/dist/client/chunks/chart-config-scatter-DSYTjwRb.js.map +0 -1
  786. package/dist/client/chunks/chart-config-sunburst-Bwjtdf7X.js.map +0 -1
  787. package/dist/client/chunks/chart-config-tree-map-DVrvf3yQ.js.map +0 -1
  788. package/dist/client/chunks/chart-config-waterfall-DmFeQdIk.js.map +0 -1
  789. package/dist/client/chunks/chart-data-table-CKauQXme.js.map +0 -1
  790. package/dist/client/hooks/useAnalysisAI.d.ts +0 -56
  791. package/dist/client/hooks/useAnalysisChartDefaults.d.ts +0 -35
  792. package/dist/client/hooks/useAnalysisCombinedFields.d.ts +0 -18
  793. package/dist/client/hooks/useAnalysisInitialization.d.ts +0 -25
  794. package/dist/client/hooks/useAnalysisQueryBuilder.d.ts +0 -32
  795. package/dist/client/hooks/useAnalysisShare.d.ts +0 -18
  796. package/dist/client/hooks/useAnalysisUIState.d.ts +0 -24
@@ -1,16 +1,16 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-DSpR0IW6.js";
2
- import { k as s, u as c, v as l } from "./chart-data-table-CKauQXme.js";
3
- import { A as u, S as d, T as f, _ as p, _t as m, d as h, et as g, g as _, gt as v, l as y, u as b, v as x, x as S, y as C } from "./DashboardEditModal-okVfH8ZK.js";
4
- import { a as w, s as T, t as E } from "./retention-ChW9jYdy.js";
5
- import { P as D, z as ee } from "./chart-activity-grid-DX0SJbxs.js";
6
- import { A as O, D as k, O as te, S as ne, T as A, a as re, d as ie, k as ae, l as oe, n as se, r as ce, s as le } from "./useDirtyStateTracking-MbpxH_v6.js";
7
- import { a as ue, i as de } from "./useExplainAI-evnZkjCY.js";
8
- import { r as fe, s as j } from "./chart-funnel-CToKSBaL.js";
9
- import { n as M } from "./charts-core-DaXSt1Dd.js";
10
- import N, { createContext as P, memo as F, useCallback as I, useContext as pe, useEffect as L, useMemo as R, useRef as z, useState as B } from "react";
11
- import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-D4jADu8t.js";
2
+ import { k as s, u as c, v as l, z as u } from "./chart-data-table-D4g5_jfF.js";
3
+ import { A as d, S as f, T as p, _ as m, _t as h, d as g, et as _, g as v, gt as y, l as b, u as x, v as S, x as C, y as w } from "./DashboardEditModal-CWurUU2B.js";
4
+ import { a as T, s as E, t as D } from "./retention-ChW9jYdy.js";
5
+ import { P as O, z as k } from "./chart-activity-grid-DX0SJbxs.js";
6
+ import { A, D as ee, O as te, S as ne, T as j, a as re, d as ie, k as ae, l as M, n as N, r as oe, s as se } from "./useDirtyStateTracking-BY_IIG1n.js";
7
+ import { a as P, i as ce } from "./useExplainAI-PjMBmj2p.js";
8
+ import { r as F, s as I } from "./chart-funnel-CToKSBaL.js";
9
+ import { n as le } from "./charts-core-DaXSt1Dd.js";
10
+ import L, { createContext as ue, memo as de, useCallback as R, useContext as fe, useEffect as z, useMemo as B, useRef as V, useState as H } from "react";
11
+ import { Fragment as U, jsx as W, jsxs as G } from "react/jsx-runtime";
12
12
  //#region src/shared/date-utils.ts
13
- function me(e) {
13
+ function K(e) {
14
14
  let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
15
15
  if (n === "today") {
16
16
  let e = new Date(t);
@@ -123,7 +123,7 @@ function me(e) {
123
123
  }
124
124
  return null;
125
125
  }
126
- function W(e) {
126
+ function pe(e) {
127
127
  if (Array.isArray(e)) {
128
128
  if (e.length < 2) return null;
129
129
  let t = new Date(e[0]), n = new Date(e[1]);
@@ -132,12 +132,12 @@ function W(e) {
132
132
  end: n
133
133
  });
134
134
  }
135
- return me(e);
135
+ return K(e);
136
136
  }
137
- function he(e) {
137
+ function q(e) {
138
138
  return e.toISOString().split("T")[0];
139
139
  }
140
- function ge(e, t) {
140
+ function me(e, t) {
141
141
  let n = t.getTime() - e.getTime(), r = Math.ceil(n / (1e3 * 60 * 60 * 24)), i = new Date(e);
142
142
  i.setUTCDate(i.getUTCDate() - 1), i.setUTCHours(23, 59, 59, 999);
143
143
  let a = new Date(i);
@@ -148,27 +148,27 @@ function ge(e, t) {
148
148
  }
149
149
  //#endregion
150
150
  //#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
151
- function _e(e, t) {
151
+ function he(e, t) {
152
152
  for (let n of e) if ("type" in n && "filters" in n) {
153
- let e = _e(n.filters, t);
153
+ let e = he(n.filters, t);
154
154
  if (e) return e;
155
155
  } else if ("member" in n) {
156
156
  let e = n;
157
157
  if (e.member === t && e.operator === "inDateRange" && e.dateRange) return { dateRange: e.dateRange };
158
158
  }
159
159
  }
160
- function ve(e, t) {
161
- let n = _e(t, e);
160
+ function ge(e, t) {
161
+ let n = he(t, e);
162
162
  if (!n?.dateRange) return;
163
- let r = W(n.dateRange);
163
+ let r = pe(n.dateRange);
164
164
  if (!r) return;
165
- let i = ge(r.start, r.end);
166
- return [[he(r.start), he(r.end)], [he(i.start), he(i.end)]];
165
+ let i = me(r.start, r.end);
166
+ return [[q(r.start), q(r.end)], [q(i.start), q(i.end)]];
167
167
  }
168
- function ye(e, t) {
168
+ function _e(e, t) {
169
169
  return e.reduce((e, n) => {
170
170
  if ("type" in n && "filters" in n) {
171
- let r = n, i = ye(r.filters, t);
171
+ let r = n, i = _e(r.filters, t);
172
172
  i.length > 0 && e.push({
173
173
  type: r.type,
174
174
  filters: i
@@ -182,10 +182,10 @@ function ye(e, t) {
182
182
  }
183
183
  //#endregion
184
184
  //#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
185
- function G(e, t, n, r, i = !1, a) {
185
+ function ve(e, t, n, r, i = !1, a) {
186
186
  let o = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), s = n;
187
- if (!i) for (let e of o) s = ye(s, e);
188
- s = s.filter((e) => g(e));
187
+ if (!i) for (let e of o) s = _e(s, e);
188
+ s = s.filter((e) => _(e));
189
189
  let c = {
190
190
  measures: e.map((e) => e.field),
191
191
  dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
@@ -195,7 +195,7 @@ function G(e, t, n, r, i = !1, a) {
195
195
  granularity: e.granularity || "day"
196
196
  };
197
197
  if (e.enableComparison) {
198
- let r = ve(e.field, n);
198
+ let r = ge(e.field, n);
199
199
  r && (t.compareDateRange = r);
200
200
  }
201
201
  return t;
@@ -206,7 +206,7 @@ function G(e, t, n, r, i = !1, a) {
206
206
  };
207
207
  return c.measures?.length === 0 && delete c.measures, c.dimensions?.length === 0 && delete c.dimensions, c.timeDimensions?.length === 0 && delete c.timeDimensions, c;
208
208
  }
209
- function K() {
209
+ function J() {
210
210
  return {
211
211
  metrics: [],
212
212
  breakdowns: [],
@@ -219,7 +219,7 @@ function K() {
219
219
  }
220
220
  //#endregion
221
221
  //#region src/client/components/AnalysisBuilder/filterConfigModalUtils.ts
222
- function q(e, t, n, r) {
222
+ function ye(e, t, n, r) {
223
223
  if (!t || n === 0) return { type: "none" };
224
224
  switch (e) {
225
225
  case "ArrowDown": return {
@@ -240,60 +240,60 @@ function q(e, t, n, r) {
240
240
  }
241
241
  //#endregion
242
242
  //#region src/client/components/AnalysisBuilder/FilterValueInput.tsx
243
- var J = l("close"), be = l("chevronDown");
244
- function xe({ filter: e, dateRange: t }) {
245
- let { t: n } = D(), { rangeType: r, numberValue: i, label: a, isOpen: o, onToggle: s, onRangeTypeChange: c, onNumberValueChange: l, onCustomStartDate: u, onCustomEndDate: d, onOpen: f } = t;
246
- return /* @__PURE__ */ U("div", {
243
+ var be = l("close"), xe = l("chevronDown");
244
+ function Se({ filter: e, dateRange: t }) {
245
+ let { t: n } = O(), { rangeType: r, numberValue: i, label: a, isOpen: o, onToggle: s, onRangeTypeChange: c, onNumberValueChange: l, onCustomStartDate: u, onCustomEndDate: d, onOpen: f } = t;
246
+ return /* @__PURE__ */ G("div", {
247
247
  className: "dc:space-y-2",
248
248
  children: [
249
- /* @__PURE__ */ U("div", {
249
+ /* @__PURE__ */ G("div", {
250
250
  className: "dc:relative",
251
- children: [/* @__PURE__ */ U("button", {
251
+ children: [/* @__PURE__ */ G("button", {
252
252
  onClick: () => {
253
253
  f(), s(!o);
254
254
  },
255
255
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
256
- children: [/* @__PURE__ */ H("span", {
256
+ children: [/* @__PURE__ */ W("span", {
257
257
  className: "dc:truncate",
258
258
  children: a
259
- }), /* @__PURE__ */ H(be, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
260
- }), o && /* @__PURE__ */ H("div", {
259
+ }), /* @__PURE__ */ W(xe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
260
+ }), o && /* @__PURE__ */ W("div", {
261
261
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
262
- children: ae.map((e) => /* @__PURE__ */ H("button", {
262
+ children: ae.map((e) => /* @__PURE__ */ W("button", {
263
263
  onClick: () => c(e.value),
264
264
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${e.value === r ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
265
265
  children: n(e.label)
266
266
  }, e.value))
267
267
  })]
268
268
  }),
269
- te(r) && /* @__PURE__ */ U("div", {
269
+ te(r) && /* @__PURE__ */ G("div", {
270
270
  className: "dc:flex dc:items-center dc:gap-2",
271
- children: [/* @__PURE__ */ H("input", {
271
+ children: [/* @__PURE__ */ W("input", {
272
272
  type: "number",
273
273
  min: "1",
274
274
  max: "1000",
275
275
  value: i,
276
276
  onChange: (e) => l(Math.max(1, parseInt(e.target.value) || 1)),
277
277
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text dc:w-20"
278
- }), /* @__PURE__ */ H("span", {
278
+ }), /* @__PURE__ */ W("span", {
279
279
  className: "dc:text-sm text-dc-text-muted",
280
280
  children: r.replace("last_n_", "")
281
281
  })]
282
282
  }),
283
- r === "custom" && /* @__PURE__ */ U("div", {
283
+ r === "custom" && /* @__PURE__ */ G("div", {
284
284
  className: "dc:flex dc:items-center dc:gap-2",
285
285
  children: [
286
- /* @__PURE__ */ H("input", {
286
+ /* @__PURE__ */ W("input", {
287
287
  type: "date",
288
288
  value: Array.isArray(e.dateRange) ? e.dateRange[0] : "",
289
289
  onChange: u,
290
290
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-2 dc:py-2 bg-dc-surface text-dc-text"
291
291
  }),
292
- /* @__PURE__ */ H("span", {
292
+ /* @__PURE__ */ W("span", {
293
293
  className: "dc:text-sm text-dc-text-muted",
294
294
  children: n("filter.modal.dateTo")
295
295
  }),
296
- /* @__PURE__ */ H("input", {
296
+ /* @__PURE__ */ W("input", {
297
297
  type: "date",
298
298
  value: Array.isArray(e.dateRange) ? e.dateRange[1] : "",
299
299
  onChange: d,
@@ -304,26 +304,26 @@ function xe({ filter: e, dateRange: t }) {
304
304
  ]
305
305
  });
306
306
  }
307
- function Se({ filter: e, combo: t }) {
308
- let { t: n } = D(), { options: r, loading: i, error: a, highlightedIndex: o, listRef: s, onSelect: c } = t;
309
- return i ? /* @__PURE__ */ H("div", {
307
+ function Ce({ filter: e, combo: t }) {
308
+ let { t: n } = O(), { options: r, loading: i, error: a, highlightedIndex: o, listRef: s, onSelect: c } = t;
309
+ return i ? /* @__PURE__ */ W("div", {
310
310
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
311
311
  children: n("filter.modal.loading")
312
- }) : a ? /* @__PURE__ */ U("div", {
312
+ }) : a ? /* @__PURE__ */ G("div", {
313
313
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-error",
314
314
  children: [n("filter.modal.errorPrefix"), String(a)]
315
- }) : r.length === 0 ? /* @__PURE__ */ H("div", {
315
+ }) : r.length === 0 ? /* @__PURE__ */ W("div", {
316
316
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
317
317
  children: n("filter.modal.noValues")
318
- }) : /* @__PURE__ */ H("div", {
318
+ }) : /* @__PURE__ */ W("div", {
319
319
  ref: s,
320
320
  className: "dc:max-h-40 dc:overflow-y-auto",
321
321
  children: r.map((t, n) => {
322
322
  let r = e.values?.includes(t);
323
- return /* @__PURE__ */ U("button", {
323
+ return /* @__PURE__ */ G("button", {
324
324
  onClick: (e) => c(t, e),
325
325
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm dc:transition-colors ${n === o ? "bg-dc-surface-hover" : ""} ${r ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text hover:bg-dc-surface-hover"}`,
326
- children: [String(t), r && /* @__PURE__ */ H("span", {
326
+ children: [String(t), r && /* @__PURE__ */ W("span", {
327
327
  className: "dc:float-right",
328
328
  children: "✓"
329
329
  })]
@@ -331,41 +331,41 @@ function Se({ filter: e, combo: t }) {
331
331
  })
332
332
  });
333
333
  }
334
- function Ce({ filter: e, operatorMeta: t, combo: n }) {
335
- let { t: r } = D(), { isOpen: i, loading: a, searchText: o, onSearchTextChange: s, onHighlightedIndexChange: c, onRemove: l, onKeyDown: u, onOpen: d } = n;
336
- return /* @__PURE__ */ U("div", {
334
+ function we({ filter: e, operatorMeta: t, combo: n }) {
335
+ let { t: r } = O(), { isOpen: i, loading: a, searchText: o, onSearchTextChange: s, onHighlightedIndexChange: c, onRemove: l, onKeyDown: u, onOpen: d } = n;
336
+ return /* @__PURE__ */ G("div", {
337
337
  className: "dc:space-y-2",
338
338
  children: [
339
- e.values && e.values.length > 0 && /* @__PURE__ */ H("div", {
339
+ e.values && e.values.length > 0 && /* @__PURE__ */ W("div", {
340
340
  className: "dc:flex dc:flex-wrap dc:gap-1.5",
341
- children: e.values.map((e, t) => /* @__PURE__ */ U("span", {
341
+ children: e.values.map((e, t) => /* @__PURE__ */ G("span", {
342
342
  className: "dc:inline-flex dc:items-center dc:gap-1 bg-dc-primary/10 text-dc-primary dc:text-sm dc:px-2 dc:py-1 dc:rounded",
343
- children: [/* @__PURE__ */ H("span", {
343
+ children: [/* @__PURE__ */ W("span", {
344
344
  className: "dc:max-w-[150px] dc:truncate",
345
345
  children: String(e)
346
- }), /* @__PURE__ */ H("button", {
346
+ }), /* @__PURE__ */ W("button", {
347
347
  onClick: () => l(e),
348
348
  className: "hover:text-dc-danger",
349
- children: /* @__PURE__ */ H(J, { className: "dc:w-3.5 dc:h-3.5" })
349
+ children: /* @__PURE__ */ W(be, { className: "dc:w-3.5 dc:h-3.5" })
350
350
  })]
351
351
  }, t))
352
352
  }),
353
- /* @__PURE__ */ U("div", {
353
+ /* @__PURE__ */ G("div", {
354
354
  className: "dc:relative",
355
- children: [/* @__PURE__ */ U("button", {
355
+ children: [/* @__PURE__ */ G("button", {
356
356
  onClick: () => {
357
357
  d();
358
358
  },
359
359
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
360
- children: [/* @__PURE__ */ H("span", {
360
+ children: [/* @__PURE__ */ W("span", {
361
361
  className: "text-dc-text-muted dc:truncate",
362
362
  children: r(a ? "filter.modal.loading" : "filter.modal.selectValue")
363
- }), /* @__PURE__ */ H(be, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
364
- }), i && /* @__PURE__ */ U("div", {
363
+ }), /* @__PURE__ */ W(xe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
364
+ }), i && /* @__PURE__ */ G("div", {
365
365
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-56 dc:overflow-hidden",
366
- children: [/* @__PURE__ */ H("div", {
366
+ children: [/* @__PURE__ */ W("div", {
367
367
  className: "dc:p-2 dc:border-b border-dc-border",
368
- children: /* @__PURE__ */ H("input", {
368
+ children: /* @__PURE__ */ W("input", {
369
369
  type: "text",
370
370
  value: o,
371
371
  onChange: (e) => {
@@ -376,39 +376,39 @@ function Ce({ filter: e, operatorMeta: t, combo: n }) {
376
376
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text",
377
377
  autoFocus: !0
378
378
  })
379
- }), /* @__PURE__ */ H(Se, {
379
+ }), /* @__PURE__ */ W(Ce, {
380
380
  filter: e,
381
381
  combo: n
382
382
  })]
383
383
  })]
384
384
  }),
385
- t?.supportsMultipleValues && /* @__PURE__ */ H("p", {
385
+ t?.supportsMultipleValues && /* @__PURE__ */ W("p", {
386
386
  className: "dc:text-xs text-dc-text-muted",
387
387
  children: r("filter.modal.multiSelectHint")
388
388
  })
389
389
  ]
390
390
  });
391
391
  }
392
- function we({ field: e, dateRange: t, combo: n, inputs: r }) {
393
- let { t: i } = D(), { filter: a, operatorMeta: o, shouldShowDateRange: s, shouldShowComboBox: c } = e, { onBetweenStart: l, onBetweenEnd: u, onDate: d, onDirect: f } = r;
394
- return o?.requiresValues ? s ? /* @__PURE__ */ H(xe, {
392
+ function Te({ field: e, dateRange: t, combo: n, inputs: r }) {
393
+ let { t: i } = O(), { filter: a, operatorMeta: o, shouldShowDateRange: s, shouldShowComboBox: c } = e, { onBetweenStart: l, onBetweenEnd: u, onDate: d, onDirect: f } = r;
394
+ return o?.requiresValues ? s ? /* @__PURE__ */ W(Se, {
395
395
  filter: a,
396
396
  dateRange: t
397
- }) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ U("div", {
397
+ }) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ G("div", {
398
398
  className: "dc:flex dc:items-center dc:gap-2",
399
399
  children: [
400
- /* @__PURE__ */ H("input", {
400
+ /* @__PURE__ */ W("input", {
401
401
  type: "number",
402
402
  value: a.values?.[0] ?? "",
403
403
  onChange: l,
404
404
  placeholder: i("filter.modal.min"),
405
405
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
406
406
  }),
407
- /* @__PURE__ */ H("span", {
407
+ /* @__PURE__ */ W("span", {
408
408
  className: "dc:text-sm text-dc-text-muted",
409
409
  children: i("filter.modal.to")
410
410
  }),
411
- /* @__PURE__ */ H("input", {
411
+ /* @__PURE__ */ W("input", {
412
412
  type: "number",
413
413
  value: a.values?.[1] ?? "",
414
414
  onChange: u,
@@ -416,96 +416,96 @@ function we({ field: e, dateRange: t, combo: n, inputs: r }) {
416
416
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
417
417
  })
418
418
  ]
419
- }) : o?.valueType === "date" ? /* @__PURE__ */ H("input", {
419
+ }) : o?.valueType === "date" ? /* @__PURE__ */ W("input", {
420
420
  type: "date",
421
421
  value: a.values?.[0] || "",
422
422
  onChange: d,
423
423
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
424
- }) : o?.valueType === "number" ? /* @__PURE__ */ H("input", {
424
+ }) : o?.valueType === "number" ? /* @__PURE__ */ W("input", {
425
425
  type: "number",
426
426
  value: a.values?.[0] ?? "",
427
427
  onChange: f,
428
428
  placeholder: i("filter.modal.enterNumber"),
429
429
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
430
- }) : c ? /* @__PURE__ */ H(Ce, {
430
+ }) : c ? /* @__PURE__ */ W(we, {
431
431
  filter: a,
432
432
  operatorMeta: o,
433
433
  combo: n
434
- }) : /* @__PURE__ */ H("input", {
434
+ }) : /* @__PURE__ */ W("input", {
435
435
  type: "text",
436
436
  value: a.values?.[0] ?? "",
437
437
  onChange: f,
438
438
  placeholder: i("filter.modal.enterValue"),
439
439
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text placeholder-dc-text-muted"
440
- }) : /* @__PURE__ */ H("div", {
440
+ }) : /* @__PURE__ */ W("div", {
441
441
  className: "dc:text-sm text-dc-text-muted dc:italic dc:py-2",
442
442
  children: i("filter.modal.noValueRequired")
443
443
  });
444
444
  }
445
445
  //#endregion
446
446
  //#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
447
- var Te = l("close"), Ee = l("chevronDown"), De = l("dimension"), Oe = l("timeDimension"), ke = l("measure");
448
- function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
449
- let { t: a } = D(), [o, s] = B(e), [c, l] = B(!1), [u, d] = B(!1), [f, p] = B(!1), [m, h] = B("this_month"), [g, v] = B(1), [y, b] = B(""), [S, w] = B(null), [T, E] = B(-1), ee = z(null), ne = z(null), re = se(y, 300), ie = x(o.member, t), oe = ie?.field.type || "string", le = oe === "time", ue = ie?.fieldType === "measure", de = ie?.fieldType === "dimension", fe = C(o.member, t), j = O[o.operator], M = k(oe), N = le && o.operator === "inDateRange", P = I(() => [
447
+ var Ee = l("close"), De = l("chevronDown"), Oe = l("dimension"), ke = l("timeDimension"), Ae = l("measure");
448
+ function je({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
449
+ let { t: a } = O(), [o, s] = H(e), [c, l] = H(!1), [u, d] = H(!1), [f, p] = H(!1), [m, h] = H("this_month"), [g, _] = H(1), [y, b] = H(""), [x, C] = H(null), [T, E] = H(-1), D = V(null), k = V(null), ne = N(y, 300), re = S(o.member, t), ie = re?.field.type || "string", M = ie === "time", se = re?.fieldType === "measure", P = re?.fieldType === "dimension", ce = w(o.member, t), F = A[o.operator], I = ee(ie), le = M && o.operator === "inDateRange", L = R(() => [
450
450
  "equals",
451
451
  "notEquals",
452
452
  "in",
453
453
  "notIn"
454
- ].includes(o.operator) && de && !le, [
454
+ ].includes(o.operator) && P && !M, [
455
455
  o.operator,
456
- de,
457
- le
458
- ])(), { values: F, loading: pe, error: me, searchValues: W } = ce(o.member, P);
459
- L(() => {
456
+ P,
457
+ M
458
+ ])(), { values: ue, loading: de, error: fe, searchValues: K } = oe(o.member, L);
459
+ z(() => {
460
460
  if (!i) {
461
- w(null);
461
+ C(null);
462
462
  return;
463
463
  }
464
464
  let e = i.getBoundingClientRect(), t = e.top, n = window.innerHeight - e.bottom, r = t > 500 || t > n, a = Math.max(16, Math.min(e.left, window.innerWidth - 400 - 16));
465
- w(r ? {
465
+ C(r ? {
466
466
  bottom: window.innerHeight - e.top + 8,
467
467
  left: a
468
468
  } : {
469
469
  top: e.bottom + 8,
470
470
  left: a
471
471
  });
472
- }, [i]), L(() => {
472
+ }, [i]), z(() => {
473
473
  let e = (e) => {
474
- ee.current && !ee.current.contains(e.target) && (l(!1), d(!1), p(!1));
474
+ D.current && !D.current.contains(e.target) && (l(!1), d(!1), p(!1));
475
475
  };
476
476
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
477
- }, []), L(() => {
478
- u && P && W && W("", !0), u || E(-1);
477
+ }, []), z(() => {
478
+ u && L && K && K("", !0), u || E(-1);
479
479
  }, [
480
480
  u,
481
- P,
482
- W
483
- ]), L(() => {
484
- if (T >= 0 && ne.current) {
485
- let e = ne.current.children[T];
481
+ L,
482
+ K
483
+ ]), z(() => {
484
+ if (T >= 0 && k.current) {
485
+ let e = k.current.children[T];
486
486
  e && e.scrollIntoView({ block: "nearest" });
487
487
  }
488
- }, [T]), L(() => {
489
- u && P && W && re !== void 0 && W(re);
488
+ }, [T]), z(() => {
489
+ u && L && K && ne !== void 0 && K(ne);
490
490
  }, [
491
- re,
491
+ ne,
492
492
  u,
493
- P,
494
- W
495
- ]), L(() => {
496
- if (!N) return;
497
- let e = _(o.dateRange);
498
- e && (h(e.rangeType), e.numberValue !== void 0 && v(e.numberValue));
499
- }, [o.dateRange, N]);
500
- let he = I((e) => {
493
+ L,
494
+ K
495
+ ]), z(() => {
496
+ if (!le) return;
497
+ let e = v(o.dateRange);
498
+ e && (h(e.rangeType), e.numberValue !== void 0 && _(e.numberValue));
499
+ }, [o.dateRange, le]);
500
+ let pe = R((e) => {
501
501
  s({
502
502
  member: o.member,
503
503
  operator: e,
504
504
  values: []
505
505
  }), l(!1);
506
- }, [o.member]), ge = I((e, t) => {
506
+ }, [o.member]), q = R((e, t) => {
507
507
  let n = t?.shiftKey ?? !1, r = o.values || [];
508
- j?.supportsMultipleValues ? (r.includes(e) ? s({
508
+ F?.supportsMultipleValues ? (r.includes(e) ? s({
509
509
  ...o,
510
510
  values: r.filter((t) => t !== e)
511
511
  }) : s({
@@ -515,27 +515,27 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
515
515
  ...o,
516
516
  values: [e]
517
517
  }), d(!1)), b(""), E(-1);
518
- }, [o, j?.supportsMultipleValues]), _e = I((e) => {
518
+ }, [o, F?.supportsMultipleValues]), me = R((e) => {
519
519
  let t = (o.values || []).filter((t) => t !== e);
520
520
  s({
521
521
  ...o,
522
522
  values: t
523
523
  });
524
- }, [o]), ve = I((e) => {
525
- let t = q(e.key, u, F.length, T);
524
+ }, [o]), he = R((e) => {
525
+ let t = ye(e.key, u, ue.length, T);
526
526
  if (t.type !== "none") {
527
527
  if (e.preventDefault(), t.type === "highlight") return E(t.index);
528
- if (t.type === "select") return ge(F[t.index], { shiftKey: e.shiftKey });
528
+ if (t.type === "select") return q(ue[t.index], { shiftKey: e.shiftKey });
529
529
  d(!1), E(-1);
530
530
  }
531
531
  }, [
532
532
  u,
533
- F,
533
+ ue,
534
534
  T,
535
- ge
536
- ]), ye = I((e) => {
535
+ q
536
+ ]), ge = R((e) => {
537
537
  let t = e.target.value;
538
- if (j?.valueType === "number") {
538
+ if (F?.valueType === "number") {
539
539
  let e = parseFloat(t);
540
540
  isNaN(e) ? (t === "" || t === "-") && s({
541
541
  ...o,
@@ -548,60 +548,60 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
548
548
  ...o,
549
549
  values: t ? [t] : []
550
550
  });
551
- }, [o, j?.valueType]), G = I((e) => {
551
+ }, [o, F?.valueType]), _e = R((e) => {
552
552
  let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
553
553
  s({
554
554
  ...o,
555
555
  values: n
556
556
  });
557
- }, [o]), K = I((e) => {
557
+ }, [o]), ve = R((e) => {
558
558
  let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
559
559
  s({
560
560
  ...o,
561
561
  values: n
562
562
  });
563
- }, [o]), J = I((e) => {
563
+ }, [o]), J = R((e) => {
564
564
  let t = e.target.value;
565
565
  s({
566
566
  ...o,
567
567
  values: t ? [t] : []
568
568
  });
569
- }, [o]), be = I((e) => {
569
+ }, [o]), be = R((e) => {
570
570
  h(e), p(!1);
571
571
  let t;
572
572
  if (e === "custom") {
573
573
  let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
574
574
  t = [e, e];
575
- } else t = te(e) ? A(e, g) : A(e);
575
+ } else t = te(e) ? j(e, g) : j(e);
576
576
  s({
577
577
  ...o,
578
578
  dateRange: t
579
579
  });
580
- }, [o, g]), xe = I((e) => {
581
- if (v(e), te(m)) {
582
- let t = A(m, e);
580
+ }, [o, g]), xe = R((e) => {
581
+ if (_(e), te(m)) {
582
+ let t = j(m, e);
583
583
  s({
584
584
  ...o,
585
585
  dateRange: t
586
586
  });
587
587
  }
588
- }, [o, m]), Se = I((e) => {
588
+ }, [o, m]), Se = R((e) => {
589
589
  let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
590
590
  s({
591
591
  ...o,
592
592
  dateRange: [t, n]
593
593
  });
594
- }, [o]), Ce = I((e) => {
594
+ }, [o]), Ce = R((e) => {
595
595
  let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : ["", o.dateRange || ""])[0] || t;
596
596
  s({
597
597
  ...o,
598
598
  dateRange: [n, t]
599
599
  });
600
- }, [o]), Ae = a(M.find((e) => e.operator === o.operator)?.label || o.operator), je = a(ae.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Me = {
600
+ }, [o]), we = a(I.find((e) => e.operator === o.operator)?.label || o.operator), je = a(ae.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Me = {
601
601
  filter: o,
602
- operatorMeta: j,
603
- shouldShowDateRange: N,
604
- shouldShowComboBox: P
602
+ operatorMeta: F,
603
+ shouldShowDateRange: le,
604
+ shouldShowComboBox: L
605
605
  }, Ne = {
606
606
  rangeType: m,
607
607
  numberValue: g,
@@ -612,46 +612,46 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
612
612
  onNumberValueChange: xe,
613
613
  onCustomStartDate: Se,
614
614
  onCustomEndDate: Ce,
615
- onOpen: I(() => {
615
+ onOpen: R(() => {
616
616
  l(!1), d(!1);
617
617
  }, [])
618
618
  }, Pe = {
619
619
  isOpen: u,
620
- options: F,
621
- loading: pe,
622
- error: me,
620
+ options: ue,
621
+ loading: de,
622
+ error: fe,
623
623
  searchText: y,
624
624
  highlightedIndex: T,
625
- listRef: ne,
625
+ listRef: k,
626
626
  onSearchTextChange: b,
627
627
  onHighlightedIndexChange: E,
628
- onSelect: ge,
629
- onRemove: _e,
630
- onKeyDown: ve,
631
- onOpen: I(() => {
628
+ onSelect: q,
629
+ onRemove: me,
630
+ onKeyDown: he,
631
+ onOpen: R(() => {
632
632
  l(!1), p(!1), d((e) => !e);
633
633
  }, [])
634
- }, Fe = R(() => ({
635
- onBetweenStart: G,
636
- onBetweenEnd: K,
634
+ }, Fe = B(() => ({
635
+ onBetweenStart: _e,
636
+ onBetweenEnd: ve,
637
637
  onDate: J,
638
- onDirect: ye
638
+ onDirect: ge
639
639
  }), [
640
- G,
641
- K,
640
+ _e,
641
+ ve,
642
642
  J,
643
- ye
644
- ]), Ie = le ? Oe : ue ? ke : De;
645
- return /* @__PURE__ */ H(V, { children: /* @__PURE__ */ H("div", {
646
- className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${S ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
643
+ ge
644
+ ]), Ie = M ? ke : se ? Ae : Oe;
645
+ return /* @__PURE__ */ W(U, { children: /* @__PURE__ */ W("div", {
646
+ className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${x ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
647
647
  onClick: r,
648
- children: /* @__PURE__ */ U("div", {
649
- ref: ee,
650
- className: S ? "bg-dc-surface rounded-lg border border-dc-border" : "bg-dc-surface rounded-lg border border-dc-border max-w-md w-full",
648
+ children: /* @__PURE__ */ G("div", {
649
+ ref: D,
650
+ className: x ? "bg-dc-surface rounded-lg border border-dc-border" : "bg-dc-surface rounded-lg border border-dc-border max-w-md w-full",
651
651
  style: {
652
- ...S ? {
652
+ ...x ? {
653
653
  position: "fixed",
654
- ...S,
654
+ ...x,
655
655
  maxWidth: "400px",
656
656
  width: "100%"
657
657
  } : {},
@@ -659,57 +659,57 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
659
659
  },
660
660
  onClick: (e) => e.stopPropagation(),
661
661
  children: [
662
- /* @__PURE__ */ U("div", {
662
+ /* @__PURE__ */ G("div", {
663
663
  className: "dc:flex dc:items-center dc:justify-between dc:p-4 dc:border-b border-dc-border",
664
- children: [/* @__PURE__ */ H("h2", {
664
+ children: [/* @__PURE__ */ W("h2", {
665
665
  className: "dc:text-lg dc:font-semibold text-dc-text",
666
666
  children: a("filter.modal.title")
667
- }), /* @__PURE__ */ H("button", {
667
+ }), /* @__PURE__ */ W("button", {
668
668
  onClick: r,
669
669
  className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
670
- children: /* @__PURE__ */ H(Te, { className: "dc:w-5 dc:h-5" })
670
+ children: /* @__PURE__ */ W(Ee, { className: "dc:w-5 dc:h-5" })
671
671
  })]
672
672
  }),
673
- /* @__PURE__ */ U("div", {
673
+ /* @__PURE__ */ G("div", {
674
674
  className: "dc:p-4 dc:space-y-4",
675
675
  children: [
676
- /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
676
+ /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("label", {
677
677
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
678
678
  children: a("filter.modal.fieldLabel")
679
- }), /* @__PURE__ */ U("div", {
679
+ }), /* @__PURE__ */ G("div", {
680
680
  className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded",
681
- children: [/* @__PURE__ */ H(Ie, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ H("span", {
681
+ children: [/* @__PURE__ */ W(Ie, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ W("span", {
682
682
  className: "dc:text-sm dc:font-medium text-dc-text",
683
- children: fe
683
+ children: ce
684
684
  })]
685
685
  })] }),
686
- /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
686
+ /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("label", {
687
687
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
688
688
  children: a("filter.modal.operatorLabel")
689
- }), /* @__PURE__ */ U("div", {
689
+ }), /* @__PURE__ */ G("div", {
690
690
  className: "dc:relative",
691
- children: [/* @__PURE__ */ U("button", {
691
+ children: [/* @__PURE__ */ G("button", {
692
692
  onClick: () => {
693
693
  d(!1), p(!1), l(!c);
694
694
  },
695
695
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
696
- children: [/* @__PURE__ */ H("span", {
696
+ children: [/* @__PURE__ */ W("span", {
697
697
  className: "dc:truncate",
698
- children: Ae
699
- }), /* @__PURE__ */ H(Ee, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
700
- }), c && /* @__PURE__ */ H("div", {
698
+ children: we
699
+ }), /* @__PURE__ */ W(De, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
700
+ }), c && /* @__PURE__ */ W("div", {
701
701
  className: "dc:absolute dc:z-[60] dc:left-0 dc:right-0 dc:mt-1 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
702
- children: M.map((e) => /* @__PURE__ */ H("button", {
703
- onClick: () => he(e.operator),
702
+ children: I.map((e) => /* @__PURE__ */ W("button", {
703
+ onClick: () => pe(e.operator),
704
704
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm hover:bg-dc-surface-hover ${e.operator === o.operator ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text"}`,
705
705
  children: a(e.label)
706
706
  }, e.operator))
707
707
  })]
708
708
  })] }),
709
- /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
709
+ /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("label", {
710
710
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
711
711
  children: a("filter.modal.valueLabel")
712
- }), /* @__PURE__ */ H(we, {
712
+ }), /* @__PURE__ */ W(Te, {
713
713
  field: Me,
714
714
  dateRange: Ne,
715
715
  combo: Pe,
@@ -717,13 +717,13 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
717
717
  })] })
718
718
  ]
719
719
  }),
720
- /* @__PURE__ */ U("div", {
720
+ /* @__PURE__ */ G("div", {
721
721
  className: "dc:flex dc:items-center dc:justify-end dc:gap-2 dc:p-4 dc:border-t border-dc-border",
722
- children: [/* @__PURE__ */ H("button", {
722
+ children: [/* @__PURE__ */ W("button", {
723
723
  onClick: r,
724
724
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-text-secondary hover:text-dc-text dc:transition-colors",
725
725
  children: a("common.actions.cancel")
726
- }), /* @__PURE__ */ H("button", {
726
+ }), /* @__PURE__ */ W("button", {
727
727
  onClick: () => n(o),
728
728
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-primary-content bg-dc-primary hover:bg-dc-primary-hover dc:rounded dc:transition-colors",
729
729
  children: a("common.actions.save")
@@ -735,47 +735,47 @@ function Ae({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
735
735
  }
736
736
  //#endregion
737
737
  //#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
738
- var je = l("close"), Me = l("dimension"), Ne = l("timeDimension"), Pe = l("measure");
739
- function Fe({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
740
- let { t: i } = D(), [a, o] = B(!1), s = z(null), c = x(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = C(e.member, t), f = O[e.operator], p = f?.label ? i(f.label) : e.operator, m = Ie(e, f, i), h = l ? Ne : u ? Pe : Me;
741
- return /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ U("div", {
738
+ var Me = l("close"), Ne = l("dimension"), Pe = l("timeDimension"), Fe = l("measure");
739
+ function Ie({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
740
+ let { t: i } = O(), [a, o] = H(!1), s = V(null), c = S(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = w(e.member, t), f = A[e.operator], p = f?.label ? i(f.label) : e.operator, m = Le(e, f, i), h = l ? Pe : u ? Fe : Ne;
741
+ return /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ G("div", {
742
742
  className: "dc:flex dc:items-start dc:gap-2 dc:px-2 dc:py-1.5 bg-dc-surface-secondary dc:rounded-lg dc:group hover:bg-dc-surface-tertiary dc:transition-all dc:duration-150 dc:w-full",
743
743
  children: [
744
- /* @__PURE__ */ H("span", {
744
+ /* @__PURE__ */ W("span", {
745
745
  className: `dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded ${l ? "bg-dc-time-dimension" : u ? "bg-dc-measure" : "bg-dc-dimension"} ${l ? "text-dc-time-dimension-text" : u ? "text-dc-measure-text" : "text-dc-dimension-text"} dc:flex-shrink-0 dc:mt-0.5`,
746
- children: h && /* @__PURE__ */ H(h, { className: "dc:w-4 dc:h-4" })
746
+ children: h && /* @__PURE__ */ W(h, { className: "dc:w-4 dc:h-4" })
747
747
  }),
748
- /* @__PURE__ */ H("button", {
748
+ /* @__PURE__ */ W("button", {
749
749
  ref: s,
750
750
  onClick: () => o(!0),
751
751
  className: "dc:flex-1 dc:min-w-0 dc:text-left",
752
752
  title: `${d} ${p} ${m}`,
753
- children: /* @__PURE__ */ U("div", {
753
+ children: /* @__PURE__ */ G("div", {
754
754
  className: "dc:text-sm text-dc-text dc:break-words",
755
755
  children: [
756
- /* @__PURE__ */ H("span", {
756
+ /* @__PURE__ */ W("span", {
757
757
  className: "dc:font-medium",
758
758
  children: d
759
759
  }),
760
- /* @__PURE__ */ H("span", {
760
+ /* @__PURE__ */ W("span", {
761
761
  className: "text-dc-text-muted dc:mx-1",
762
762
  children: p
763
763
  }),
764
- /* @__PURE__ */ H("span", {
764
+ /* @__PURE__ */ W("span", {
765
765
  className: "text-dc-primary",
766
766
  children: m
767
767
  })
768
768
  ]
769
769
  })
770
770
  }),
771
- /* @__PURE__ */ H("button", {
771
+ /* @__PURE__ */ W("button", {
772
772
  onClick: n,
773
773
  className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:opacity-100 dc:sm:opacity-0 dc:sm:group-hover:opacity-100 dc:transition-opacity dc:flex-shrink-0 dc:mt-0.5",
774
774
  title: i("filter.removeButton.title"),
775
- children: je && /* @__PURE__ */ H(je, { className: "dc:w-4 dc:h-4" })
775
+ children: Me && /* @__PURE__ */ W(Me, { className: "dc:w-4 dc:h-4" })
776
776
  })
777
777
  ]
778
- }), a && /* @__PURE__ */ H(Ae, {
778
+ }), a && /* @__PURE__ */ W(je, {
779
779
  filter: e,
780
780
  schema: t,
781
781
  onSave: (e) => {
@@ -785,7 +785,7 @@ function Fe({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
785
785
  anchorElement: s.current
786
786
  })] });
787
787
  }
788
- function Ie(e, t, n) {
788
+ function Le(e, t, n) {
789
789
  if (!t?.requiresValues) return "";
790
790
  if (e.dateRange) return Array.isArray(e.dateRange) ? `${e.dateRange[0]} to ${e.dateRange[1]}` : e.dateRange;
791
791
  let r = e.values || [];
@@ -793,34 +793,34 @@ function Ie(e, t, n) {
793
793
  }
794
794
  //#endregion
795
795
  //#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
796
- var Le = l("add"), Re = l("close");
797
- function ze(e) {
796
+ var Re = l("add"), ze = l("close");
797
+ function Be(e) {
798
798
  return "member" in e && typeof e.member == "string";
799
799
  }
800
- function Be(e) {
800
+ function Ve(e) {
801
801
  return "type" in e && (e.type === "and" || e.type === "or");
802
802
  }
803
- function Ve({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
804
- let { t: s } = D(), [c, l] = B(!1), u = z(null);
805
- L(() => {
803
+ function He({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
804
+ let { t: s } = O(), [c, l] = H(!1), u = V(null);
805
+ z(() => {
806
806
  let e = (e) => {
807
807
  u.current && !u.current.contains(e.target) && l(!1);
808
808
  };
809
809
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
810
810
  }, []);
811
- let d = I(() => {
811
+ let d = R(() => {
812
812
  let t = e.type === "and" ? "or" : "and";
813
813
  n({
814
814
  ...e,
815
815
  type: t
816
816
  });
817
- }, [e, n]), f = I((t, r) => {
817
+ }, [e, n]), f = R((t, r) => {
818
818
  let i = [...e.filters];
819
819
  i[t] = r, n({
820
820
  ...e,
821
821
  filters: i
822
822
  });
823
- }, [e, n]), p = I((t) => {
823
+ }, [e, n]), p = R((t) => {
824
824
  let i = e.filters.filter((e, n) => n !== t);
825
825
  i.length === 0 ? r() : n({
826
826
  ...e,
@@ -831,7 +831,7 @@ function Ve({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
831
831
  n,
832
832
  r,
833
833
  a
834
- ]), m = I((t) => {
834
+ ]), m = R((t) => {
835
835
  let r = {
836
836
  type: t,
837
837
  filters: []
@@ -840,23 +840,23 @@ function Ve({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
840
840
  ...e,
841
841
  filters: [...e.filters, r]
842
842
  }), l(!1);
843
- }, [e, n]), h = I(() => {
843
+ }, [e, n]), h = R(() => {
844
844
  i([]), l(!1);
845
- }, [i]), g = I((e) => (t = []) => {
845
+ }, [i]), g = R((e) => (t = []) => {
846
846
  i([e, ...t]);
847
847
  }, [i]), _ = () => a % 2 == 0 ? "border-dc-border" : "border-dc-border dark:border-dc-border", v = () => e.type === "and" ? "bg-dc-info-bg/50" : "bg-dc-warning-bg/50", y = e.filters.length, b = s(y === 1 ? "filter.group.condition" : "filter.group.conditions");
848
- return /* @__PURE__ */ U("div", {
848
+ return /* @__PURE__ */ G("div", {
849
849
  className: `dc:border ${_()} dc:rounded-lg bg-dc-surface dc:w-full`,
850
- children: [/* @__PURE__ */ U("div", {
850
+ children: [/* @__PURE__ */ G("div", {
851
851
  className: `dc:flex dc:items-center dc:justify-between dc:px-2 dc:py-1.5 dc:border-b border-dc-border/50 dc:rounded-t-lg ${v()}`,
852
- children: [/* @__PURE__ */ U("div", {
852
+ children: [/* @__PURE__ */ G("div", {
853
853
  className: "dc:flex dc:items-center dc:gap-2",
854
- children: [/* @__PURE__ */ H("button", {
854
+ children: [/* @__PURE__ */ W("button", {
855
855
  onClick: d,
856
856
  className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-semibold dc:rounded dc:transition-colors ${e.type === "and" ? "bg-dc-info-bg text-dc-info dc:hover:opacity-80" : "bg-dc-warning-bg text-dc-warning dc:hover:opacity-80"}`,
857
857
  title: `Click to switch to ${e.type === "and" ? "OR" : "AND"}`,
858
858
  children: e.type.toUpperCase()
859
- }), /* @__PURE__ */ U("span", {
859
+ }), /* @__PURE__ */ G("span", {
860
860
  className: "dc:text-xs text-dc-text-muted",
861
861
  children: [
862
862
  y,
@@ -864,61 +864,61 @@ function Ve({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
864
864
  b
865
865
  ]
866
866
  })]
867
- }), /* @__PURE__ */ U("div", {
867
+ }), /* @__PURE__ */ G("div", {
868
868
  className: "dc:flex dc:items-center dc:gap-1",
869
- children: [/* @__PURE__ */ U("div", {
869
+ children: [/* @__PURE__ */ G("div", {
870
870
  className: "dc:relative",
871
871
  ref: u,
872
- children: [/* @__PURE__ */ H("button", {
872
+ children: [/* @__PURE__ */ W("button", {
873
873
  onClick: () => l(!c),
874
874
  className: "dc:p-1 text-dc-text-secondary hover:text-dc-primary hover:bg-dc-surface-hover dc:rounded dc:transition-colors",
875
875
  title: "Add condition",
876
- children: /* @__PURE__ */ H(Le, { className: "dc:w-4 dc:h-4" })
877
- }), c && /* @__PURE__ */ U("div", {
876
+ children: /* @__PURE__ */ W(Re, { className: "dc:w-4 dc:h-4" })
877
+ }), c && /* @__PURE__ */ G("div", {
878
878
  className: "dc:absolute dc:right-0 dc:mt-1 dc:z-40 bg-dc-surface dc:border border-dc-border dc:rounded dc:shadow-lg dc:py-1 dc:min-w-[120px]",
879
879
  children: [
880
- /* @__PURE__ */ H("button", {
880
+ /* @__PURE__ */ W("button", {
881
881
  onClick: h,
882
882
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
883
883
  children: s("filter.group.addFilter")
884
884
  }),
885
- /* @__PURE__ */ H("button", {
885
+ /* @__PURE__ */ W("button", {
886
886
  onClick: () => m("and"),
887
887
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
888
888
  children: s("filter.group.addAndGroup")
889
889
  }),
890
- /* @__PURE__ */ H("button", {
890
+ /* @__PURE__ */ W("button", {
891
891
  onClick: () => m("or"),
892
892
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
893
893
  children: s("filter.group.addOrGroup")
894
894
  })
895
895
  ]
896
896
  })]
897
- }), !o && /* @__PURE__ */ H("button", {
897
+ }), !o && /* @__PURE__ */ W("button", {
898
898
  onClick: r,
899
899
  className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:transition-colors",
900
900
  title: s("filter.group.removeGroup"),
901
- children: /* @__PURE__ */ H(Re, { className: "dc:w-4 dc:h-4" })
901
+ children: /* @__PURE__ */ W(ze, { className: "dc:w-4 dc:h-4" })
902
902
  })]
903
903
  })]
904
- }), /* @__PURE__ */ H("div", {
904
+ }), /* @__PURE__ */ W("div", {
905
905
  className: "dc:p-1.5 dc:flex dc:flex-wrap dc:gap-2",
906
- children: e.filters.length === 0 ? /* @__PURE__ */ U("div", {
906
+ children: e.filters.length === 0 ? /* @__PURE__ */ G("div", {
907
907
  className: "dc:text-center dc:py-3",
908
- children: [/* @__PURE__ */ H("p", {
908
+ children: [/* @__PURE__ */ W("p", {
909
909
  className: "dc:text-xs text-dc-text-muted dc:mb-1",
910
910
  children: s("filter.group.empty")
911
- }), /* @__PURE__ */ H("button", {
911
+ }), /* @__PURE__ */ W("button", {
912
912
  onClick: () => i([]),
913
913
  className: "dc:text-xs text-dc-primary dc:hover:underline",
914
914
  children: s("filter.group.addFilterLink")
915
915
  })]
916
- }) : e.filters.map((e, n) => ze(e) ? /* @__PURE__ */ H(Fe, {
916
+ }) : e.filters.map((e, n) => Be(e) ? /* @__PURE__ */ W(Ie, {
917
917
  filter: e,
918
918
  schema: t,
919
919
  onUpdate: (e) => f(n, e),
920
920
  onRemove: () => p(n)
921
- }, `filter-${n}`) : Be(e) ? /* @__PURE__ */ H(Ve, {
921
+ }, `filter-${n}`) : Ve(e) ? /* @__PURE__ */ W(He, {
922
922
  group: e,
923
923
  schema: t,
924
924
  onUpdate: (e) => f(n, e),
@@ -931,28 +931,28 @@ function Ve({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
931
931
  }
932
932
  //#endregion
933
933
  //#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
934
- var He = l("add");
935
- function Ue(e) {
934
+ var Ue = l("add");
935
+ function We(e) {
936
936
  return "member" in e && typeof e.member == "string";
937
937
  }
938
- function We(e) {
938
+ function Ge(e) {
939
939
  return "type" in e && (e.type === "and" || e.type === "or");
940
940
  }
941
- function Ge(e) {
941
+ function Ke(e) {
942
942
  let t = 0;
943
- for (let n of e) Ue(n) ? t++ : We(n) && (t += Ge(n.filters));
943
+ for (let n of e) We(n) ? t++ : Ge(n) && (t += Ke(n.filters));
944
944
  return t;
945
945
  }
946
- function Ke(e) {
946
+ function qe(e) {
947
947
  let t = [];
948
- for (let n of e) Ue(n) ? t.push(n.member) : We(n) && t.push(...Ke(n.filters));
948
+ for (let n of e) We(n) ? t.push(n.member) : Ge(n) && t.push(...qe(n.filters));
949
949
  return t;
950
950
  }
951
- function qe(e, t, n) {
952
- if (t.length === 0) return e.length === 0 ? [n] : e.length === 1 && Ue(e[0]) ? [{
951
+ function Je(e, t, n) {
952
+ if (t.length === 0) return e.length === 0 ? [n] : e.length === 1 && We(e[0]) ? [{
953
953
  type: "and",
954
954
  filters: [e[0], n]
955
- }] : e.length === 1 && We(e[0]) ? [{
955
+ }] : e.length === 1 && Ge(e[0]) ? [{
956
956
  ...e[0],
957
957
  filters: [...e[0].filters, n]
958
958
  }] : [{
@@ -960,38 +960,38 @@ function qe(e, t, n) {
960
960
  filters: [...e, n]
961
961
  }];
962
962
  let [r, ...i] = t, a = [...e], o = a[r];
963
- return We(o) && (i.length === 0 ? a[r] = {
963
+ return Ge(o) && (i.length === 0 ? a[r] = {
964
964
  ...o,
965
965
  filters: [...o.filters, n]
966
966
  } : a[r] = {
967
967
  ...o,
968
- filters: qe(o.filters, i, n)
968
+ filters: Je(o.filters, i, n)
969
969
  }), a;
970
970
  }
971
- function Je({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
972
- let { t: a } = D(), [o, s] = B(!1), [c, l] = B(!1), u = z([]), d = Ge(e), f = I((e) => {
971
+ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
972
+ let { t: a } = O(), [o, s] = H(!1), [c, l] = H(!1), u = V([]), d = Ke(e), f = R((e) => {
973
973
  e.preventDefault(), e.stopPropagation(), l(!0);
974
- }, []), m = I((e) => {
974
+ }, []), p = R((e) => {
975
975
  e.preventDefault(), e.stopPropagation(), l(!1);
976
- }, []), h = I((e) => {
976
+ }, []), h = R((e) => {
977
977
  e.preventDefault(), e.stopPropagation(), l(!1);
978
978
  try {
979
979
  let t = JSON.parse(e.dataTransfer.getData("text/plain"));
980
980
  t.field && r && r(t.field);
981
981
  } catch {}
982
- }, [r]), g = Ke(e), _ = I((t, r, i) => {
982
+ }, [r]), g = qe(e), _ = R((t, r, i) => {
983
983
  let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
984
984
  member: t.name,
985
985
  operator: o,
986
986
  values: []
987
987
  };
988
- a && o === "inDateRange" && (c.dateRange = A("this_month")), n(qe(e, u.current, c)), s(!1), u.current = [];
989
- }, [e, n]), v = I((t, r) => {
988
+ a && o === "inDateRange" && (c.dateRange = j("this_month")), n(Je(e, u.current, c)), s(!1), u.current = [];
989
+ }, [e, n]), v = R((t, r) => {
990
990
  let i = [...e];
991
991
  i[t] = r, n(i);
992
- }, [e, n]), y = I((t) => {
992
+ }, [e, n]), y = R((t) => {
993
993
  let r = e.filter((e, n) => n !== t);
994
- if (r.length === 1 && We(r[0])) {
994
+ if (r.length === 1 && Ge(r[0])) {
995
995
  let e = r[0];
996
996
  if (e.filters.length === 1) {
997
997
  n([e.filters[0]]);
@@ -999,20 +999,20 @@ function Je({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
999
999
  }
1000
1000
  }
1001
1001
  n(r);
1002
- }, [e, n]), b = I(() => {
1002
+ }, [e, n]), b = R(() => {
1003
1003
  n([]);
1004
- }, [n]), x = I(() => {
1004
+ }, [n]), x = R(() => {
1005
1005
  u.current = [], s(!0);
1006
- }, []), S = I((e) => (t = []) => {
1006
+ }, []), S = R((e) => (t = []) => {
1007
1007
  u.current = [...e, ...t], s(!0);
1008
1008
  }, []), C = (n, r, i = []) => {
1009
1009
  let a = [...i, r];
1010
- return Ue(n) ? /* @__PURE__ */ H(Fe, {
1010
+ return We(n) ? /* @__PURE__ */ W(Ie, {
1011
1011
  filter: n,
1012
1012
  schema: t,
1013
1013
  onUpdate: (e) => v(r, e),
1014
1014
  onRemove: () => y(r)
1015
- }, `filter-${a.join("-")}`) : We(n) ? /* @__PURE__ */ H(Ve, {
1015
+ }, `filter-${a.join("-")}`) : Ge(n) ? /* @__PURE__ */ W(He, {
1016
1016
  group: n,
1017
1017
  schema: t,
1018
1018
  onUpdate: (e) => v(r, e),
@@ -1021,21 +1021,21 @@ function Je({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
1021
1021
  hideRemoveButton: e.length === 1
1022
1022
  }, `group-${a.join("-")}`) : null;
1023
1023
  };
1024
- return /* @__PURE__ */ U("div", { children: [
1025
- /* @__PURE__ */ U("button", {
1024
+ return /* @__PURE__ */ G("div", { children: [
1025
+ /* @__PURE__ */ G("button", {
1026
1026
  onClick: x,
1027
1027
  className: "dc:flex dc:items-center dc:justify-between dc:mb-3 dc:w-full dc:py-1 dc:px-2 dc:-ml-2 dc:rounded-lg hover:bg-dc-primary/10 dc:transition-colors dc:group",
1028
1028
  title: "Add filter",
1029
- children: [/* @__PURE__ */ U(M, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ U("span", {
1029
+ children: [/* @__PURE__ */ G(le, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ G("span", {
1030
1030
  className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
1031
1031
  children: [
1032
1032
  "(",
1033
1033
  d,
1034
1034
  ")"
1035
1035
  ]
1036
- })] }), /* @__PURE__ */ U("div", {
1036
+ })] }), /* @__PURE__ */ G("div", {
1037
1037
  className: "dc:flex dc:items-center dc:gap-2",
1038
- children: [d > 0 && /* @__PURE__ */ H("span", {
1038
+ children: [d > 0 && /* @__PURE__ */ W("span", {
1039
1039
  role: "button",
1040
1040
  tabIndex: 0,
1041
1041
  onClick: (e) => {
@@ -1046,23 +1046,23 @@ function Je({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
1046
1046
  },
1047
1047
  className: "dc:text-xs text-dc-text-muted hover:text-dc-error dc:underline dc:cursor-pointer",
1048
1048
  children: a("filter.section.clearAll")
1049
- }), /* @__PURE__ */ H(He, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
1049
+ }), /* @__PURE__ */ W(Ue, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
1050
1050
  })]
1051
1051
  }),
1052
- /* @__PURE__ */ H("div", {
1052
+ /* @__PURE__ */ W("div", {
1053
1053
  onDragOver: r ? f : void 0,
1054
- onDragLeave: r ? m : void 0,
1054
+ onDragLeave: r ? p : void 0,
1055
1055
  onDrop: r ? h : void 0,
1056
1056
  className: `dc:p-2 dc:-mx-2 dc:rounded-lg dc:border-2 dc:border-dashed dc:transition-all ${c ? "border-dc-primary bg-dc-primary/5" : "border-transparent"}`,
1057
- children: e.length === 0 ? /* @__PURE__ */ H("p", {
1057
+ children: e.length === 0 ? /* @__PURE__ */ W("p", {
1058
1058
  className: `dc:text-sm ${c ? "text-dc-primary dc:font-medium" : "text-dc-text-muted"}`,
1059
1059
  children: a(c ? "filter.section.dropHint" : "filter.section.empty")
1060
- }) : /* @__PURE__ */ H("div", {
1060
+ }) : /* @__PURE__ */ W("div", {
1061
1061
  className: "dc:flex dc:flex-wrap dc:gap-2",
1062
1062
  children: e.map((e, t) => C(e, t))
1063
1063
  })
1064
1064
  }),
1065
- /* @__PURE__ */ H(p, {
1065
+ /* @__PURE__ */ W(m, {
1066
1066
  isOpen: o,
1067
1067
  onClose: () => {
1068
1068
  s(!1), u.current = [];
@@ -1079,30 +1079,30 @@ function Je({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
1079
1079
  function Y(e) {
1080
1080
  return typeof e == "string" ? e : typeof e == "object" && e ? JSON.stringify(e) : String(e ?? "");
1081
1081
  }
1082
- var Ye = {
1082
+ var Xe = {
1083
1083
  good: "bg-dc-success-bg text-dc-success border-dc-success",
1084
1084
  warning: "bg-dc-warning-bg text-dc-warning border-dc-warning",
1085
1085
  critical: "bg-dc-danger-bg text-dc-error border-dc-error"
1086
- }, Xe = {
1086
+ }, Ze = {
1087
1087
  critical: "bg-dc-danger-bg text-dc-error",
1088
1088
  warning: "bg-dc-warning-bg text-dc-warning",
1089
1089
  suggestion: "bg-dc-accent-bg text-dc-accent"
1090
- }, Ze = {
1090
+ }, Qe = {
1091
1091
  high: "text-dc-error",
1092
1092
  medium: "text-dc-warning",
1093
1093
  low: "text-dc-text-muted"
1094
1094
  };
1095
- function Qe({ assessment: e, reason: t }) {
1096
- let { t: n } = D(), r = {
1095
+ function $e({ assessment: e, reason: t }) {
1096
+ let { t: n } = O(), r = {
1097
1097
  good: n("explainAI.assessment.good"),
1098
1098
  warning: n("explainAI.assessment.warning"),
1099
1099
  critical: n("explainAI.assessment.critical")
1100
1100
  };
1101
- return /* @__PURE__ */ U("div", {
1102
- className: `dc:p-4 dc:rounded-lg dc:border ${Ye[e]}`,
1103
- children: [/* @__PURE__ */ H("div", {
1101
+ return /* @__PURE__ */ G("div", {
1102
+ className: `dc:p-4 dc:rounded-lg dc:border ${Xe[e]}`,
1103
+ children: [/* @__PURE__ */ W("div", {
1104
1104
  className: "dc:flex dc:items-center dc:gap-2 dc:mb-1",
1105
- children: /* @__PURE__ */ U("span", {
1105
+ children: /* @__PURE__ */ G("span", {
1106
1106
  className: "dc:font-semibold dc:uppercase dc:text-base",
1107
1107
  children: [
1108
1108
  e === "good" && "✓ ",
@@ -1111,33 +1111,33 @@ function Qe({ assessment: e, reason: t }) {
1111
1111
  r[e]
1112
1112
  ]
1113
1113
  })
1114
- }), /* @__PURE__ */ H("p", {
1114
+ }), /* @__PURE__ */ W("p", {
1115
1115
  className: "dc:text-sm",
1116
1116
  children: Y(t)
1117
1117
  })]
1118
1118
  });
1119
1119
  }
1120
- function $e({ issue: e }) {
1121
- return /* @__PURE__ */ U("div", {
1120
+ function et({ issue: e }) {
1121
+ return /* @__PURE__ */ G("div", {
1122
1122
  className: "dc:flex dc:items-start dc:gap-2 dc:py-2",
1123
- children: [/* @__PURE__ */ U("span", {
1124
- className: `dc:text-sm ${Ze[e.severity]}`,
1123
+ children: [/* @__PURE__ */ G("span", {
1124
+ className: `dc:text-sm ${Qe[e.severity]}`,
1125
1125
  children: [
1126
1126
  e.severity === "high" && "●",
1127
1127
  e.severity === "medium" && "○",
1128
1128
  e.severity === "low" && "○"
1129
1129
  ]
1130
- }), /* @__PURE__ */ H("span", {
1130
+ }), /* @__PURE__ */ W("span", {
1131
1131
  className: "dc:text-sm text-dc-text-secondary",
1132
1132
  children: Y(e.description)
1133
1133
  })]
1134
1134
  });
1135
1135
  }
1136
- function et({ text: e }) {
1137
- let { t } = D(), [n, r] = N.useState(!1), i = N.useRef(null);
1138
- return N.useEffect(() => () => {
1136
+ function tt({ text: e }) {
1137
+ let { t } = O(), [n, r] = L.useState(!1), i = L.useRef(null);
1138
+ return L.useEffect(() => () => {
1139
1139
  i.current && clearTimeout(i.current);
1140
- }, []), /* @__PURE__ */ H("button", {
1140
+ }, []), /* @__PURE__ */ W("button", {
1141
1141
  onClick: async () => {
1142
1142
  try {
1143
1143
  await navigator.clipboard.writeText(e), r(!0), i.current && clearTimeout(i.current), i.current = setTimeout(() => r(!1), 2e3);
@@ -1150,58 +1150,58 @@ function et({ text: e }) {
1150
1150
  children: t(n ? "explainAI.copied" : "explainAI.copy")
1151
1151
  });
1152
1152
  }
1153
- function tt({ rec: e }) {
1154
- let { t } = D(), n = {
1153
+ function nt({ rec: e }) {
1154
+ let { t } = O(), n = {
1155
1155
  index: t("explainAI.type.index"),
1156
1156
  table: t("explainAI.type.table"),
1157
1157
  cube: t("explainAI.type.cube"),
1158
1158
  general: t("explainAI.type.general")
1159
1159
  };
1160
- return /* @__PURE__ */ U("div", {
1160
+ return /* @__PURE__ */ G("div", {
1161
1161
  className: "dc:p-4 dc:border border-dc-border dc:rounded-lg bg-dc-surface",
1162
1162
  children: [
1163
- /* @__PURE__ */ U("div", {
1163
+ /* @__PURE__ */ G("div", {
1164
1164
  className: "dc:flex dc:items-center dc:gap-2 dc:mb-2",
1165
- children: [/* @__PURE__ */ H("span", {
1166
- className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded ${Xe[e.severity]}`,
1165
+ children: [/* @__PURE__ */ W("span", {
1166
+ className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded ${Ze[e.severity]}`,
1167
1167
  children: n[e.type]
1168
- }), /* @__PURE__ */ H("h5", {
1168
+ }), /* @__PURE__ */ W("h5", {
1169
1169
  className: "dc:font-medium text-dc-text",
1170
1170
  children: Y(e.title)
1171
1171
  })]
1172
1172
  }),
1173
- /* @__PURE__ */ H("p", {
1173
+ /* @__PURE__ */ W("p", {
1174
1174
  className: "dc:text-sm text-dc-text-secondary dc:mb-3",
1175
1175
  children: Y(e.description)
1176
1176
  }),
1177
- e.sql && /* @__PURE__ */ H("div", {
1177
+ e.sql && /* @__PURE__ */ W("div", {
1178
1178
  className: "dc:mt-2",
1179
- children: /* @__PURE__ */ H(u, {
1179
+ children: /* @__PURE__ */ W(d, {
1180
1180
  code: e.sql,
1181
1181
  language: "sql",
1182
- headerRight: /* @__PURE__ */ H(et, { text: e.sql })
1182
+ headerRight: /* @__PURE__ */ W(tt, { text: e.sql })
1183
1183
  })
1184
1184
  }),
1185
- e.cubeCode && /* @__PURE__ */ U("div", {
1185
+ e.cubeCode && /* @__PURE__ */ G("div", {
1186
1186
  className: "dc:mt-2",
1187
- children: [e.cubeName && /* @__PURE__ */ H("p", {
1187
+ children: [e.cubeName && /* @__PURE__ */ W("p", {
1188
1188
  className: "dc:text-xs text-dc-text-muted dc:mb-1",
1189
1189
  children: t("explainAI.addToCube", { cubeName: e.cubeName })
1190
- }), /* @__PURE__ */ U("div", {
1190
+ }), /* @__PURE__ */ G("div", {
1191
1191
  className: "dc:relative",
1192
- children: [/* @__PURE__ */ H("pre", {
1192
+ children: [/* @__PURE__ */ W("pre", {
1193
1193
  className: "dc:p-3 dc:text-xs bg-dc-surface-secondary dc:rounded dc:overflow-x-auto dc:font-mono text-dc-text",
1194
1194
  children: e.cubeCode
1195
- }), /* @__PURE__ */ H("div", {
1195
+ }), /* @__PURE__ */ W("div", {
1196
1196
  className: "dc:absolute dc:top-1 dc:right-1",
1197
- children: /* @__PURE__ */ H(et, { text: e.cubeCode })
1197
+ children: /* @__PURE__ */ W(tt, { text: e.cubeCode })
1198
1198
  })]
1199
1199
  })]
1200
1200
  }),
1201
- e.estimatedImpact && /* @__PURE__ */ U("p", {
1201
+ e.estimatedImpact && /* @__PURE__ */ G("p", {
1202
1202
  className: "dc:text-xs text-dc-text-muted dc:mt-2",
1203
1203
  children: [
1204
- /* @__PURE__ */ H("strong", { children: t("explainAI.expectedImpact") }),
1204
+ /* @__PURE__ */ W("strong", { children: t("explainAI.expectedImpact") }),
1205
1205
  " ",
1206
1206
  Y(e.estimatedImpact)
1207
1207
  ]
@@ -1209,45 +1209,45 @@ function tt({ rec: e }) {
1209
1209
  ]
1210
1210
  });
1211
1211
  }
1212
- function nt({ analysis: e, onClose: t, onClear: n }) {
1213
- let { t: r } = D(), i = t || n;
1214
- return N.useEffect(() => {
1212
+ function rt({ analysis: e, onClose: t, onClear: n }) {
1213
+ let { t: r } = O(), i = t || n;
1214
+ return L.useEffect(() => {
1215
1215
  let e = (e) => {
1216
1216
  e.key === "Escape" && i && i();
1217
1217
  };
1218
1218
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
1219
- }, [i]), N.useEffect(() => (document.body.style.overflow = "hidden", () => {
1219
+ }, [i]), L.useEffect(() => (document.body.style.overflow = "hidden", () => {
1220
1220
  document.body.style.overflow = "";
1221
- }), []), /* @__PURE__ */ U("div", {
1221
+ }), []), /* @__PURE__ */ G("div", {
1222
1222
  className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4 bg-black/50",
1223
- children: [/* @__PURE__ */ H("div", {
1223
+ children: [/* @__PURE__ */ W("div", {
1224
1224
  className: "dc:absolute dc:inset-0",
1225
1225
  onClick: i,
1226
1226
  "aria-hidden": "true"
1227
- }), /* @__PURE__ */ U("div", {
1227
+ }), /* @__PURE__ */ G("div", {
1228
1228
  className: "dc:relative dc:w-full dc:max-w-4xl dc:max-h-[90vh] bg-dc-surface dc:rounded-lg dc:shadow-xl dc:flex dc:flex-col",
1229
1229
  children: [
1230
- /* @__PURE__ */ U("div", {
1230
+ /* @__PURE__ */ G("div", {
1231
1231
  className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-4 dc:border-b border-dc-border dc:flex-shrink-0",
1232
- children: [/* @__PURE__ */ U("div", {
1232
+ children: [/* @__PURE__ */ G("div", {
1233
1233
  className: "dc:flex dc:items-center dc:gap-3",
1234
- children: [/* @__PURE__ */ H("span", {
1234
+ children: [/* @__PURE__ */ W("span", {
1235
1235
  className: "dc:text-lg",
1236
1236
  children: "✨"
1237
- }), /* @__PURE__ */ H("h3", {
1237
+ }), /* @__PURE__ */ W("h3", {
1238
1238
  className: "dc:text-lg dc:font-semibold text-dc-text",
1239
1239
  children: r("explainAI.title")
1240
1240
  })]
1241
- }), /* @__PURE__ */ H("button", {
1241
+ }), /* @__PURE__ */ W("button", {
1242
1242
  onClick: i,
1243
1243
  className: "dc:p-2 dc:rounded-lg hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors",
1244
1244
  "aria-label": "Close",
1245
- children: /* @__PURE__ */ H("svg", {
1245
+ children: /* @__PURE__ */ W("svg", {
1246
1246
  className: "dc:w-5 dc:h-5",
1247
1247
  fill: "none",
1248
1248
  stroke: "currentColor",
1249
1249
  viewBox: "0 0 24 24",
1250
- children: /* @__PURE__ */ H("path", {
1250
+ children: /* @__PURE__ */ W("path", {
1251
1251
  strokeLinecap: "round",
1252
1252
  strokeLinejoin: "round",
1253
1253
  strokeWidth: 2,
@@ -1256,50 +1256,50 @@ function nt({ analysis: e, onClose: t, onClear: n }) {
1256
1256
  })
1257
1257
  })]
1258
1258
  }),
1259
- /* @__PURE__ */ U("div", {
1259
+ /* @__PURE__ */ G("div", {
1260
1260
  className: "dc:flex-1 dc:overflow-y-auto dc:px-6 dc:py-4 dc:space-y-6",
1261
1261
  children: [
1262
- /* @__PURE__ */ H(Qe, {
1262
+ /* @__PURE__ */ W($e, {
1263
1263
  assessment: e.assessment,
1264
1264
  reason: e.assessmentReason
1265
1265
  }),
1266
- /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h4", {
1266
+ /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("h4", {
1267
1267
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1268
1268
  children: r("explainAI.summary")
1269
- }), /* @__PURE__ */ H("p", {
1269
+ }), /* @__PURE__ */ W("p", {
1270
1270
  className: "text-dc-text",
1271
1271
  children: Y(e.summary)
1272
1272
  })] }),
1273
- e.queryUnderstanding && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h4", {
1273
+ e.queryUnderstanding && /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("h4", {
1274
1274
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1275
1275
  children: r("explainAI.queryAnalysis")
1276
- }), /* @__PURE__ */ H("p", {
1276
+ }), /* @__PURE__ */ W("p", {
1277
1277
  className: "text-dc-text-secondary",
1278
1278
  children: Y(e.queryUnderstanding)
1279
1279
  })] }),
1280
- e.issues && e.issues.length > 0 && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h4", {
1280
+ e.issues && e.issues.length > 0 && /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("h4", {
1281
1281
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1282
1282
  children: r("explainAI.issuesFound", { count: e.issues.length })
1283
- }), /* @__PURE__ */ H("div", {
1283
+ }), /* @__PURE__ */ W("div", {
1284
1284
  className: "dc:space-y-1 bg-dc-surface-secondary dc:rounded-lg dc:p-3",
1285
- children: e.issues.map((e, t) => /* @__PURE__ */ H($e, { issue: e }, t))
1285
+ children: e.issues.map((e, t) => /* @__PURE__ */ W(et, { issue: e }, t))
1286
1286
  })] }),
1287
- e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h4", {
1287
+ e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ G("div", { children: [/* @__PURE__ */ W("h4", {
1288
1288
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-3",
1289
1289
  children: r("explainAI.recommendations", { count: e.recommendations.length })
1290
- }), /* @__PURE__ */ H("div", {
1290
+ }), /* @__PURE__ */ W("div", {
1291
1291
  className: "dc:space-y-4",
1292
- children: e.recommendations.map((e, t) => /* @__PURE__ */ H(tt, { rec: e }, t))
1292
+ children: e.recommendations.map((e, t) => /* @__PURE__ */ W(nt, { rec: e }, t))
1293
1293
  })] }),
1294
- (!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ H("div", {
1294
+ (!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ W("div", {
1295
1295
  className: "text-dc-text-muted dc:italic dc:p-4 bg-dc-surface-secondary dc:rounded-lg",
1296
1296
  children: r("explainAI.noRecommendations")
1297
1297
  })
1298
1298
  ]
1299
1299
  }),
1300
- /* @__PURE__ */ U("div", {
1300
+ /* @__PURE__ */ G("div", {
1301
1301
  className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-3 dc:border-t border-dc-border dc:flex-shrink-0 bg-dc-surface-secondary",
1302
- children: [e._meta && /* @__PURE__ */ U("div", {
1302
+ children: [e._meta && /* @__PURE__ */ G("div", {
1303
1303
  className: "dc:text-xs text-dc-text-muted",
1304
1304
  children: [
1305
1305
  r("explainAI.modelLabel"),
@@ -1307,7 +1307,7 @@ function nt({ analysis: e, onClose: t, onClear: n }) {
1307
1307
  e._meta.model,
1308
1308
  e._meta.usingUserKey && ` ${r("explainAI.usingUserKey")}`
1309
1309
  ]
1310
- }), /* @__PURE__ */ H("button", {
1310
+ }), /* @__PURE__ */ W("button", {
1311
1311
  onClick: i,
1312
1312
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-lg bg-dc-primary text-white hover:bg-dc-primary-hover dc:transition-colors",
1313
1313
  children: r("common.actions.close")
@@ -1319,31 +1319,31 @@ function nt({ analysis: e, onClose: t, onClear: n }) {
1319
1319
  }
1320
1320
  //#endregion
1321
1321
  //#region src/client/shared/chartConfigBuilders.ts
1322
- var rt = (e) => e.map((e) => e.field), it = (e) => e.length > 0 ? [e[0].field] : [];
1323
- function at(e) {
1322
+ var it = (e) => e.map((e) => e.field), at = (e) => e.length > 0 ? [e[0].field] : [];
1323
+ function ot(e) {
1324
1324
  let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
1325
1325
  return {
1326
1326
  xAxis: n ? [n.field] : r ? [r.field] : [],
1327
- yAxis: rt(t),
1327
+ yAxis: it(t),
1328
1328
  series: i.length > 1 ? [i[1].field] : r && n ? [r.field] : []
1329
1329
  };
1330
1330
  }
1331
- function ot(e) {
1331
+ function st(e) {
1332
1332
  let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
1333
1333
  return {
1334
1334
  xAxis: r ? [r.field] : n ? [n.field] : [],
1335
- yAxis: rt(t),
1335
+ yAxis: it(t),
1336
1336
  series: i.length > 1 ? [i[1].field] : n && r ? [n.field] : []
1337
1337
  };
1338
1338
  }
1339
- function st(e) {
1339
+ function ct(e) {
1340
1340
  let { metrics: t, dimension: n } = e;
1341
1341
  return {
1342
1342
  xAxis: n ? [n.field] : [],
1343
- yAxis: it(t)
1343
+ yAxis: at(t)
1344
1344
  };
1345
1345
  }
1346
- function ct(e) {
1346
+ function lt(e) {
1347
1347
  let { metrics: t, breakdowns: n, dimension: r, dimensions: i } = e;
1348
1348
  return t.length >= 2 ? {
1349
1349
  xAxis: [t[0].field],
@@ -1351,11 +1351,11 @@ function ct(e) {
1351
1351
  series: r ? [r.field] : []
1352
1352
  } : {
1353
1353
  xAxis: n.length > 0 ? [n[0].field] : [],
1354
- yAxis: it(t),
1354
+ yAxis: at(t),
1355
1355
  series: i.length > 1 ? [i[1].field] : []
1356
1356
  };
1357
1357
  }
1358
- function lt(e) {
1358
+ function ut(e) {
1359
1359
  let { metrics: t, timeDimension: n, dimension: r } = e;
1360
1360
  return {
1361
1361
  xAxis: t.length > 0 ? [t[0].field] : [],
@@ -1364,210 +1364,210 @@ function lt(e) {
1364
1364
  series: r ? [r.field] : n ? [n.field] : []
1365
1365
  };
1366
1366
  }
1367
- function ut(e) {
1367
+ function dt(e) {
1368
1368
  let { metrics: t, dimension: n } = e;
1369
1369
  return {
1370
1370
  xAxis: n ? [n.field] : [],
1371
- yAxis: it(t)
1371
+ yAxis: at(t)
1372
1372
  };
1373
1373
  }
1374
- function dt(e) {
1374
+ function ft(e) {
1375
1375
  let { metrics: t, timeDimension: n } = e;
1376
1376
  return {
1377
1377
  dateField: n ? [n.field] : [],
1378
- valueField: it(t)
1378
+ valueField: at(t)
1379
1379
  };
1380
1380
  }
1381
- function ft(e) {
1382
- return { yAxis: it(e.metrics) };
1383
- }
1384
1381
  function pt(e) {
1382
+ return { yAxis: at(e.metrics) };
1383
+ }
1384
+ function mt(e) {
1385
1385
  let { metrics: t, breakdowns: n } = e;
1386
1386
  return { xAxis: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
1387
1387
  }
1388
- function mt() {
1388
+ function ht() {
1389
1389
  return {};
1390
1390
  }
1391
- function ht(e) {
1391
+ function gt(e) {
1392
1392
  let { metrics: t, breakdowns: n } = e;
1393
1393
  return {
1394
1394
  xAxis: n.length > 0 ? [n[0].field] : [],
1395
- yAxis: rt(t)
1395
+ yAxis: it(t)
1396
1396
  };
1397
1397
  }
1398
- var gt = {
1399
- line: at,
1400
- area: at,
1401
- bar: ot,
1402
- pie: st,
1403
- scatter: ct,
1404
- bubble: lt,
1405
- radar: ut,
1406
- radialBar: ut,
1407
- treemap: ut,
1408
- activityGrid: dt,
1409
- kpiNumber: ft,
1410
- kpiDelta: ft,
1411
- kpiText: ft,
1412
- table: pt,
1413
- markdown: mt
1398
+ var _t = {
1399
+ line: ot,
1400
+ area: ot,
1401
+ bar: st,
1402
+ pie: ct,
1403
+ scatter: lt,
1404
+ bubble: ut,
1405
+ radar: dt,
1406
+ radialBar: dt,
1407
+ treemap: dt,
1408
+ activityGrid: ft,
1409
+ kpiNumber: pt,
1410
+ kpiDelta: pt,
1411
+ kpiText: pt,
1412
+ table: mt,
1413
+ markdown: ht
1414
1414
  };
1415
- function _t(e) {
1416
- return gt[e] || ht;
1415
+ function vt(e) {
1416
+ return _t[e] || gt;
1417
1417
  }
1418
1418
  //#endregion
1419
1419
  //#region src/client/shared/chartDefaults.ts
1420
- function vt(e) {
1421
- return e.isTimeDimension;
1422
- }
1423
1420
  function yt(e) {
1424
- return e.find(vt);
1421
+ return e.isTimeDimension;
1425
1422
  }
1426
1423
  function bt(e) {
1427
- return e.find((e) => !e.isTimeDimension);
1424
+ return e.find(yt);
1428
1425
  }
1429
1426
  function xt(e) {
1430
- return e.filter((e) => !e.isTimeDimension);
1427
+ return e.find((e) => !e.isTimeDimension);
1431
1428
  }
1432
1429
  function St(e) {
1433
- return e.filter(vt);
1430
+ return e.filter((e) => !e.isTimeDimension);
1431
+ }
1432
+ function Ct(e) {
1433
+ return e.filter(yt);
1434
1434
  }
1435
- function Ct(e, t) {
1435
+ function wt(e, t) {
1436
1436
  return {
1437
1437
  measureCount: e.length,
1438
1438
  dimensionCount: t.length,
1439
- timeDimensionCount: St(t).length
1439
+ timeDimensionCount: Ct(t).length
1440
1440
  };
1441
1441
  }
1442
- function wt(e, t, n) {
1442
+ function Tt(e, t, n) {
1443
1443
  let r = c[e];
1444
- return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(Ct(t, n));
1444
+ return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(wt(t, n));
1445
1445
  }
1446
- function Tt(e, t) {
1446
+ function Et(e, t) {
1447
1447
  let n = Object.keys(c), r = {};
1448
- for (let i of n) r[i] = wt(i, e, t);
1448
+ for (let i of n) r[i] = Tt(i, e, t);
1449
1449
  return r;
1450
1450
  }
1451
- function Et(e, t, n) {
1452
- if (wt(n, e, t).available || e.length === 0 && t.length === 0) return n;
1453
- let r = St(t).length > 0, i = xt(t).length > 0, a = e.length > 0;
1451
+ function Dt(e, t, n) {
1452
+ if (Tt(n, e, t).available || e.length === 0 && t.length === 0) return n;
1453
+ let r = Ct(t).length > 0, i = St(t).length > 0, a = e.length > 0;
1454
1454
  return r && a ? "line" : i && a ? "bar" : a && !i && !r ? "kpiNumber" : "table";
1455
1455
  }
1456
- function Dt(e, t, n) {
1457
- let r = Et(e, t, n);
1456
+ function Ot(e, t, n) {
1457
+ let r = Dt(e, t, n);
1458
1458
  return {
1459
1459
  chartType: r,
1460
- chartConfig: Ot(r, e, t)
1460
+ chartConfig: kt(r, e, t)
1461
1461
  };
1462
1462
  }
1463
- function Ot(e, t, n) {
1464
- return _t(e)({
1463
+ function kt(e, t, n) {
1464
+ return vt(e)({
1465
1465
  metrics: t,
1466
1466
  breakdowns: n,
1467
- timeDimension: yt(n),
1468
- dimension: bt(n),
1469
- dimensions: xt(n)
1467
+ timeDimension: bt(n),
1468
+ dimension: xt(n),
1469
+ dimensions: St(n)
1470
1470
  });
1471
1471
  }
1472
- function kt(e, t, n, r) {
1473
- if (r && wt(n, e, t).available) return null;
1474
- let i = Et(e, t, n);
1472
+ function At(e, t, n, r) {
1473
+ if (r && Tt(n, e, t).available) return null;
1474
+ let i = Dt(e, t, n);
1475
1475
  return i === n ? null : i;
1476
1476
  }
1477
1477
  //#endregion
1478
1478
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
1479
- function At({ title: e, height: t, className: n, children: r }) {
1480
- return /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H("h4", {
1479
+ function jt({ title: e, height: t, className: n, children: r }) {
1480
+ return /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ W("h4", {
1481
1481
  className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
1482
1482
  children: e
1483
- }), /* @__PURE__ */ H("div", {
1483
+ }), /* @__PURE__ */ W("div", {
1484
1484
  className: n,
1485
1485
  style: { height: t },
1486
1486
  children: r
1487
1487
  })] });
1488
1488
  }
1489
- function jt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
1490
- let { t: c } = D();
1491
- return t ? /* @__PURE__ */ H(At, {
1489
+ function Mt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
1490
+ let { t: c } = O();
1491
+ return t ? /* @__PURE__ */ W(jt, {
1492
1492
  title: a,
1493
1493
  height: o,
1494
1494
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
1495
1495
  children: c("results.debug.loadingSql")
1496
- }) : n ? /* @__PURE__ */ H(At, {
1496
+ }) : n ? /* @__PURE__ */ W(jt, {
1497
1497
  title: a,
1498
1498
  height: o,
1499
1499
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded dc:border border-dc-error",
1500
1500
  children: n.message
1501
- }) : e ? /* @__PURE__ */ H(u, {
1501
+ }) : e ? /* @__PURE__ */ W(d, {
1502
1502
  code: i,
1503
1503
  language: "sql",
1504
1504
  title: a,
1505
1505
  height: o,
1506
1506
  headerRight: s
1507
- }) : /* @__PURE__ */ H(At, {
1507
+ }) : /* @__PURE__ */ W(jt, {
1508
1508
  title: a,
1509
1509
  height: o,
1510
1510
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded dc:p-3 text-dc-text-muted dc:text-sm",
1511
1511
  children: r
1512
1512
  });
1513
1513
  }
1514
- function Mt({ summary: e }) {
1515
- let { t } = D();
1516
- return /* @__PURE__ */ U("div", {
1514
+ function Nt({ summary: e }) {
1515
+ let { t } = O();
1516
+ return /* @__PURE__ */ G("div", {
1517
1517
  className: "dc:flex dc:flex-wrap dc:items-center dc:gap-2",
1518
1518
  children: [
1519
- /* @__PURE__ */ H("span", {
1519
+ /* @__PURE__ */ W("span", {
1520
1520
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-accent text-white dc:rounded",
1521
1521
  children: e.database.toUpperCase()
1522
1522
  }),
1523
- e.hasSequentialScans && /* @__PURE__ */ H("span", {
1523
+ e.hasSequentialScans && /* @__PURE__ */ W("span", {
1524
1524
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-warning-bg text-dc-warning dc:border border-dc-warning dc:rounded",
1525
1525
  children: t("debug.sequentialScans")
1526
1526
  }),
1527
- e.usedIndexes.length > 0 && /* @__PURE__ */ H("span", {
1527
+ e.usedIndexes.length > 0 && /* @__PURE__ */ W("span", {
1528
1528
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-success-bg text-dc-success dc:border border-dc-success dc:rounded",
1529
1529
  children: t(e.usedIndexes.length === 1 ? "debug.indexesUsed" : "debug.indexesUsedPlural", { count: e.usedIndexes.length })
1530
1530
  }),
1531
- e.executionTime !== void 0 && /* @__PURE__ */ H("span", {
1531
+ e.executionTime !== void 0 && /* @__PURE__ */ W("span", {
1532
1532
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded",
1533
1533
  children: t("debug.executionTime", { time: e.executionTime.toFixed(2) })
1534
1534
  }),
1535
- e.planningTime !== void 0 && /* @__PURE__ */ H("span", {
1535
+ e.planningTime !== void 0 && /* @__PURE__ */ W("span", {
1536
1536
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded",
1537
1537
  children: t("debug.planningTime", { time: e.planningTime.toFixed(2) })
1538
1538
  }),
1539
- e.totalCost !== void 0 && /* @__PURE__ */ H("span", {
1539
+ e.totalCost !== void 0 && /* @__PURE__ */ W("span", {
1540
1540
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded",
1541
1541
  children: t("debug.cost", { cost: e.totalCost.toFixed(2) })
1542
1542
  })
1543
1543
  ]
1544
1544
  });
1545
1545
  }
1546
- function Nt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
1547
- let { t: a } = D();
1548
- return e ? /* @__PURE__ */ H("div", {
1546
+ function Pt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
1547
+ let { t: a } = O();
1548
+ return e ? /* @__PURE__ */ W("div", {
1549
1549
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
1550
1550
  children: a(r ? "debug.explainRunningAnalyze" : "debug.explainRunningBasic")
1551
- }) : t ? /* @__PURE__ */ U("div", {
1551
+ }) : t ? /* @__PURE__ */ G("div", {
1552
1552
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded dc:border border-dc-error",
1553
1553
  children: [
1554
- /* @__PURE__ */ H("strong", { children: a("debug.explainError") }),
1554
+ /* @__PURE__ */ W("strong", { children: a("debug.explainError") }),
1555
1555
  " ",
1556
1556
  t.message
1557
1557
  ]
1558
- }) : n ? /* @__PURE__ */ U("div", {
1558
+ }) : n ? /* @__PURE__ */ G("div", {
1559
1559
  className: "dc:space-y-3",
1560
1560
  children: [
1561
- /* @__PURE__ */ H(Mt, { summary: n.summary }),
1562
- n.summary.usedIndexes.length > 0 && /* @__PURE__ */ U("div", {
1561
+ /* @__PURE__ */ W(Nt, { summary: n.summary }),
1562
+ n.summary.usedIndexes.length > 0 && /* @__PURE__ */ G("div", {
1563
1563
  className: "dc:text-xs text-dc-text-muted",
1564
1564
  children: [
1565
- /* @__PURE__ */ H("strong", { children: a("debug.indexes") }),
1565
+ /* @__PURE__ */ W("strong", { children: a("debug.indexes") }),
1566
1566
  " ",
1567
1567
  n.summary.usedIndexes.join(", ")
1568
1568
  ]
1569
1569
  }),
1570
- /* @__PURE__ */ H(u, {
1570
+ /* @__PURE__ */ W(d, {
1571
1571
  code: n.raw,
1572
1572
  language: "sql",
1573
1573
  title: a("debug.executionPlanTitle", { database: n.summary.database }),
@@ -1579,24 +1579,24 @@ function Nt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
1579
1579
  }
1580
1580
  //#endregion
1581
1581
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
1582
- var Pt = F(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder: r = "Add metrics to generate SQL", explainResult: i, explainLoading: a = !1, explainHasRun: o = !1, explainError: s, runExplain: c, aiAnalysis: l, aiAnalysisLoading: u = !1, aiAnalysisError: d, runAIAnalysis: f, clearAIAnalysis: p, enableAI: m = !1, query: h, title: g = "Generated SQL", height: _ = "16rem" }) {
1583
- let { t: v } = D(), [y, b] = B(!1), [x, S] = B(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
1582
+ var Ft = de(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder: r = "Add metrics to generate SQL", explainResult: i, explainLoading: a = !1, explainHasRun: o = !1, explainError: s, runExplain: c, aiAnalysis: l, aiAnalysisLoading: u = !1, aiAnalysisError: d, runAIAnalysis: f, clearAIAnalysis: p, enableAI: m = !1, query: h, title: g = "Generated SQL", height: _ = "16rem" }) {
1583
+ let { t: v } = O(), [y, b] = H(!1), [x, S] = H(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
1584
1584
  f && i && h && (f(i, h), S(!0));
1585
1585
  }, T = () => {
1586
1586
  S(!1);
1587
- }, E = m && i ? /* @__PURE__ */ H("button", {
1587
+ }, E = m && i ? /* @__PURE__ */ W("button", {
1588
1588
  onClick: w,
1589
1589
  disabled: u,
1590
1590
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded bg-dc-accent text-white hover:bg-dc-accent-hover dc:disabled:opacity-50 dc:disabled:cursor-not-allowed dc:flex dc:items-center dc:gap-1",
1591
- children: u ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H("span", {
1591
+ children: u ? /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ W("span", {
1592
1592
  className: "dc:animate-spin",
1593
1593
  children: "⟳"
1594
- }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ H(V, { children: `✨ ${v("debug.aiAnalysis")}` })
1594
+ }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ W(U, { children: `✨ ${v("debug.aiAnalysis")}` })
1595
1595
  }) : null;
1596
- return /* @__PURE__ */ U("div", {
1596
+ return /* @__PURE__ */ G("div", {
1597
1597
  className: "dc:space-y-3",
1598
1598
  children: [
1599
- /* @__PURE__ */ H(jt, {
1599
+ /* @__PURE__ */ W(Mt, {
1600
1600
  sql: e,
1601
1601
  sqlLoading: t,
1602
1602
  sqlError: n,
@@ -1604,37 +1604,37 @@ var Pt = F(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder: r
1604
1604
  formattedSql: C,
1605
1605
  title: g,
1606
1606
  height: _,
1607
- headerRight: /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ U("label", {
1607
+ headerRight: /* @__PURE__ */ G(U, { children: [/* @__PURE__ */ G("label", {
1608
1608
  className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
1609
- children: [/* @__PURE__ */ H("input", {
1609
+ children: [/* @__PURE__ */ W("input", {
1610
1610
  type: "checkbox",
1611
1611
  checked: y,
1612
1612
  onChange: (e) => b(e.target.checked),
1613
1613
  className: "dc:w-3 dc:h-3 dc:rounded border-dc-border text-dc-accent focus:ring-dc-accent"
1614
1614
  }), v("debug.explainIncludeTiming")]
1615
- }), /* @__PURE__ */ H("button", {
1615
+ }), /* @__PURE__ */ W("button", {
1616
1616
  onClick: () => c({ analyze: y }),
1617
1617
  disabled: a,
1618
1618
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded dc:border border-dc-border bg-dc-surface hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors dc:disabled:opacity-50 dc:disabled:cursor-not-allowed",
1619
1619
  children: v(a ? "debug.explainRunning" : "debug.explainPlan")
1620
1620
  })] })
1621
1621
  }),
1622
- o && /* @__PURE__ */ H("div", { children: /* @__PURE__ */ H(Nt, {
1622
+ o && /* @__PURE__ */ W("div", { children: /* @__PURE__ */ W(Pt, {
1623
1623
  explainLoading: a,
1624
1624
  explainError: s,
1625
1625
  explainResult: i,
1626
1626
  useAnalyze: y,
1627
1627
  aiButton: E
1628
1628
  }) }),
1629
- d && /* @__PURE__ */ U("div", {
1629
+ d && /* @__PURE__ */ G("div", {
1630
1630
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded dc:border border-dc-error",
1631
1631
  children: [
1632
- /* @__PURE__ */ H("strong", { children: v("debug.aiAnalysisError") }),
1632
+ /* @__PURE__ */ W("strong", { children: v("debug.aiAnalysisError") }),
1633
1633
  " ",
1634
1634
  d.message
1635
1635
  ]
1636
1636
  }),
1637
- x && l && /* @__PURE__ */ H(nt, {
1637
+ x && l && /* @__PURE__ */ W(rt, {
1638
1638
  analysis: l,
1639
1639
  onClose: T
1640
1640
  })
@@ -1643,7 +1643,7 @@ var Pt = F(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder: r
1643
1643
  });
1644
1644
  //#endregion
1645
1645
  //#region src/client/adapters/queryModeAdapter.ts
1646
- function Ft() {
1646
+ function It() {
1647
1647
  return {
1648
1648
  metrics: [],
1649
1649
  breakdowns: [],
@@ -1654,10 +1654,10 @@ function Ft() {
1654
1654
  validationError: null
1655
1655
  };
1656
1656
  }
1657
- function It(e) {
1657
+ function Lt(e) {
1658
1658
  return e.map((e) => e.field);
1659
1659
  }
1660
- function Lt(e, t) {
1660
+ function Rt(e, t) {
1661
1661
  let n = [], r = [];
1662
1662
  for (let i of e) if (i.isTimeDimension) {
1663
1663
  let e = {
@@ -1665,7 +1665,7 @@ function Lt(e, t) {
1665
1665
  granularity: i.granularity || "day"
1666
1666
  };
1667
1667
  if (i.enableComparison) {
1668
- let n = ve(i.field, t);
1668
+ let n = ge(i.field, t);
1669
1669
  n && (e.compareDateRange = n);
1670
1670
  }
1671
1671
  r.push(e);
@@ -1675,31 +1675,31 @@ function Lt(e, t) {
1675
1675
  timeDimensions: r
1676
1676
  };
1677
1677
  }
1678
- function Rt(e) {
1679
- let { dimensions: t, timeDimensions: n } = Lt(e.breakdowns, e.filters), r = {
1680
- measures: It(e.metrics),
1678
+ function zt(e) {
1679
+ let { dimensions: t, timeDimensions: n } = Rt(e.breakdowns, e.filters), r = {
1680
+ measures: Lt(e.metrics),
1681
1681
  dimensions: t
1682
1682
  };
1683
1683
  return n.length > 0 && (r.timeDimensions = n), e.filters.length > 0 && (r.filters = e.filters), e.order && Object.keys(e.order).length > 0 && (r.order = e.order), e.limit != null && (r.limit = e.limit), r;
1684
1684
  }
1685
- function zt(e) {
1685
+ function Bt(e) {
1686
1686
  return e.map((e, t) => ({
1687
- id: S(),
1687
+ id: C(),
1688
1688
  field: e,
1689
- label: d(t)
1689
+ label: f(t)
1690
1690
  }));
1691
1691
  }
1692
- function Bt(e) {
1692
+ function Vt(e) {
1693
1693
  let t = [];
1694
1694
  if (e.dimensions) for (let n of e.dimensions) t.push({
1695
- id: S(),
1695
+ id: C(),
1696
1696
  field: n,
1697
1697
  isTimeDimension: !1
1698
1698
  });
1699
1699
  if (e.timeDimensions) for (let n of e.timeDimensions) {
1700
1700
  let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
1701
1701
  t.push({
1702
- id: S(),
1702
+ id: C(),
1703
1703
  field: n.dimension,
1704
1704
  granularity: n.granularity,
1705
1705
  isTimeDimension: !0,
@@ -1708,10 +1708,10 @@ function Bt(e) {
1708
1708
  }
1709
1709
  return t;
1710
1710
  }
1711
- function Vt(e) {
1711
+ function Ht(e) {
1712
1712
  return {
1713
- metrics: zt(e.measures || []),
1714
- breakdowns: Bt(e),
1713
+ metrics: Bt(e.measures || []),
1714
+ breakdowns: Vt(e),
1715
1715
  filters: e.filters || [],
1716
1716
  order: e.order,
1717
1717
  limit: e.limit,
@@ -1719,14 +1719,14 @@ function Vt(e) {
1719
1719
  validationError: null
1720
1720
  };
1721
1721
  }
1722
- function Ht(e) {
1722
+ function Ut(e) {
1723
1723
  return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
1724
1724
  }
1725
1725
  var X = {
1726
1726
  type: "query",
1727
1727
  createInitial() {
1728
1728
  return {
1729
- queryStates: [Ft()],
1729
+ queryStates: [It()],
1730
1730
  activeQueryIndex: 0,
1731
1731
  mergeStrategy: "concat"
1732
1732
  };
@@ -1746,22 +1746,22 @@ var X = {
1746
1746
  load(e) {
1747
1747
  if (e.analysisType !== "query") throw Error(`Cannot load ${e.analysisType} config with query adapter`);
1748
1748
  let t = e;
1749
- if (Ht(t.query)) {
1750
- let e = t.query, n = e.queries.map(Vt);
1751
- return n.length === 0 && n.push(Ft()), {
1749
+ if (Ut(t.query)) {
1750
+ let e = t.query, n = e.queries.map(Ht);
1751
+ return n.length === 0 && n.push(It()), {
1752
1752
  queryStates: n,
1753
1753
  activeQueryIndex: 0,
1754
1754
  mergeStrategy: e.mergeStrategy || "concat"
1755
1755
  };
1756
1756
  }
1757
1757
  return {
1758
- queryStates: [Vt(t.query)],
1758
+ queryStates: [Ht(t.query)],
1759
1759
  activeQueryIndex: 0,
1760
1760
  mergeStrategy: "concat"
1761
1761
  };
1762
1762
  },
1763
1763
  save(e, t, n) {
1764
- let r = e.queryStates.map(Rt), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
1764
+ let r = e.queryStates.map(zt), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
1765
1765
  queries: r,
1766
1766
  mergeStrategy: e.mergeStrategy
1767
1767
  };
@@ -1802,36 +1802,36 @@ var X = {
1802
1802
  }
1803
1803
  };
1804
1804
  }
1805
- }, Z = /* @__PURE__ */ new Map(), Ut = !1;
1806
- function Wt() {
1807
- Ut ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", h), Z.has("flow") || Z.set("flow", b), Z.has("retention") || Z.set("retention", y), !0);
1805
+ }, Z = /* @__PURE__ */ new Map(), Wt = !1;
1806
+ function Gt() {
1807
+ Wt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", g), Z.has("flow") || Z.set("flow", x), Z.has("retention") || Z.set("retention", b), !0);
1808
1808
  }
1809
1809
  var Q = {
1810
1810
  register(e) {
1811
1811
  Z.has(e.type) && console.warn(`[adapterRegistry] Overwriting existing adapter for type: ${e.type}`), Z.set(e.type, e);
1812
1812
  },
1813
1813
  get(e) {
1814
- Wt();
1814
+ Gt();
1815
1815
  let t = Z.get(e);
1816
1816
  if (!t) throw Error(`[adapterRegistry] No adapter registered for type: ${e}. Available types: ${Array.from(Z.keys()).join(", ") || "none"}`);
1817
1817
  return t;
1818
1818
  },
1819
1819
  has(e) {
1820
- return Wt(), Z.has(e);
1820
+ return Gt(), Z.has(e);
1821
1821
  },
1822
1822
  getRegisteredTypes() {
1823
- return Wt(), Array.from(Z.keys());
1823
+ return Gt(), Array.from(Z.keys());
1824
1824
  },
1825
1825
  clear() {
1826
- Z.clear(), Ut = !1;
1826
+ Z.clear(), Wt = !1;
1827
1827
  }
1828
- }, Gt = () => ({
1828
+ }, Kt = () => ({
1829
1829
  analysisType: "query",
1830
1830
  charts: {
1831
1831
  query: X.getDefaultChartConfig(),
1832
- funnel: h.getDefaultChartConfig(),
1833
- flow: b.getDefaultChartConfig(),
1834
- retention: y.getDefaultChartConfig()
1832
+ funnel: g.getDefaultChartConfig(),
1833
+ flow: x.getDefaultChartConfig(),
1834
+ retention: b.getDefaultChartConfig()
1835
1835
  },
1836
1836
  activeViews: {
1837
1837
  query: "chart",
@@ -1841,8 +1841,8 @@ var Q = {
1841
1841
  },
1842
1842
  userManuallySelectedChart: !1,
1843
1843
  localPaletteName: "default"
1844
- }), Kt = (e, t, n) => ({
1845
- ...Gt(),
1844
+ }), qt = (e, t, n) => ({
1845
+ ...Kt(),
1846
1846
  setAnalysisType: (t) => {
1847
1847
  e((e) => {
1848
1848
  let n = { ...e.charts };
@@ -2055,22 +2055,22 @@ var Q = {
2055
2055
  ...u
2056
2056
  });
2057
2057
  }
2058
- }), qt = () => ({
2059
- queryStates: [K()],
2058
+ }), Jt = () => ({
2059
+ queryStates: [J()],
2060
2060
  activeQueryIndex: 0,
2061
2061
  mergeStrategy: "concat"
2062
- }), Jt = (e, t, n) => ({
2063
- ...qt(),
2062
+ }), Yt = (e, t, n) => ({
2063
+ ...Jt(),
2064
2064
  setQueryStates: (t) => e({ queryStates: t }),
2065
2065
  updateQueryState: (t, n) => e((e) => {
2066
2066
  let r = [...e.queryStates];
2067
- return r[t] = n(r[t] || K()), { queryStates: r };
2067
+ return r[t] = n(r[t] || J()), { queryStates: r };
2068
2068
  }),
2069
2069
  setActiveQueryIndex: (t) => e({ activeQueryIndex: t }),
2070
2070
  setMergeStrategy: (t) => e({ mergeStrategy: t }),
2071
2071
  addQuery: () => e((e) => {
2072
- let t = e.queryStates[e.activeQueryIndex] || K(), n = {
2073
- ...K(),
2072
+ let t = e.queryStates[e.activeQueryIndex] || J(), n = {
2073
+ ...J(),
2074
2074
  metrics: [...t.metrics],
2075
2075
  breakdowns: [...t.breakdowns],
2076
2076
  filters: [...t.filters]
@@ -2089,10 +2089,10 @@ var Q = {
2089
2089
  };
2090
2090
  }),
2091
2091
  addMetric: (t, n) => e((e) => {
2092
- let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || K(), o = {
2093
- id: S(),
2092
+ let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || J(), o = {
2093
+ id: C(),
2094
2094
  field: t,
2095
- label: n || d(a.metrics.length)
2095
+ label: n || f(a.metrics.length)
2096
2096
  };
2097
2097
  return i[r] = {
2098
2098
  ...a,
@@ -2100,7 +2100,7 @@ var Q = {
2100
2100
  }, { queryStates: i };
2101
2101
  }),
2102
2102
  removeMetric: (t) => e((e) => {
2103
- let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || K(), a = i.metrics.find((e) => e.id === t)?.field, o = i.metrics.filter((e) => e.id !== t), s = i.order;
2103
+ let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || J(), a = i.metrics.find((e) => e.id === t)?.field, o = i.metrics.filter((e) => e.id !== t), s = i.order;
2104
2104
  return a && s && s[a] && (s = { ...s }, delete s[a], Object.keys(s).length === 0 && (s = void 0)), r[n] = {
2105
2105
  ...i,
2106
2106
  metrics: o,
@@ -2108,16 +2108,16 @@ var Q = {
2108
2108
  }, { queryStates: r };
2109
2109
  }),
2110
2110
  toggleMetric: (t) => e((e) => {
2111
- let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || K(), a = i.metrics.findIndex((e) => e.field === t);
2111
+ let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || J(), a = i.metrics.findIndex((e) => e.field === t);
2112
2112
  if (a >= 0) r[n] = {
2113
2113
  ...i,
2114
2114
  metrics: i.metrics.filter((e, t) => t !== a)
2115
2115
  };
2116
2116
  else {
2117
2117
  let e = {
2118
- id: S(),
2118
+ id: C(),
2119
2119
  field: t,
2120
- label: d(i.metrics.length)
2120
+ label: f(i.metrics.length)
2121
2121
  };
2122
2122
  r[n] = {
2123
2123
  ...i,
@@ -2127,17 +2127,17 @@ var Q = {
2127
2127
  return { queryStates: r };
2128
2128
  }),
2129
2129
  reorderMetrics: (t, n) => e((e) => {
2130
- let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || K(), o = [...a.metrics], [s] = o.splice(t, 1);
2130
+ let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || J(), o = [...a.metrics], [s] = o.splice(t, 1);
2131
2131
  return o.splice(n, 0, s), i[r] = {
2132
2132
  ...a,
2133
2133
  metrics: o
2134
2134
  }, { queryStates: i };
2135
2135
  }),
2136
2136
  addBreakdown: (t, n, r) => e((e) => {
2137
- let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || K();
2137
+ let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || J();
2138
2138
  if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
2139
2139
  let s = {
2140
- id: S(),
2140
+ id: C(),
2141
2141
  field: t,
2142
2142
  isTimeDimension: n,
2143
2143
  granularity: n ? r || "month" : void 0
@@ -2148,7 +2148,7 @@ var Q = {
2148
2148
  }, { queryStates: a };
2149
2149
  }),
2150
2150
  removeBreakdown: (t) => e((e) => {
2151
- let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || K(), a = i.breakdowns.find((e) => e.id === t)?.field, o = i.breakdowns.filter((e) => e.id !== t), s = i.order;
2151
+ let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || J(), a = i.breakdowns.find((e) => e.id === t)?.field, o = i.breakdowns.filter((e) => e.id !== t), s = i.order;
2152
2152
  return a && s && s[a] && (s = { ...s }, delete s[a], Object.keys(s).length === 0 && (s = void 0)), r[n] = {
2153
2153
  ...i,
2154
2154
  breakdowns: o,
@@ -2156,7 +2156,7 @@ var Q = {
2156
2156
  }, { queryStates: r };
2157
2157
  }),
2158
2158
  toggleBreakdown: (t, n, r) => e((e) => {
2159
- let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || K(), s = o.breakdowns.findIndex((e) => e.field === t);
2159
+ let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || J(), s = o.breakdowns.findIndex((e) => e.field === t);
2160
2160
  if (s >= 0) a[i] = {
2161
2161
  ...o,
2162
2162
  breakdowns: o.breakdowns.filter((e, t) => t !== s)
@@ -2164,7 +2164,7 @@ var Q = {
2164
2164
  else {
2165
2165
  if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
2166
2166
  let s = {
2167
- id: S(),
2167
+ id: C(),
2168
2168
  field: t,
2169
2169
  isTimeDimension: n,
2170
2170
  granularity: n ? r || "month" : void 0
@@ -2212,7 +2212,7 @@ var Q = {
2212
2212
  member: l.field,
2213
2213
  operator: "inDateRange",
2214
2214
  values: [],
2215
- dateRange: A("last_n_months", 3)
2215
+ dateRange: j("last_n_months", 3)
2216
2216
  };
2217
2217
  s[c] = {
2218
2218
  ...s[c],
@@ -2234,7 +2234,7 @@ var Q = {
2234
2234
  return f;
2235
2235
  }),
2236
2236
  reorderBreakdowns: (t, n) => e((e) => {
2237
- let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || K(), o = [...a.breakdowns], [s] = o.splice(t, 1);
2237
+ let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || J(), o = [...a.breakdowns], [s] = o.splice(t, 1);
2238
2238
  return o.splice(n, 0, s), i[r] = {
2239
2239
  ...a,
2240
2240
  breakdowns: o
@@ -2248,7 +2248,7 @@ var Q = {
2248
2248
  }, { queryStates: r };
2249
2249
  }),
2250
2250
  dropFieldToFilter: (t) => e((e) => {
2251
- let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || K(), a = i.filters || [];
2251
+ let n = e.activeQueryIndex, r = [...e.queryStates], i = r[n] || J(), a = i.filters || [];
2252
2252
  if (a.some((e) => "member" in e && e.member === t)) return e;
2253
2253
  let o = {
2254
2254
  member: t,
@@ -2272,7 +2272,7 @@ var Q = {
2272
2272
  }, { queryStates: r };
2273
2273
  }),
2274
2274
  setOrder: (t, n) => e((e) => {
2275
- let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || K(), o = { ...a.order || {} };
2275
+ let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || J(), o = { ...a.order || {} };
2276
2276
  return n === null ? delete o[t] : o[t] = n, i[r] = {
2277
2277
  ...a,
2278
2278
  order: Object.keys(o).length > 0 ? o : void 0
@@ -2287,7 +2287,7 @@ var Q = {
2287
2287
  }),
2288
2288
  getCurrentState: () => {
2289
2289
  let e = t();
2290
- return e.queryStates[e.activeQueryIndex] || K();
2290
+ return e.queryStates[e.activeQueryIndex] || J();
2291
2291
  },
2292
2292
  getMergeKeys: () => {
2293
2293
  let e = t();
@@ -2300,12 +2300,12 @@ var Q = {
2300
2300
  return e.queryStates.length <= 1 ? !1 : e.queryStates.filter((e) => e.metrics.length > 0 || e.breakdowns.length > 0).length > 1;
2301
2301
  },
2302
2302
  buildCurrentQuery: () => {
2303
- let e = t(), n = e.queryStates[e.activeQueryIndex] || K();
2304
- return G(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit);
2303
+ let e = t(), n = e.queryStates[e.activeQueryIndex] || J();
2304
+ return ve(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit);
2305
2305
  },
2306
2306
  buildAllQueries: () => {
2307
2307
  let e = t(), n = e.queryStates[0]?.breakdowns || [];
2308
- return e.queryStates.map((t, r) => G(t.metrics, e.mergeStrategy === "merge" && r > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit));
2308
+ return e.queryStates.map((t, r) => ve(t.metrics, e.mergeStrategy === "merge" && r > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit));
2309
2309
  },
2310
2310
  buildMultiQueryConfig: () => {
2311
2311
  let e = t();
@@ -2318,18 +2318,18 @@ var Q = {
2318
2318
  queryLabels: n.map((e, t) => `Q${t + 1}`)
2319
2319
  };
2320
2320
  }
2321
- }), Yt = () => ({
2321
+ }), Xt = () => ({
2322
2322
  funnelCube: null,
2323
2323
  funnelSteps: [],
2324
2324
  activeFunnelStepIndex: 0,
2325
2325
  funnelTimeDimension: null,
2326
2326
  funnelBindingKey: null,
2327
2327
  stepTimeToConvert: []
2328
- }), Xt = (e, t, n) => ({
2329
- ...Yt(),
2328
+ }), Zt = (e, t, n) => ({
2329
+ ...Xt(),
2330
2330
  addFunnelStep: () => e((e) => {
2331
2331
  let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
2332
- id: S(),
2332
+ id: C(),
2333
2333
  name: `Step ${e.funnelSteps.length + 1}`,
2334
2334
  cube: e.funnelCube || "",
2335
2335
  filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
@@ -2394,7 +2394,7 @@ var Q = {
2394
2394
  let e = t();
2395
2395
  return e.analysisType !== "funnel" || !e.funnelBindingKey || !e.funnelTimeDimension || e.funnelSteps.length < 2 ? !1 : e.funnelSteps.filter((e) => e.cube && e.name).length >= 2;
2396
2396
  }
2397
- }), Zt = () => ({
2397
+ }), Qt = () => ({
2398
2398
  flowCube: null,
2399
2399
  flowBindingKey: null,
2400
2400
  flowTimeDimension: null,
@@ -2406,8 +2406,8 @@ var Q = {
2406
2406
  stepsAfter: 3,
2407
2407
  eventDimension: null,
2408
2408
  joinStrategy: "auto"
2409
- }), Qt = (e, t, n) => ({
2410
- ...Zt(),
2409
+ }), $t = (e, t, n) => ({
2410
+ ...Qt(),
2411
2411
  setFlowCube: (t) => e(() => ({
2412
2412
  flowCube: t,
2413
2413
  flowBindingKey: null,
@@ -2477,8 +2477,8 @@ var Q = {
2477
2477
  joinStrategy: e.joinStrategy
2478
2478
  } };
2479
2479
  }
2480
- }), $t = () => ({ ...w }), en = (e, t, n) => ({
2481
- ...$t(),
2480
+ }), en = () => ({ ...T }), tn = (e, t, n) => ({
2481
+ ...en(),
2482
2482
  setRetentionCube: (t) => e(() => ({
2483
2483
  retentionCube: t,
2484
2484
  retentionTimeDimension: null,
@@ -2553,22 +2553,22 @@ var Q = {
2553
2553
  warnings: r
2554
2554
  };
2555
2555
  }
2556
- }), tn = {
2556
+ }), nn = {
2557
2557
  isOpen: !1,
2558
2558
  userPrompt: "",
2559
2559
  isGenerating: !1,
2560
2560
  error: null,
2561
2561
  hasGeneratedQuery: !1,
2562
2562
  previousState: null
2563
- }, nn = () => ({
2563
+ }, rn = () => ({
2564
2564
  activeTab: "query",
2565
2565
  activeView: "chart",
2566
2566
  displayLimit: 100,
2567
2567
  showFieldModal: !1,
2568
2568
  fieldModalMode: "metrics",
2569
- aiState: tn
2570
- }), rn = (e, t, n) => ({
2571
- ...nn(),
2569
+ aiState: nn
2570
+ }), an = (e, t, n) => ({
2571
+ ...rn(),
2572
2572
  setActiveTab: (t) => e({ activeTab: t }),
2573
2573
  setActiveView: (t) => e((e) => ({
2574
2574
  activeView: t,
@@ -2638,7 +2638,7 @@ var Q = {
2638
2638
  if (!t) return e;
2639
2639
  let n = e.activeQueryIndex, r = [...e.queryStates];
2640
2640
  return r[n] = {
2641
- ...r[n] || K(),
2641
+ ...r[n] || J(),
2642
2642
  metrics: t.metrics,
2643
2643
  breakdowns: t.breakdowns,
2644
2644
  filters: t.filters
@@ -2652,19 +2652,19 @@ var Q = {
2652
2652
  displayConfig: t.displayConfig
2653
2653
  }
2654
2654
  },
2655
- aiState: { ...tn }
2655
+ aiState: { ...nn }
2656
2656
  };
2657
2657
  })
2658
2658
  });
2659
2659
  //#endregion
2660
2660
  //#region src/client/stores/optionsToAnalysisConfig.ts
2661
- function an(e) {
2661
+ function on(e) {
2662
2662
  let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
2663
- id: S(),
2663
+ id: C(),
2664
2664
  field: e,
2665
2665
  isTimeDimension: !1
2666
2666
  })), ...n.map((e) => ({
2667
- id: S(),
2667
+ id: C(),
2668
2668
  field: e.dimension,
2669
2669
  granularity: e.granularity,
2670
2670
  isTimeDimension: !0,
@@ -2690,21 +2690,21 @@ function an(e) {
2690
2690
  }
2691
2691
  }
2692
2692
  return {
2693
- ...K(),
2693
+ ...J(),
2694
2694
  metrics: (e.measures || []).map((e, t) => ({
2695
- id: S(),
2695
+ id: C(),
2696
2696
  field: e,
2697
- label: d(t)
2697
+ label: f(t)
2698
2698
  })),
2699
2699
  breakdowns: r,
2700
2700
  filters: i,
2701
2701
  order: e.order
2702
2702
  };
2703
2703
  }
2704
- function on(e) {
2704
+ function sn(e) {
2705
2705
  return "queries" in e && Array.isArray(e.queries);
2706
2706
  }
2707
- function sn(e, t) {
2707
+ function cn(e, t) {
2708
2708
  let n = e.getDefaultChartConfig();
2709
2709
  return {
2710
2710
  chartType: t?.chartType || n.chartType,
@@ -2712,22 +2712,22 @@ function sn(e, t) {
2712
2712
  displayConfig: t?.displayConfig || n.displayConfig
2713
2713
  };
2714
2714
  }
2715
- function cn(e) {
2715
+ function ln(e) {
2716
2716
  return e.initialActiveView || "chart";
2717
2717
  }
2718
- function ln(e) {
2719
- let t = sn(h, e.initialChartConfig), n = e.initialFunnelState ?? {};
2720
- return h.save({
2718
+ function un(e) {
2719
+ let t = cn(g, e.initialChartConfig), n = e.initialFunnelState ?? {};
2720
+ return g.save({
2721
2721
  funnelCube: n.funnelCube ?? null,
2722
2722
  funnelSteps: n.funnelSteps || [],
2723
2723
  activeFunnelStepIndex: 0,
2724
2724
  funnelTimeDimension: n.funnelTimeDimension ?? null,
2725
2725
  funnelBindingKey: n.funnelBindingKey ?? null
2726
- }, { funnel: t }, cn(e));
2726
+ }, { funnel: t }, ln(e));
2727
2727
  }
2728
- function un(e) {
2729
- let t = sn(b, e.initialChartConfig), n = e.initialFlowState ?? {};
2730
- return b.save({
2728
+ function dn(e) {
2729
+ let t = cn(x, e.initialChartConfig), n = e.initialFlowState ?? {};
2730
+ return x.save({
2731
2731
  flowCube: n.flowCube ?? null,
2732
2732
  flowBindingKey: n.flowBindingKey ?? null,
2733
2733
  flowTimeDimension: n.flowTimeDimension ?? null,
@@ -2739,11 +2739,11 @@ function un(e) {
2739
2739
  stepsAfter: n.stepsAfter ?? 3,
2740
2740
  eventDimension: n.eventDimension ?? null,
2741
2741
  joinStrategy: n.joinStrategy ?? "auto"
2742
- }, { flow: t }, cn(e));
2742
+ }, { flow: t }, ln(e));
2743
2743
  }
2744
- function dn(e) {
2745
- let t = sn(y, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = T(E);
2746
- return y.save({
2744
+ function fn(e) {
2745
+ let t = cn(b, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = E(D);
2746
+ return b.save({
2747
2747
  retentionCube: n.retentionCube ?? null,
2748
2748
  retentionBindingKey: n.retentionBindingKey ?? null,
2749
2749
  retentionTimeDimension: n.retentionTimeDimension ?? null,
@@ -2754,52 +2754,52 @@ function dn(e) {
2754
2754
  retentionViewGranularity: n.retentionViewGranularity ?? "week",
2755
2755
  retentionPeriods: n.retentionPeriods ?? 12,
2756
2756
  retentionType: n.retentionType ?? "classic"
2757
- }, { retention: t }, cn(e));
2757
+ }, { retention: t }, ln(e));
2758
2758
  }
2759
- function fn(e, t) {
2759
+ function pn(e, t) {
2760
2760
  let n, r = "concat";
2761
- on(t) ? (n = t.queries.map(an), t.mergeStrategy && (r = t.mergeStrategy)) : n = [an(t)];
2762
- let i = sn(X, e.initialChartConfig);
2761
+ sn(t) ? (n = t.queries.map(on), t.mergeStrategy && (r = t.mergeStrategy)) : n = [on(t)];
2762
+ let i = cn(X, e.initialChartConfig);
2763
2763
  return X.save({
2764
2764
  queryStates: n,
2765
2765
  activeQueryIndex: 0,
2766
2766
  mergeStrategy: r
2767
- }, { query: i }, cn(e));
2767
+ }, { query: i }, ln(e));
2768
2768
  }
2769
- function pn(e) {
2770
- let t = sn(X, e.initialChartConfig);
2769
+ function mn(e) {
2770
+ let t = cn(X, e.initialChartConfig);
2771
2771
  return X.save({
2772
- queryStates: [K()],
2772
+ queryStates: [J()],
2773
2773
  activeQueryIndex: 0,
2774
2774
  mergeStrategy: "concat"
2775
- }, { query: t }, cn(e));
2775
+ }, { query: t }, ln(e));
2776
2776
  }
2777
- function mn(e) {
2777
+ function hn(e) {
2778
2778
  return X.save({
2779
- queryStates: [K()],
2779
+ queryStates: [J()],
2780
2780
  activeQueryIndex: 0,
2781
2781
  mergeStrategy: "concat"
2782
2782
  }, { query: X.getDefaultChartConfig() }, e.initialActiveView);
2783
2783
  }
2784
- function hn(e) {
2785
- return e.initialAnalysisType === "funnel" && e.initialFunnelState ? ln(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? un(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? dn(e) : e.initialQuery ? fn(e, e.initialQuery) : e.initialChartConfig ? pn(e) : e.initialActiveView ? mn(e) : null;
2784
+ function gn(e) {
2785
+ return e.initialAnalysisType === "funnel" && e.initialFunnelState ? un(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? dn(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? fn(e) : e.initialQuery ? pn(e, e.initialQuery) : e.initialChartConfig ? mn(e) : e.initialActiveView ? hn(e) : null;
2786
2786
  }
2787
2787
  //#endregion
2788
2788
  //#region src/client/stores/analysisBuilderStore.tsx
2789
- function gn(e, t) {
2789
+ function _n(e, t) {
2790
2790
  return {
2791
2791
  reset: () => {
2792
2792
  e({
2793
- ...Gt(),
2794
- ...qt(),
2795
- ...Yt(),
2796
- ...Zt(),
2797
- ...$t(),
2793
+ ...Kt(),
2794
+ ...Jt(),
2795
+ ...Xt(),
2796
+ ...Qt(),
2797
+ ...en(),
2798
2798
  charts: {
2799
2799
  query: X.getDefaultChartConfig(),
2800
- funnel: h.getDefaultChartConfig(),
2801
- flow: b.getDefaultChartConfig(),
2802
- retention: y.getDefaultChartConfig()
2800
+ funnel: g.getDefaultChartConfig(),
2801
+ flow: x.getDefaultChartConfig(),
2802
+ retention: b.getDefaultChartConfig()
2803
2803
  },
2804
2804
  activeViews: {
2805
2805
  query: "chart",
@@ -2812,28 +2812,28 @@ function gn(e, t) {
2812
2812
  clearCurrentMode: () => e((e) => {
2813
2813
  switch (e.analysisType) {
2814
2814
  case "funnel": return {
2815
- ...Yt(),
2815
+ ...Xt(),
2816
2816
  charts: {
2817
2817
  ...e.charts,
2818
- funnel: h.getDefaultChartConfig()
2818
+ funnel: g.getDefaultChartConfig()
2819
2819
  }
2820
2820
  };
2821
2821
  case "flow": return {
2822
- ...Zt(),
2822
+ ...Qt(),
2823
2823
  charts: {
2824
2824
  ...e.charts,
2825
- flow: b.getDefaultChartConfig()
2825
+ flow: x.getDefaultChartConfig()
2826
2826
  }
2827
2827
  };
2828
2828
  case "retention": return {
2829
- ...$t(),
2829
+ ...en(),
2830
2830
  charts: {
2831
2831
  ...e.charts,
2832
- retention: y.getDefaultChartConfig()
2832
+ retention: b.getDefaultChartConfig()
2833
2833
  }
2834
2834
  };
2835
2835
  default: return {
2836
- ...qt(),
2836
+ ...Jt(),
2837
2837
  userManuallySelectedChart: !1,
2838
2838
  charts: {
2839
2839
  ...e.charts,
@@ -2844,7 +2844,7 @@ function gn(e, t) {
2844
2844
  }),
2845
2845
  clearQuery: () => e((e) => {
2846
2846
  let t = [...e.queryStates];
2847
- return t[e.activeQueryIndex] = K(), {
2847
+ return t[e.activeQueryIndex] = J(), {
2848
2848
  queryStates: t,
2849
2849
  userManuallySelectedChart: !1,
2850
2850
  charts: {
@@ -2859,15 +2859,15 @@ function gn(e, t) {
2859
2859
  }
2860
2860
  };
2861
2861
  }
2862
- function _n(n = {}) {
2863
- let r = hn(n), o = (e, t, n) => ({
2864
- ...Kt(e, t, n),
2865
- ...Jt(e, t, n),
2866
- ...Xt(e, t, n),
2867
- ...Qt(e, t, n),
2868
- ...en(e, t, n),
2869
- ...rn(e, t, n),
2870
- ...gn(e, t)
2862
+ function vn(n = {}) {
2863
+ let r = gn(n), o = (e, t, n) => ({
2864
+ ...qt(e, t, n),
2865
+ ...Yt(e, t, n),
2866
+ ...Zt(e, t, n),
2867
+ ...$t(e, t, n),
2868
+ ...tn(e, t, n),
2869
+ ...an(e, t, n),
2870
+ ..._n(e, t)
2871
2871
  });
2872
2872
  if (n.disableLocalStorage) {
2873
2873
  let t = a()(i(e(o), { name: "AnalysisBuilderStore (no-persist)" }));
@@ -2876,10 +2876,10 @@ function _n(n = {}) {
2876
2876
  return a()(i(e(t(o, {
2877
2877
  name: n.storageKey || "drizzle-cube-analysis-builder-v3",
2878
2878
  partialize: (e) => e.saveWorkspace(),
2879
- merge: (e, t) => e && m(e) ? {
2879
+ merge: (e, t) => e && h(e) ? {
2880
2880
  ...t,
2881
2881
  _persistedWorkspace: e
2882
- } : e && v(e) ? {
2882
+ } : e && y(e) ? {
2883
2883
  ...t,
2884
2884
  _persistedConfig: e
2885
2885
  } : r ? {
@@ -2902,10 +2902,10 @@ function _n(n = {}) {
2902
2902
  }
2903
2903
  })), { name: "AnalysisBuilderStore" }));
2904
2904
  }
2905
- var vn = P(null);
2906
- function yn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
2907
- let u = z(null);
2908
- return u.current ||= _n({
2905
+ var yn = ue(null);
2906
+ function bn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
2907
+ let u = V(null);
2908
+ return u.current ||= vn({
2909
2909
  initialQuery: t,
2910
2910
  initialChartConfig: n,
2911
2911
  disableLocalStorage: r,
@@ -2915,22 +2915,22 @@ function yn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
2915
2915
  initialFlowState: s,
2916
2916
  initialRetentionState: c,
2917
2917
  initialActiveView: l
2918
- }), /* @__PURE__ */ H(vn.Provider, {
2918
+ }), /* @__PURE__ */ W(yn.Provider, {
2919
2919
  value: u.current,
2920
2920
  children: e
2921
2921
  });
2922
2922
  }
2923
2923
  function $(e) {
2924
- let t = pe(vn);
2924
+ let t = fe(yn);
2925
2925
  if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
2926
2926
  return r(t, e);
2927
2927
  }
2928
- function bn() {
2929
- let e = pe(vn);
2928
+ function xn() {
2929
+ let e = fe(yn);
2930
2930
  if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
2931
2931
  return e;
2932
2932
  }
2933
- var xn = (e) => e.queryStates[e.activeQueryIndex] || K(), Sn = (e) => xn(e).metrics, Cn = (e) => xn(e).breakdowns, wn = (e) => xn(e).filters, Tn = (e) => {
2933
+ var Sn = (e) => e.queryStates[e.activeQueryIndex] || J(), Cn = (e) => Sn(e).metrics, wn = (e) => Sn(e).breakdowns, Tn = (e) => Sn(e).filters, En = (e) => {
2934
2934
  let t = e.charts[e.analysisType];
2935
2935
  return t ? {
2936
2936
  chartType: t.chartType,
@@ -2945,18 +2945,18 @@ var xn = (e) => e.queryStates[e.activeQueryIndex] || K(), Sn = (e) => xn(e).metr
2945
2945
  showTooltip: !0
2946
2946
  }
2947
2947
  };
2948
- }, En = (e) => ({
2948
+ }, Dn = (e) => ({
2949
2949
  activeTab: e.activeTab,
2950
2950
  activeView: e.activeView,
2951
2951
  displayLimit: e.displayLimit,
2952
2952
  showFieldModal: e.showFieldModal,
2953
2953
  fieldModalMode: e.fieldModalMode
2954
- }), Dn = (e) => ({
2954
+ }), On = (e) => ({
2955
2955
  queryStates: e.queryStates,
2956
2956
  activeQueryIndex: e.activeQueryIndex,
2957
2957
  mergeStrategy: e.mergeStrategy,
2958
2958
  isMultiQueryMode: e.analysisType === "query" && e.queryStates.length > 1
2959
- }), On = (e) => ({
2959
+ }), kn = (e) => ({
2960
2960
  funnelCube: e.funnelCube,
2961
2961
  funnelSteps: e.funnelSteps,
2962
2962
  activeFunnelStepIndex: e.activeFunnelStepIndex,
@@ -2967,16 +2967,16 @@ var xn = (e) => e.queryStates[e.activeQueryIndex] || K(), Sn = (e) => xn(e).metr
2967
2967
  });
2968
2968
  //#endregion
2969
2969
  //#region src/client/utils/multiQueryValidation.ts
2970
- function kn(e) {
2970
+ function An(e) {
2971
2971
  return e.timeDimensions || [];
2972
2972
  }
2973
- function An(e) {
2973
+ function jn(e) {
2974
2974
  let t = [];
2975
2975
  if (e.length < 2) return t;
2976
- let n = kn(e[0]);
2976
+ let n = An(e[0]);
2977
2977
  if (n.length === 0) return t;
2978
2978
  for (let r = 1; r < e.length; r++) {
2979
- let i = kn(e[r]);
2979
+ let i = An(e[r]);
2980
2980
  if (i.length === 0 && n.length > 0) {
2981
2981
  t.push({
2982
2982
  type: "missing_time_dimension",
@@ -3002,7 +3002,7 @@ function An(e) {
3002
3002
  }
3003
3003
  return t;
3004
3004
  }
3005
- function jn(e, t) {
3005
+ function Mn(e, t) {
3006
3006
  let n = [];
3007
3007
  if (e.length < 2 || t.length === 0) return n;
3008
3008
  for (let r = 0; r < e.length; r++) {
@@ -3016,7 +3016,7 @@ function jn(e, t) {
3016
3016
  }
3017
3017
  return n;
3018
3018
  }
3019
- function Mn(e) {
3019
+ function Nn(e) {
3020
3020
  let t = [];
3021
3021
  if (e.length < 2) return t;
3022
3022
  let n = /* @__PURE__ */ new Map();
@@ -3035,7 +3035,7 @@ function Mn(e) {
3035
3035
  affectedMeasures: r
3036
3036
  }), t;
3037
3037
  }
3038
- function Nn(e) {
3038
+ function Pn(e) {
3039
3039
  let t = [];
3040
3040
  if (e.length < 2) return t;
3041
3041
  let n = e.map((e) => e.timeDimensions?.[0]?.dateRange);
@@ -3045,123 +3045,397 @@ function Nn(e) {
3045
3045
  message: "Queries have different date ranges - some data points may be missing in merged results"
3046
3046
  }), t;
3047
3047
  }
3048
- function Pn(e, t, n = []) {
3048
+ function Fn(e, t, n = []) {
3049
3049
  let r = [], i = [];
3050
3050
  return e.length < 2 ? {
3051
3051
  isValid: !0,
3052
3052
  errors: r,
3053
3053
  warnings: i
3054
- } : (i.push(...Mn(e)), i.push(...Nn(e)), t === "merge" && (r.push(...An(e)), n.length > 0 && r.push(...jn(e, n))), {
3054
+ } : (i.push(...Nn(e)), i.push(...Pn(e)), t === "merge" && (r.push(...jn(e)), n.length > 0 && r.push(...Mn(e, n))), {
3055
3055
  isValid: r.length === 0,
3056
3056
  errors: r,
3057
3057
  warnings: i
3058
3058
  });
3059
3059
  }
3060
- function Fn(e) {
3060
+ function In(e) {
3061
3061
  return (e.measures?.length || 0) + (e.dimensions?.length || 0) + (e.timeDimensions?.length || 0);
3062
3062
  }
3063
- function In(e) {
3064
- return e.filter((e) => Fn(e) > 0).length >= 2;
3063
+ function Ln(e) {
3064
+ return e.filter((e) => In(e) > 0).length >= 2;
3065
3065
  }
3066
- function Ln(e, t) {
3066
+ function Rn(e, t) {
3067
3067
  return `${e} ${t}${e === 1 ? "" : "s"}`;
3068
3068
  }
3069
- function Rn(e) {
3069
+ function zn(e) {
3070
3070
  if (e.isValid && e.warnings.length === 0) return "Configuration is valid";
3071
3071
  let t = [];
3072
- return e.errors.length > 0 && t.push(Ln(e.errors.length, "error")), e.warnings.length > 0 && t.push(Ln(e.warnings.length, "warning")), t.join(", ");
3072
+ return e.errors.length > 0 && t.push(Rn(e.errors.length, "error")), e.warnings.length > 0 && t.push(Rn(e.warnings.length, "warning")), t.join(", ");
3073
3073
  }
3074
3074
  //#endregion
3075
- //#region src/client/hooks/useAnalysisQueryBuilder.ts
3076
- function zn() {
3077
- let e = $((e) => e.queryStates), t = $((e) => e.activeQueryIndex), n = $((e) => e.mergeStrategy), r = $((e) => e.setActiveQueryIndex), i = $((e) => e.setMergeStrategy), a = $((e) => e.addQuery), o = $((e) => e.removeQuery), s = $((e) => e.getCurrentState), c = $((e) => e.getMergeKeys), l = $((e) => e.isMultiQueryMode), u = s(), d = l(), f = c(), p = R(() => {
3078
- let n = e[t] || u;
3079
- return G(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit);
3075
+ //#region src/client/hooks/useAnalysisState.ts
3076
+ function Bn(e = {}) {
3077
+ let { externalColorPalette: t } = e, r = xn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), l = $((e) => e.addQuery), u = $((e) => e.removeQuery), d = $((e) => e.getCurrentState), f = $((e) => e.getMergeKeys), m = $((e) => e.isMultiQueryMode), h = d(), g = m(), _ = f(), v = B(() => {
3078
+ let e = i[a] || h;
3079
+ return ve(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit);
3080
3080
  }, [
3081
- e,
3082
- t,
3083
- u
3084
- ]), m = R(() => {
3085
- let t = e[0]?.breakdowns || [];
3086
- return e.map((e, r) => G(e.metrics, n === "merge" && r > 0 ? t : e.breakdowns, e.filters, e.order, !1, e.limit));
3087
- }, [e, n]);
3081
+ i,
3082
+ a,
3083
+ h
3084
+ ]), y = B(() => {
3085
+ let e = i[0]?.breakdowns || [];
3086
+ return i.map((t, n) => ve(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit));
3087
+ }, [i, o]), b = B(() => {
3088
+ if (i.length <= 1) return null;
3089
+ let e = y.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
3090
+ return e.length < 2 ? null : {
3091
+ queries: e,
3092
+ mergeStrategy: o,
3093
+ mergeKeys: _,
3094
+ queryLabels: e.map((e, t) => `Q${t + 1}`)
3095
+ };
3096
+ }, [
3097
+ y,
3098
+ i.length,
3099
+ o,
3100
+ _
3101
+ ]), x = B(() => g ? Fn(y, o, _ || []) : null, [
3102
+ g,
3103
+ y,
3104
+ o,
3105
+ _
3106
+ ]), S = B(() => v.measures && v.measures.length > 0 || v.dimensions && v.dimensions.length > 0 || v.timeDimensions && v.timeDimensions.length > 0, [v]), C = B(() => {
3107
+ if (!g) return h.metrics;
3108
+ let e = /* @__PURE__ */ new Set(), t = [];
3109
+ for (let n = 0; n < i.length; n++) {
3110
+ let r = i[n];
3111
+ for (let i of r.metrics) {
3112
+ let r = `Q${n + 1}:${i.field}`;
3113
+ e.has(r) || (e.add(r), t.push({
3114
+ ...i,
3115
+ label: `${i.label} (Q${n + 1})`
3116
+ }));
3117
+ }
3118
+ }
3119
+ return t;
3120
+ }, [
3121
+ g,
3122
+ i,
3123
+ h.metrics
3124
+ ]), w = B(() => {
3125
+ if (!g) return h.breakdowns;
3126
+ let e = /* @__PURE__ */ new Set(), t = [];
3127
+ for (let n of i) for (let r of n.breakdowns) e.has(r.field) || (e.add(r.field), t.push(r));
3128
+ return t;
3129
+ }, [
3130
+ g,
3131
+ i,
3132
+ h.breakdowns
3133
+ ]), T = B(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : h.breakdowns, [
3134
+ o,
3135
+ a,
3136
+ i,
3137
+ h.breakdowns
3138
+ ]), E = $((e) => e.analysisType), D = $((e) => e.funnelBindingKey), O = $((e) => e.funnelCube), k = $((e) => e.funnelSteps), A = $((e) => e.activeFunnelStepIndex), ee = $((e) => e.funnelTimeDimension), te = B(() => E !== "funnel" || !D?.dimension || !ee || !k || k.length < 2 ? !1 : k.every((e) => e.filters.length > 0), [
3139
+ E,
3140
+ D,
3141
+ ee,
3142
+ k
3143
+ ]), ne = $((e) => e.charts.funnel?.chartType) || "funnel", j = $((e) => e.charts.funnel?.chartConfig), re = B(() => j || {}, [j]), ie = $((e) => e.charts.funnel?.displayConfig), ae = B(() => ie || {
3144
+ showLegend: !0,
3145
+ showGrid: !0,
3146
+ showTooltip: !0
3147
+ }, [ie]), M = $((e) => e.flowCube), N = $((e) => e.flowBindingKey), oe = $((e) => e.flowTimeDimension), se = $((e) => e.eventDimension), P = $((e) => e.startingStep), ce = $((e) => e.stepsBefore), F = $((e) => e.stepsAfter), I = $((e) => e.joinStrategy), le = $((e) => e.charts.flow?.displayConfig), L = B(() => le || {
3148
+ showLegend: !0,
3149
+ showGrid: !0,
3150
+ showTooltip: !0
3151
+ }, [le]), ue = $((e) => e.charts.flow?.chartType) || "sankey", de = $((e) => e.buildFunnelQueryFromSteps), fe = B(() => E === "funnel" ? de() : null, [
3152
+ E,
3153
+ de,
3154
+ k
3155
+ ]), z = $((e) => e.buildFlowQuery), V = B(() => E === "flow" ? z() : null, [
3156
+ E,
3157
+ z,
3158
+ M,
3159
+ N,
3160
+ oe,
3161
+ se,
3162
+ P,
3163
+ ce,
3164
+ F,
3165
+ ue,
3166
+ I
3167
+ ]), U = $((e) => e.retentionCube), W = $((e) => e.retentionBindingKey), G = $((e) => e.retentionTimeDimension), K = $((e) => e.retentionDateRange), pe = $((e) => e.retentionCohortFilters), q = $((e) => e.retentionActivityFilters), me = $((e) => e.retentionBreakdowns), he = $((e) => e.retentionViewGranularity), ge = $((e) => e.retentionPeriods), _e = $((e) => e.retentionType), J = $((e) => e.buildRetentionQuery), ye = $((e) => e.getRetentionValidation), be = $((e) => e.charts.retention?.displayConfig), xe = B(() => E === "retention" ? J() : null, [
3168
+ E,
3169
+ J,
3170
+ U,
3171
+ W,
3172
+ G,
3173
+ K,
3174
+ me,
3175
+ he,
3176
+ ge,
3177
+ _e,
3178
+ pe,
3179
+ q
3180
+ ]), Se = B(() => E === "retention" ? ye() : null, [
3181
+ E,
3182
+ ye,
3183
+ U,
3184
+ W,
3185
+ G,
3186
+ K
3187
+ ]), Ce = B(() => E === "retention" ? xe !== null : E === "flow" ? V !== null : E === "funnel" ? fe !== null : S ?? !1, [
3188
+ E,
3189
+ xe,
3190
+ V,
3191
+ fe,
3192
+ S
3193
+ ]), { chartType: we, chartConfig: Te, displayConfig: Ee } = $(n(En)), De = $((e) => e.userManuallySelectedChart), Oe = $((e) => e.localPaletteName), ke = $((e) => e.setChartTypeManual), Ae = $((e) => e.setChartConfig), je = $((e) => e.setDisplayConfig), Me = $((e) => e.setFunnelChartType), Ne = $((e) => e.setFunnelChartConfig), Pe = $((e) => e.setFunnelDisplayConfig), Fe = $((e) => e.setLocalPaletteName), Ie = $((e) => e.setUserManuallySelectedChart), Le = R((e) => {
3194
+ if (E === "funnel") Me(e);
3195
+ else {
3196
+ ke(e);
3197
+ let { chartConfig: t } = Ot(C, w, e);
3198
+ Ae(t);
3199
+ }
3200
+ }, [
3201
+ E,
3202
+ C,
3203
+ w,
3204
+ Me,
3205
+ ke,
3206
+ Ae
3207
+ ]), Re = R((e) => {
3208
+ E === "funnel" ? Ne(e) : Ae(e);
3209
+ }, [
3210
+ E,
3211
+ Ne,
3212
+ Ae
3213
+ ]), ze = R((e) => {
3214
+ E === "funnel" ? Pe(e) : je(e);
3215
+ }, [
3216
+ E,
3217
+ Pe,
3218
+ je
3219
+ ]), Be = B(() => Et(C, w), [C, w]), Ve = B(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3220
+ name: "custom",
3221
+ label: "Custom",
3222
+ colors: t,
3223
+ gradient: t
3224
+ } : t : p(Oe), [t, Oe]), He = R((e) => {
3225
+ r.setState((t) => ({ charts: {
3226
+ ...t.charts,
3227
+ flow: {
3228
+ ...t.charts.flow || {
3229
+ chartType: "sankey",
3230
+ chartConfig: {},
3231
+ displayConfig: {}
3232
+ },
3233
+ displayConfig: e
3234
+ }
3235
+ } }));
3236
+ }, [r]), Ue = R((e) => {
3237
+ r.setState((t) => ({ charts: {
3238
+ ...t.charts,
3239
+ retention: {
3240
+ ...t.charts.retention || {
3241
+ chartType: "retentionCombined",
3242
+ chartConfig: {},
3243
+ displayConfig: {}
3244
+ },
3245
+ displayConfig: e
3246
+ }
3247
+ } }));
3248
+ }, [r]), We = $((e) => e.activeTab), Ge = $((e) => e.activeView), Ke = $((e) => e.displayLimit), qe = $((e) => e.showFieldModal), Je = $((e) => e.fieldModalMode), Ye = $((e) => e.setActiveTab), Y = $((e) => e.setActiveView), Xe = $((e) => e.setDisplayLimit), Ze = $((e) => e.closeFieldModal), [Qe, $e] = H(0), et = $((e) => e.openMetricsModal), tt = $((e) => e.addMetric), nt = $((e) => e.removeMetric), rt = $((e) => e.toggleMetric), it = $((e) => e.reorderMetrics), at = $((e) => e.openBreakdownsModal), ot = $((e) => e.addBreakdown), st = $((e) => e.removeBreakdown), ct = $((e) => e.toggleBreakdown), lt = $((e) => e.setBreakdownGranularity), ut = $((e) => e.toggleBreakdownComparison), dt = $((e) => e.reorderBreakdowns), ft = $((e) => e.setFilters), pt = $((e) => e.dropFieldToFilter), mt = $((e) => e.setOrder), ht = $((e) => e.setLimit), gt = $((e) => e.clearQuery), _t = $((e) => e.clearCurrentMode), vt = $((e) => e.setFunnelBindingKey), yt = $((e) => e.setAnalysisType), bt = $((e) => e.setFunnelCube), xt = $((e) => e.addFunnelStep), St = $((e) => e.removeFunnelStep), Ct = $((e) => e.updateFunnelStep), wt = $((e) => e.setActiveFunnelStepIndex), Tt = $((e) => e.reorderFunnelSteps), Dt = $((e) => e.setFunnelTimeDimension), kt = $((e) => e.setFlowCube), At = $((e) => e.setFlowBindingKey), jt = $((e) => e.setFlowTimeDimension), Mt = $((e) => e.setEventDimension), Nt = $((e) => e.setStartingStepName), Pt = $((e) => e.setStartingStepFilters), Ft = $((e) => e.setStepsBefore), It = $((e) => e.setStepsAfter), Lt = $((e) => e.setJoinStrategy), Rt = $((e) => e.setRetentionCube), zt = $((e) => e.setRetentionBindingKey), Bt = $((e) => e.setRetentionTimeDimension), Vt = $((e) => e.setRetentionDateRange), Ht = $((e) => e.setRetentionCohortFilters), Ut = $((e) => e.setRetentionActivityFilters), X = $((e) => e.setRetentionBreakdowns), Z = $((e) => e.addRetentionBreakdown), Wt = $((e) => e.removeRetentionBreakdown), Gt = $((e) => e.setRetentionViewGranularity), Q = $((e) => e.setRetentionPeriods), Kt = $((e) => e.setRetentionType), qt = $((e) => e.getValidation), Jt = B(() => qt(), [
3249
+ qt,
3250
+ i,
3251
+ E,
3252
+ k,
3253
+ D,
3254
+ ee,
3255
+ M,
3256
+ N,
3257
+ oe,
3258
+ se,
3259
+ P,
3260
+ ce,
3261
+ F,
3262
+ I
3263
+ ]), Yt = R((e, t) => {
3264
+ E === "retention" && t === "dimension" ? Z({ field: e.name }) : ct(e.name, t === "timeDimension");
3265
+ }, [
3266
+ E,
3267
+ Z,
3268
+ ct
3269
+ ]), Xt = R((e, t, n, r) => {
3270
+ Je === "metrics" && t === "measure" ? rt(e.name) : Je === "breakdown" && Yt(e, t), r || Ze();
3271
+ }, [
3272
+ Je,
3273
+ rt,
3274
+ Yt,
3275
+ Ze
3276
+ ]);
3088
3277
  return {
3089
- queryState: u,
3090
- queryStates: e,
3091
- activeQueryIndex: t,
3092
- mergeStrategy: n,
3093
- isMultiQueryMode: d,
3094
- mergeKeys: f,
3095
- currentQuery: p,
3096
- allQueries: m,
3097
- multiQueryConfig: R(() => {
3098
- if (e.length <= 1) return null;
3099
- let t = m.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
3100
- return t.length < 2 ? null : {
3101
- queries: t,
3102
- mergeStrategy: n,
3103
- mergeKeys: f,
3104
- queryLabels: t.map((e, t) => `Q${t + 1}`)
3278
+ storeApi: r,
3279
+ queryState: h,
3280
+ queryStates: i,
3281
+ activeQueryIndex: a,
3282
+ mergeStrategy: o,
3283
+ isMultiQueryMode: g,
3284
+ mergeKeys: _,
3285
+ currentQuery: v,
3286
+ allQueries: y,
3287
+ multiQueryConfig: b,
3288
+ multiQueryValidation: x,
3289
+ isValidQuery: S,
3290
+ effectiveIsValidQuery: Ce,
3291
+ combinedMetrics: C,
3292
+ combinedBreakdowns: w,
3293
+ effectiveBreakdowns: T,
3294
+ analysisType: E,
3295
+ funnelBindingKey: D,
3296
+ isFunnelModeEnabled: te,
3297
+ funnelCube: O,
3298
+ funnelSteps: k,
3299
+ activeFunnelStepIndex: A,
3300
+ funnelTimeDimension: ee,
3301
+ funnelChartType: ne,
3302
+ funnelChartConfig: re,
3303
+ funnelDisplayConfig: ae,
3304
+ serverFunnelQuery: fe,
3305
+ flowCube: M,
3306
+ flowBindingKey: N,
3307
+ flowTimeDimension: oe,
3308
+ eventDimension: se,
3309
+ startingStep: P,
3310
+ stepsBefore: ce,
3311
+ stepsAfter: F,
3312
+ joinStrategy: I,
3313
+ flowDisplayConfig: L,
3314
+ serverFlowQuery: V,
3315
+ retentionCube: U,
3316
+ retentionBindingKey: W,
3317
+ retentionTimeDimension: G,
3318
+ retentionDateRange: K,
3319
+ retentionCohortFilters: pe,
3320
+ retentionActivityFilters: q,
3321
+ retentionBreakdowns: me,
3322
+ retentionViewGranularity: he,
3323
+ retentionPeriods: ge,
3324
+ retentionType: _e,
3325
+ retentionDisplayConfig: be,
3326
+ serverRetentionQuery: xe,
3327
+ retentionValidation: Se,
3328
+ chartType: we,
3329
+ chartConfig: Te,
3330
+ displayConfig: Ee,
3331
+ colorPalette: Ve,
3332
+ localPaletteName: Oe,
3333
+ chartAvailability: Be,
3334
+ userManuallySelectedChart: De,
3335
+ activeTab: We,
3336
+ activeView: Ge,
3337
+ displayLimit: Ke,
3338
+ showFieldModal: qe,
3339
+ fieldModalMode: Je,
3340
+ activeTableIndex: Qe,
3341
+ adapterValidation: Jt,
3342
+ getQueryConfig: R(() => {
3343
+ let e = r.getState();
3344
+ return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
3345
+ queries: e.buildAllQueries(),
3346
+ mergeStrategy: e.mergeStrategy,
3347
+ mergeKeys: e.getMergeKeys(),
3348
+ queryLabels: e.queryStates.map((e, t) => `Q${t + 1}`),
3349
+ funnelBindingKey: e.funnelBindingKey,
3350
+ stepTimeToConvert: e.stepTimeToConvert
3351
+ } : e.buildCurrentQuery();
3352
+ }, [r]),
3353
+ getChartConfig: R(() => {
3354
+ let e = r.getState(), t = e.charts[e.analysisType];
3355
+ return t ? {
3356
+ chartType: t.chartType,
3357
+ chartConfig: t.chartConfig,
3358
+ displayConfig: t.displayConfig
3359
+ } : {
3360
+ chartType: we,
3361
+ chartConfig: Te,
3362
+ displayConfig: Ee
3105
3363
  };
3106
- }, [
3107
- m,
3108
- e.length,
3109
- n,
3110
- f
3111
- ]),
3112
- multiQueryValidation: R(() => d ? Pn(m, n, f || []) : null, [
3113
- d,
3114
- m,
3115
- n,
3116
- f
3117
- ]),
3118
- isValidQuery: R(() => p.measures && p.measures.length > 0 || p.dimensions && p.dimensions.length > 0 || p.timeDimensions && p.timeDimensions.length > 0, [p]),
3119
- setActiveQueryIndex: r,
3120
- setMergeStrategy: i,
3121
- addQuery: a,
3122
- removeQuery: o
3123
- };
3124
- }
3125
- //#endregion
3126
- //#region src/client/hooks/useAnalysisCombinedFields.ts
3127
- function Bn(e) {
3128
- let { queryState: t, queryStates: n, isMultiQueryMode: r, mergeStrategy: i, activeQueryIndex: a } = e;
3129
- return {
3130
- combinedMetrics: R(() => {
3131
- if (!r) return t.metrics;
3132
- let e = /* @__PURE__ */ new Set(), i = [];
3133
- for (let t = 0; t < n.length; t++) {
3134
- let r = n[t];
3135
- for (let n of r.metrics) {
3136
- let r = `Q${t + 1}:${n.field}`;
3137
- e.has(r) || (e.add(r), i.push({
3138
- ...n,
3139
- label: `${n.label} (Q${t + 1})`
3140
- }));
3141
- }
3142
- }
3143
- return i;
3144
- }, [
3145
- r,
3146
- n,
3147
- t.metrics
3148
- ]),
3149
- combinedBreakdowns: R(() => {
3150
- if (!r) return t.breakdowns;
3151
- let e = /* @__PURE__ */ new Set(), i = [];
3152
- for (let t of n) for (let n of t.breakdowns) e.has(n.field) || (e.add(n.field), i.push(n));
3153
- return i;
3154
3364
  }, [
3155
3365
  r,
3156
- n,
3157
- t.breakdowns
3366
+ we,
3367
+ Te,
3368
+ Ee
3158
3369
  ]),
3159
- effectiveBreakdowns: R(() => i === "merge" && a > 0 ? n[0]?.breakdowns || [] : t.breakdowns, [
3160
- i,
3161
- a,
3162
- n,
3163
- t.breakdowns
3164
- ])
3370
+ getAnalysisType: R(() => r.getState().analysisType, [r]),
3371
+ actions: {
3372
+ setActiveQueryIndex: s,
3373
+ setMergeStrategy: c,
3374
+ addQuery: l,
3375
+ removeQuery: u,
3376
+ openMetricsModal: et,
3377
+ addMetric: tt,
3378
+ removeMetric: nt,
3379
+ toggleMetric: rt,
3380
+ reorderMetrics: it,
3381
+ openBreakdownsModal: at,
3382
+ addBreakdown: ot,
3383
+ removeBreakdown: st,
3384
+ toggleBreakdown: ct,
3385
+ setBreakdownGranularity: lt,
3386
+ toggleBreakdownComparison: ut,
3387
+ reorderBreakdowns: dt,
3388
+ setFilters: ft,
3389
+ dropFieldToFilter: pt,
3390
+ setOrder: mt,
3391
+ setLimit: ht,
3392
+ setFunnelBindingKey: vt,
3393
+ setAnalysisType: yt,
3394
+ setFunnelCube: bt,
3395
+ addFunnelStep: xt,
3396
+ removeFunnelStep: St,
3397
+ updateFunnelStep: Ct,
3398
+ setActiveFunnelStepIndex: wt,
3399
+ reorderFunnelSteps: Tt,
3400
+ setFunnelTimeDimension: Dt,
3401
+ setFunnelDisplayConfig: Pe,
3402
+ setFlowCube: kt,
3403
+ setFlowBindingKey: At,
3404
+ setFlowTimeDimension: jt,
3405
+ setEventDimension: Mt,
3406
+ setStartingStepName: Nt,
3407
+ setStartingStepFilters: Pt,
3408
+ setStepsBefore: Ft,
3409
+ setStepsAfter: It,
3410
+ setJoinStrategy: Lt,
3411
+ setFlowDisplayConfig: He,
3412
+ setRetentionCube: Rt,
3413
+ setRetentionBindingKey: zt,
3414
+ setRetentionTimeDimension: Bt,
3415
+ setRetentionDateRange: Vt,
3416
+ setRetentionCohortFilters: Ht,
3417
+ setRetentionActivityFilters: Ut,
3418
+ setRetentionBreakdowns: X,
3419
+ addRetentionBreakdown: Z,
3420
+ removeRetentionBreakdown: Wt,
3421
+ setRetentionViewGranularity: Gt,
3422
+ setRetentionPeriods: Q,
3423
+ setRetentionType: Kt,
3424
+ setRetentionDisplayConfig: Ue,
3425
+ setChartType: Le,
3426
+ setChartConfig: Re,
3427
+ setDisplayConfig: ze,
3428
+ setLocalPaletteName: Fe,
3429
+ setUserManuallySelectedChart: Ie,
3430
+ setActiveTab: Ye,
3431
+ setActiveView: Y,
3432
+ setDisplayLimit: Xe,
3433
+ closeFieldModal: Ze,
3434
+ setActiveTableIndex: $e,
3435
+ clearQuery: gt,
3436
+ clearCurrentMode: _t,
3437
+ handleFieldSelected: Xt
3438
+ }
3165
3439
  };
3166
3440
  }
3167
3441
  //#endregion
@@ -3209,14 +3483,14 @@ function Kn(e) {
3209
3483
  })) : e.isFlowMode && e.flowData ? [e.flowData] : e.isFunnelMode && e.funnelChartData ? e.funnelChartData : e.isMultiMode && e.multiData ? e.multiData : e.singleRawData ? e.singleRawData : e.initialData && e.initialData.length > 0 ? e.initialData : null;
3210
3484
  }
3211
3485
  //#endregion
3212
- //#region src/client/hooks/useAnalysisQueryExecution.ts
3486
+ //#region src/client/hooks/useAnalysisQuery.ts
3213
3487
  function qn(e) {
3214
- let { currentQuery: t, allQueries: n, multiQueryConfig: r, isMultiQueryMode: i, isValidQuery: a, initialData: o, mergeStrategy: s, funnelBindingKey: c, isFunnelModeEnabled: l, analysisType: u, serverFunnelQuery: d, serverFlowQuery: f, serverRetentionQuery: p, retentionValidation: m } = e, { getFieldLabel: h } = ee(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Vn({
3488
+ let { currentQuery: t, allQueries: n, multiQueryConfig: r, isMultiQueryMode: i, isValidQuery: a, initialData: o, mergeStrategy: s, funnelBindingKey: c, isFunnelModeEnabled: l, analysisType: u, serverFunnelQuery: d, serverFlowQuery: f, serverRetentionQuery: p, retentionValidation: m } = e, { getFieldLabel: h } = k(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Vn({
3215
3489
  isRetentionMode: v,
3216
3490
  isFlowMode: _,
3217
3491
  isFunnelMode: g,
3218
3492
  isMultiMode: y
3219
- }), C = R(() => x || !g || !c || n.length < 2 ? null : fe(n, c), [
3493
+ }), C = B(() => x || !g || !c || n.length < 2 ? null : F(n, c), [
3220
3494
  x,
3221
3495
  g,
3222
3496
  c,
@@ -3239,43 +3513,43 @@ function qn(e) {
3239
3513
  }), E = ie(r, {
3240
3514
  skip: w.multi,
3241
3515
  debounceMs: 300
3242
- }), D = oe(C, {
3516
+ }), D = M(C, {
3243
3517
  skip: w.funnel,
3244
3518
  debounceMs: 300,
3245
3519
  prebuiltServerQuery: x ? d : void 0
3246
- }), O = le(f ?? null, {
3520
+ }), O = se(f ?? null, {
3247
3521
  skip: w.flow,
3248
3522
  debounceMs: 300
3249
- }), k = re(p ?? null, {
3523
+ }), A = re(p ?? null, {
3250
3524
  skip: w.retention,
3251
3525
  debounceMs: 300,
3252
3526
  getFieldLabel: h
3253
- }), te = de({
3527
+ }), ee = ce({
3254
3528
  queries: i ? n : [t],
3255
3529
  isMultiQueryMode: i,
3256
3530
  skip: w.dryRun
3257
- }), A = ue(D.serverQuery, { skip: !g || !D.serverQuery }), ae = ue(O.serverQuery, { skip: !_ || !O.serverQuery }), se = ue(p, { skip: !v || !p }), ce = Hn(S, {
3258
- retention: k.isLoading || k.isDebouncing,
3531
+ }), te = P(D.serverQuery, { skip: !g || !D.serverQuery }), j = P(O.serverQuery, { skip: !_ || !O.serverQuery }), ae = P(p, { skip: !v || !p }), N = Hn(S, {
3532
+ retention: A.isLoading || A.isDebouncing,
3259
3533
  flow: O.isLoading || O.isDebouncing,
3260
3534
  funnel: D.isExecuting || D.isDebouncing,
3261
3535
  multi: E.isLoading,
3262
3536
  single: T.isLoading
3263
- }), j = Hn(S, {
3264
- retention: k.isFetching,
3537
+ }), oe = Hn(S, {
3538
+ retention: A.isFetching,
3265
3539
  flow: O.isFetching,
3266
3540
  funnel: D.isExecuting,
3267
3541
  multi: E.isFetching,
3268
3542
  single: T.isFetching
3269
- }), M = Hn(S, {
3270
- retention: k.error,
3543
+ }), I = Hn(S, {
3544
+ retention: A.error,
3271
3545
  flow: O.error,
3272
3546
  funnel: D.error,
3273
3547
  multi: E.error,
3274
3548
  single: T.error
3275
- }), N = !!(T.debouncedQuery || E.debouncedConfig || !D.isDebouncing || !O.isDebouncing || !k.isDebouncing), P = I((e) => {
3549
+ }), le = !!(T.debouncedQuery || E.debouncedConfig || !D.isDebouncing || !O.isDebouncing || !A.isDebouncing), L = R((e) => {
3276
3550
  switch (S) {
3277
3551
  case "retention":
3278
- k.execute(e);
3552
+ A.execute(e);
3279
3553
  break;
3280
3554
  case "flow":
3281
3555
  O.refetch(e);
@@ -3290,14 +3564,14 @@ function qn(e) {
3290
3564
  }
3291
3565
  }, [
3292
3566
  S,
3293
- k,
3567
+ A,
3294
3568
  O,
3295
3569
  D,
3296
3570
  E,
3297
3571
  T
3298
- ]), F = R(() => Gn({
3572
+ ]), ue = B(() => Gn({
3299
3573
  hasResults: Hn(S, {
3300
- retention: k.chartData,
3574
+ retention: A.chartData,
3301
3575
  flow: O.data,
3302
3576
  funnel: D.chartData,
3303
3577
  multi: E.data,
@@ -3305,27 +3579,27 @@ function qn(e) {
3305
3579
  }),
3306
3580
  initialData: o,
3307
3581
  isValidQuery: a,
3308
- isLoading: ce,
3309
- isFetching: j,
3310
- error: M
3582
+ isLoading: N,
3583
+ isFetching: oe,
3584
+ error: I
3311
3585
  }), [
3312
3586
  a,
3313
- ce,
3314
- j,
3315
- M,
3587
+ N,
3588
+ oe,
3589
+ I,
3316
3590
  T.rawData,
3317
3591
  E.data,
3318
3592
  D.chartData,
3319
3593
  O.data,
3320
- k.chartData,
3594
+ A.chartData,
3321
3595
  o,
3322
3596
  S
3323
- ]), pe = R(() => Kn({
3597
+ ]), de = B(() => Kn({
3324
3598
  isRetentionMode: v,
3325
3599
  isFlowMode: _,
3326
3600
  isFunnelMode: g,
3327
3601
  isMultiMode: y,
3328
- retentionChartData: k.chartData,
3602
+ retentionChartData: A.chartData,
3329
3603
  flowData: O.data,
3330
3604
  funnelChartData: D.chartData,
3331
3605
  multiData: E.data,
@@ -3336,212 +3610,107 @@ function qn(e) {
3336
3610
  E.data,
3337
3611
  D.chartData,
3338
3612
  O.data,
3339
- k.chartData,
3613
+ A.chartData,
3340
3614
  o,
3341
3615
  y,
3342
3616
  g,
3343
3617
  _,
3344
3618
  v
3345
- ]), L = R(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
3619
+ ]), fe = B(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
3346
3620
  y,
3347
3621
  g,
3348
3622
  E.perQueryData,
3349
3623
  D.stepResults
3350
- ]), { funnelExecutedQueries: z, funnelServerQuery: B, funnelDebugData: V, flowServerQuery: H, flowChartData: U, flowDebugData: me, retentionServerQuery: W, retentionChartData: he, retentionDebugData: ge } = Un({
3624
+ ]), { funnelExecutedQueries: z, funnelServerQuery: V, funnelDebugData: H, flowServerQuery: U, flowChartData: W, flowDebugData: G, retentionServerQuery: K, retentionChartData: pe, retentionDebugData: q } = Un({
3351
3625
  isFunnelMode: g,
3352
3626
  isFlowMode: _,
3353
3627
  isRetentionMode: v,
3354
3628
  funnelExecutedQueries: D.executedQueries,
3355
3629
  funnelServerQuery: D.serverQuery,
3356
- funnelDebugData: A.debugData,
3630
+ funnelDebugData: te.debugData,
3357
3631
  flowServerQuery: O.serverQuery,
3358
3632
  flowData: O.data,
3359
- flowDebugData: ae.debugData,
3633
+ flowDebugData: j.debugData,
3360
3634
  retentionServerQuery: p ?? null,
3361
- retentionChartData: k.chartData,
3362
- retentionDebugData: se.debugData
3363
- }), _e = R(() => Hn(S, {
3364
- retention: k.needsRefresh,
3635
+ retentionChartData: A.chartData,
3636
+ retentionDebugData: ae.debugData
3637
+ }), me = B(() => Hn(S, {
3638
+ retention: A.needsRefresh,
3365
3639
  flow: O.needsRefresh,
3366
3640
  funnel: D.needsRefresh,
3367
3641
  multi: !1,
3368
3642
  single: T.needsRefresh
3369
3643
  }), [
3370
3644
  S,
3371
- k.needsRefresh,
3645
+ A.needsRefresh,
3372
3646
  O.needsRefresh,
3373
3647
  D.needsRefresh,
3374
3648
  T.needsRefresh
3375
- ]), ve = R(() => {
3649
+ ]), he = B(() => {
3376
3650
  if (b && T.warnings) return T.warnings;
3377
3651
  }, [b, T.warnings]);
3378
3652
  return {
3379
- executionStatus: F,
3380
- executionResults: pe,
3381
- perQueryResults: L,
3382
- isLoading: ce,
3383
- isFetching: j,
3384
- error: M,
3385
- debugDataPerQuery: te.debugDataPerQuery,
3386
- hasDebounced: N,
3387
- refetch: P,
3653
+ executionStatus: ue,
3654
+ executionResults: de,
3655
+ perQueryResults: fe,
3656
+ isLoading: N,
3657
+ isFetching: oe,
3658
+ error: I,
3659
+ debugDataPerQuery: ee.debugDataPerQuery,
3660
+ hasDebounced: le,
3661
+ refetch: L,
3388
3662
  funnelExecutedQueries: z,
3389
- funnelServerQuery: B,
3390
- funnelDebugData: V,
3391
- flowServerQuery: H,
3392
- flowChartData: U,
3393
- flowDebugData: me,
3394
- retentionServerQuery: W,
3395
- retentionChartData: he,
3396
- retentionDebugData: ge,
3663
+ funnelServerQuery: V,
3664
+ funnelDebugData: H,
3665
+ flowServerQuery: U,
3666
+ flowChartData: W,
3667
+ flowDebugData: G,
3668
+ retentionServerQuery: K,
3669
+ retentionChartData: pe,
3670
+ retentionDebugData: q,
3397
3671
  retentionValidation: m ?? null,
3398
- needsRefresh: _e,
3399
- warnings: ve
3400
- };
3401
- }
3402
- //#endregion
3403
- //#region src/client/hooks/useAnalysisChartDefaults.ts
3404
- function Jn(e) {
3405
- let { externalColorPalette: t, combinedMetrics: r, combinedBreakdowns: i, hasDebounced: a } = e, o = $((e) => e.analysisType), { chartType: s, chartConfig: c, displayConfig: l } = $(n(Tn)), u = $((e) => e.userManuallySelectedChart), d = $((e) => e.localPaletteName), p = $((e) => e.setChartTypeManual), m = $((e) => e.setChartConfig), h = $((e) => e.setDisplayConfig), g = $((e) => e.setFunnelChartType), _ = $((e) => e.setFunnelChartConfig), v = $((e) => e.setFunnelDisplayConfig), y = $((e) => e.setLocalPaletteName), b = $((e) => e.setUserManuallySelectedChart), x = I((e) => {
3406
- if (o === "funnel") g(e);
3407
- else {
3408
- p(e);
3409
- let { chartConfig: t } = Dt(r, i, e);
3410
- m(t);
3411
- }
3412
- }, [
3413
- o,
3414
- r,
3415
- i,
3416
- g,
3417
- p,
3418
- m
3419
- ]), S = I((e) => {
3420
- o === "funnel" ? _(e) : m(e);
3421
- }, [
3422
- o,
3423
- _,
3424
- m
3425
- ]), C = I((e) => {
3426
- o === "funnel" ? v(e) : h(e);
3427
- }, [
3428
- o,
3429
- v,
3430
- h
3431
- ]), w = R(() => Tt(r, i), [r, i]), T = R(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3432
- name: "custom",
3433
- label: "Custom",
3434
- colors: t,
3435
- gradient: t
3436
- } : t : f(d), [t, d]), E = z("");
3437
- return L(() => {
3438
- if (!a || r.length === 0 && i.length === 0) return;
3439
- let e = JSON.stringify({
3440
- metrics: r.map((e) => e.field),
3441
- breakdowns: i.map((e) => ({
3442
- field: e.field,
3443
- isTime: e.isTimeDimension
3444
- }))
3445
- });
3446
- if (e === E.current) return;
3447
- E.current = e;
3448
- let t = kt(r, i, s, u);
3449
- if (t) {
3450
- let { chartConfig: e } = Dt(r, i, t);
3451
- x(t), S(e), b(!1);
3452
- } else if (r.length > 0 || i.length > 0) {
3453
- if (s === "table") {
3454
- let e = [...i.map((e) => e.field), ...r.map((e) => e.field)], t = Array.isArray(c.xAxis) ? c.xAxis : [], n = e.filter((e) => !t.includes(e));
3455
- n.length > 0 && S({
3456
- ...c,
3457
- xAxis: [...t, ...n]
3458
- });
3459
- } else if (!c.xAxis?.length && !c.yAxis?.length && !c.series?.length) {
3460
- let { chartConfig: e } = Dt(r, i, s);
3461
- S(e);
3462
- }
3463
- }
3464
- }, [
3465
- a,
3466
- r,
3467
- i,
3468
- s,
3469
- u,
3470
- c,
3471
- x,
3472
- S,
3473
- b
3474
- ]), {
3475
- chartType: s,
3476
- chartConfig: c,
3477
- displayConfig: l,
3478
- colorPalette: T,
3479
- localPaletteName: d,
3480
- chartAvailability: w,
3481
- userManuallySelectedChart: u,
3482
- setChartType: x,
3483
- setChartConfig: S,
3484
- setDisplayConfig: C,
3485
- setLocalPaletteName: y
3486
- };
3487
- }
3488
- //#endregion
3489
- //#region src/client/hooks/useAnalysisUIState.ts
3490
- function Yn() {
3491
- let e = $((e) => e.activeTab), t = $((e) => e.activeView), n = $((e) => e.displayLimit), r = $((e) => e.showFieldModal), i = $((e) => e.fieldModalMode), a = $((e) => e.userManuallySelectedChart), o = $((e) => e.setActiveTab), s = $((e) => e.setActiveView), c = $((e) => e.setDisplayLimit), l = $((e) => e.closeFieldModal), [u, d] = B(0);
3492
- return {
3493
- activeTab: e,
3494
- activeView: t,
3495
- displayLimit: n,
3496
- showFieldModal: r,
3497
- fieldModalMode: i,
3498
- activeTableIndex: u,
3499
- userManuallySelectedChart: a,
3500
- setActiveTab: o,
3501
- setActiveView: s,
3502
- setDisplayLimit: c,
3503
- closeFieldModal: l,
3504
- setActiveTableIndex: d
3672
+ needsRefresh: me,
3673
+ warnings: he
3505
3674
  };
3506
3675
  }
3507
3676
  //#endregion
3508
3677
  //#region src/client/utils/shareUtils.ts
3509
- var Xn = o(), Zn = 1800, Qn = "share=";
3510
- function $n(e) {
3511
- return (0, Xn.compressToEncodedURIComponent)(JSON.stringify(e));
3678
+ var Jn = o(), Yn = 1800, Xn = "share=";
3679
+ function Zn(e) {
3680
+ return (0, Jn.compressToEncodedURIComponent)(JSON.stringify(e));
3512
3681
  }
3513
- function er(e) {
3682
+ function Qn(e) {
3514
3683
  try {
3515
- let t = (0, Xn.decompressFromEncodedURIComponent)(e);
3684
+ let t = (0, Jn.decompressFromEncodedURIComponent)(e);
3516
3685
  if (!t) return null;
3517
3686
  let n = JSON.parse(t);
3518
- return v(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3687
+ return y(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3519
3688
  } catch {
3520
3689
  return null;
3521
3690
  }
3522
3691
  }
3523
- function tr(e) {
3524
- let t = $n(e);
3692
+ function $n(e) {
3693
+ let t = Zn(e);
3525
3694
  return {
3526
- ok: t.length <= Zn,
3695
+ ok: t.length <= Yn,
3527
3696
  size: t.length,
3528
- maxSize: Zn
3697
+ maxSize: Yn
3529
3698
  };
3530
3699
  }
3531
- function nr(e) {
3532
- let t = $n(e);
3533
- if (t.length <= Zn) return {
3700
+ function er(e) {
3701
+ let t = Zn(e);
3702
+ if (t.length <= Yn) return {
3534
3703
  encoded: t,
3535
3704
  queryOnly: !1
3536
3705
  };
3537
- let n = $n({
3706
+ let n = Zn({
3538
3707
  version: e.version,
3539
3708
  analysisType: e.analysisType,
3540
3709
  activeView: e.activeView,
3541
3710
  charts: {},
3542
3711
  query: e.query
3543
3712
  });
3544
- return n.length <= Zn ? {
3713
+ return n.length <= Yn ? {
3545
3714
  encoded: n,
3546
3715
  queryOnly: !0
3547
3716
  } : {
@@ -3549,418 +3718,514 @@ function nr(e) {
3549
3718
  queryOnly: !0
3550
3719
  };
3551
3720
  }
3552
- function rr(e) {
3553
- let { encoded: t } = nr(e);
3554
- return t ? `${window.location.origin}${window.location.pathname}#${Qn}${t}` : null;
3721
+ function tr(e) {
3722
+ let { encoded: t } = er(e);
3723
+ return t ? `${window.location.origin}${window.location.pathname}#${Xn}${t}` : null;
3555
3724
  }
3556
- function ir() {
3725
+ function nr() {
3557
3726
  if (typeof window > "u") return null;
3558
3727
  let e = window.location.hash;
3559
- return !e || !e.startsWith(`#${Qn}`) ? null : e.slice(7);
3728
+ return !e || !e.startsWith(`#${Xn}`) ? null : e.slice(7);
3560
3729
  }
3561
- function ar() {
3730
+ function rr() {
3562
3731
  if (typeof window > "u") return;
3563
3732
  let e = new URL(window.location.href);
3564
3733
  e.hash = "", window.history.replaceState(null, "", e.toString());
3565
3734
  }
3566
- function or() {
3567
- let e = ir();
3568
- return e ? er(e) : null;
3735
+ function ir() {
3736
+ let e = nr();
3737
+ return e ? Qn(e) : null;
3738
+ }
3739
+ //#endregion
3740
+ //#region src/client/components/AIAssistant/utils.ts
3741
+ async function ar(e, t, n = "/api/ai/generate", r) {
3742
+ let i = { text: t }, a = {
3743
+ "Content-Type": "application/json",
3744
+ ...r
3745
+ };
3746
+ e && e.trim() && (a["X-API-Key"] = e), console.log("🤖 Client: Sending user prompt to AI proxy"), console.log(" URL:", n), console.log(" Headers:", a), console.log(" User prompt length:", t.length);
3747
+ let o = await fetch(n, {
3748
+ method: "POST",
3749
+ headers: a,
3750
+ body: JSON.stringify(i)
3751
+ });
3752
+ if (console.log("📥 Client: Proxy response"), console.log(" Status:", o.status), console.log(" Status Text:", o.statusText), !o.ok) {
3753
+ let e = `Failed to generate content: ${o.status} ${o.statusText}`;
3754
+ try {
3755
+ let t = await o.json();
3756
+ if (console.error("❌ Client: Proxy error:", t), o.status === 429 && t.error === "Daily quota exceeded") throw Error(`${t.message}\n\n${t.suggestion || "Add your own Gemini API key for unlimited access."}`);
3757
+ t.error && (e = t.message || t.error, t.suggestion && (e += `\n\n💡 ${t.suggestion}`));
3758
+ } catch {
3759
+ try {
3760
+ let t = await o.text();
3761
+ console.error("❌ Client: Proxy text error:", t), e = t || e;
3762
+ } catch {
3763
+ console.error("❌ Client: Could not parse error response");
3764
+ }
3765
+ }
3766
+ throw Error(e);
3767
+ }
3768
+ let s = await o.json();
3769
+ return console.log("✅ Client: Successfully generated content"), s;
3770
+ }
3771
+ function or(e) {
3772
+ return (e.query || "").replace(/```json\s*/g, "").replace(/```\s*/g, "").replace(/^\s*```.*\n/gm, "").trim();
3569
3773
  }
3570
3774
  //#endregion
3571
- //#region src/client/hooks/useAnalysisInitialization.ts
3775
+ //#region src/client/hooks/useAnalysisEffects.ts
3572
3776
  function sr(e) {
3573
- let { currentQuery: t, isValidQuery: n, chartType: r, chartConfig: i, displayConfig: a, onQueryChange: o, onChartConfigChange: s } = e, c = $((e) => e.load), l = z(!1);
3574
- L(() => {
3777
+ return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
3778
+ }
3779
+ function cr(e) {
3780
+ let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: c } = u(), l = V(!1);
3781
+ z(() => {
3575
3782
  if (l.current) return;
3576
3783
  l.current = !0;
3577
- let e = or();
3578
- e && (c(e), ar());
3579
- }, [c]), L(() => {
3580
- o && n && o(t);
3784
+ let e = ir();
3785
+ e && (o.getState().load(e), rr());
3786
+ }, [o]), z(() => {
3787
+ i && t.isValidQuery && i(t.currentQuery);
3581
3788
  }, [
3582
- t,
3583
- n,
3584
- o
3585
- ]), L(() => {
3586
- s && s({
3587
- chartType: r,
3588
- chartConfig: i,
3589
- displayConfig: a
3789
+ t.currentQuery,
3790
+ t.isValidQuery,
3791
+ i
3792
+ ]), z(() => {
3793
+ a && a({
3794
+ chartType: t.chartType,
3795
+ chartConfig: t.chartConfig,
3796
+ displayConfig: t.displayConfig
3590
3797
  });
3591
3798
  }, [
3592
- r,
3593
- i,
3594
- a,
3595
- s
3799
+ t.chartType,
3800
+ t.chartConfig,
3801
+ t.displayConfig,
3802
+ a
3596
3803
  ]);
3597
- }
3598
- //#endregion
3599
- //#region src/client/hooks/useAnalysisBuilderHook.ts
3600
- function cr(e = {}) {
3601
- let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = bn(), c = zn(), l = Bn({
3602
- queryState: c.queryState,
3603
- queryStates: c.queryStates,
3604
- isMultiQueryMode: c.isMultiQueryMode,
3605
- mergeStrategy: c.mergeStrategy,
3606
- activeQueryIndex: c.activeQueryIndex
3607
- }), u = $((e) => e.funnelBindingKey), d = $((e) => e.analysisType), f = $((e) => e.funnelCube), p = $((e) => e.funnelSteps), m = $((e) => e.activeFunnelStepIndex), h = $((e) => e.funnelTimeDimension), g = R(() => d !== "funnel" || !u?.dimension || !h || !p || p.length < 2 ? !1 : p.every((e) => e.filters.length > 0), [
3608
- d,
3609
- u,
3610
- h,
3611
- p
3612
- ]), _ = $((e) => e.charts.funnel?.chartType) || "funnel", v = $((e) => e.charts.funnel?.chartConfig), y = R(() => v || {}, [v]), b = $((e) => e.flowCube), x = $((e) => e.flowBindingKey), S = $((e) => e.flowTimeDimension), C = $((e) => e.eventDimension), w = $((e) => e.startingStep), T = $((e) => e.stepsBefore), E = $((e) => e.stepsAfter), D = $((e) => e.joinStrategy), ee = $((e) => e.charts.flow?.displayConfig), O = R(() => ee || {
3613
- showLegend: !0,
3614
- showGrid: !0,
3615
- showTooltip: !0
3616
- }, [ee]), k = $((e) => e.charts.flow?.chartType) || "sankey", te = $((e) => e.buildFunnelQueryFromSteps), ne = R(() => d === "funnel" ? te() : null, [
3617
- d,
3618
- te,
3619
- p
3620
- ]), A = $((e) => e.buildFlowQuery), re = R(() => d === "flow" ? A() : null, [
3621
- d,
3622
- A,
3623
- b,
3624
- x,
3625
- S,
3626
- C,
3627
- w,
3628
- T,
3629
- E,
3630
- k,
3631
- D
3632
- ]), ie = $((e) => e.retentionCube), ae = $((e) => e.retentionBindingKey), oe = $((e) => e.retentionTimeDimension), se = $((e) => e.retentionDateRange), ce = $((e) => e.retentionCohortFilters), le = $((e) => e.retentionActivityFilters), ue = $((e) => e.retentionBreakdowns), de = $((e) => e.retentionViewGranularity), fe = $((e) => e.retentionPeriods), j = $((e) => e.retentionType), M = $((e) => e.buildRetentionQuery), N = $((e) => e.getRetentionValidation), P = $((e) => e.charts.retention?.displayConfig), F = $((e) => e.setRetentionCube), pe = $((e) => e.setRetentionBindingKey), L = $((e) => e.setRetentionTimeDimension), B = $((e) => e.setRetentionDateRange), V = $((e) => e.setRetentionCohortFilters), H = $((e) => e.setRetentionActivityFilters), U = $((e) => e.setRetentionBreakdowns), me = $((e) => e.addRetentionBreakdown), W = $((e) => e.removeRetentionBreakdown), he = $((e) => e.setRetentionViewGranularity), ge = $((e) => e.setRetentionPeriods), _e = $((e) => e.setRetentionType), ve = R(() => d === "retention" ? M() : null, [
3633
- d,
3634
- M,
3635
- ie,
3636
- ae,
3637
- oe,
3638
- se,
3639
- ue,
3640
- de,
3641
- fe,
3642
- j,
3643
- ce,
3644
- le
3645
- ]), ye = R(() => d === "retention" ? N() : null, [
3646
- d,
3647
- N,
3648
- ie,
3649
- ae,
3650
- oe,
3651
- se
3652
- ]), G = R(() => d === "retention" ? ve !== null : d === "flow" ? re !== null : d === "funnel" ? ne !== null : c.isValidQuery ?? !1, [
3653
- d,
3654
- ve,
3655
- re,
3656
- ne,
3657
- c.isValidQuery
3658
- ]), K = qn({
3659
- currentQuery: c.currentQuery,
3660
- allQueries: c.allQueries,
3661
- multiQueryConfig: c.multiQueryConfig,
3662
- isMultiQueryMode: c.isMultiQueryMode,
3663
- isValidQuery: G,
3664
- initialData: t,
3665
- mergeStrategy: c.mergeStrategy,
3666
- funnelBindingKey: u,
3667
- isFunnelModeEnabled: g,
3668
- analysisType: d,
3669
- serverFunnelQuery: ne,
3670
- serverFlowQuery: re,
3671
- serverRetentionQuery: ve,
3672
- retentionValidation: ye
3673
- }), q = Jn({
3674
- externalColorPalette: n,
3675
- combinedMetrics: l.combinedMetrics,
3676
- combinedBreakdowns: l.combinedBreakdowns,
3677
- hasDebounced: K.hasDebounced
3678
- }), J = Yn();
3679
- sr({
3680
- currentQuery: c.currentQuery,
3681
- isValidQuery: c.isValidQuery ?? !1,
3682
- chartType: q.chartType,
3683
- chartConfig: q.chartConfig,
3684
- displayConfig: q.displayConfig,
3685
- onQueryChange: r,
3686
- onChartConfigChange: i
3687
- });
3688
- let be = $((e) => e.openMetricsModal), xe = $((e) => e.addMetric), Se = $((e) => e.removeMetric), Ce = $((e) => e.toggleMetric), we = $((e) => e.reorderMetrics), Te = $((e) => e.openBreakdownsModal), Ee = $((e) => e.addBreakdown), De = $((e) => e.removeBreakdown), Oe = $((e) => e.toggleBreakdown), ke = $((e) => e.setBreakdownGranularity), Ae = $((e) => e.toggleBreakdownComparison), je = $((e) => e.reorderBreakdowns), Me = $((e) => e.setFilters), Ne = $((e) => e.dropFieldToFilter), Pe = $((e) => e.setOrder), Fe = $((e) => e.setLimit), Ie = $((e) => e.clearQuery), Le = $((e) => e.clearCurrentMode), Re = $((e) => e.setFunnelBindingKey), ze = $((e) => e.setAnalysisType), Be = $((e) => e.setFunnelCube), Ve = $((e) => e.addFunnelStep), He = $((e) => e.removeFunnelStep), Ue = $((e) => e.updateFunnelStep), We = $((e) => e.setActiveFunnelStepIndex), Ge = $((e) => e.reorderFunnelSteps), Ke = $((e) => e.setFunnelTimeDimension), qe = $((e) => e.charts.funnel?.displayConfig), Je = R(() => qe || {
3689
- showLegend: !0,
3690
- showGrid: !0,
3691
- showTooltip: !0
3692
- }, [qe]), Y = $((e) => e.setFunnelDisplayConfig), Ye = $((e) => e.setFlowCube), Xe = $((e) => e.setFlowBindingKey), Ze = $((e) => e.setFlowTimeDimension), Qe = $((e) => e.setEventDimension), $e = $((e) => e.setStartingStepName), et = $((e) => e.setStartingStepFilters), tt = $((e) => e.setStepsBefore), nt = $((e) => e.setStepsAfter), rt = $((e) => e.setJoinStrategy), it = I((e) => {
3693
- o.setState((t) => ({ charts: {
3694
- ...t.charts,
3695
- flow: {
3696
- ...t.charts.flow || {
3697
- chartType: "sankey",
3698
- chartConfig: {},
3699
- displayConfig: {}
3700
- },
3701
- displayConfig: e
3702
- }
3703
- } }));
3704
- }, [o]), at = I((e) => {
3705
- o.setState((t) => ({ charts: {
3706
- ...t.charts,
3707
- retention: {
3708
- ...t.charts.retention || {
3709
- chartType: "retentionCombined",
3710
- chartConfig: {},
3711
- displayConfig: {}
3712
- },
3713
- displayConfig: e
3804
+ let { combinedMetrics: d, combinedBreakdowns: p, chartType: m, chartConfig: h, userManuallySelectedChart: g } = t, { hasDebounced: _ } = n, { setChartType: v, setChartConfig: y } = s, b = V("");
3805
+ z(() => {
3806
+ if (!_ || d.length === 0 && p.length === 0) return;
3807
+ let e = JSON.stringify({
3808
+ metrics: d.map((e) => e.field),
3809
+ breakdowns: p.map((e) => ({
3810
+ field: e.field,
3811
+ isTime: e.isTimeDimension
3812
+ }))
3813
+ });
3814
+ if (e === b.current) return;
3815
+ b.current = e;
3816
+ let t = At(d, p, m, g);
3817
+ if (t) {
3818
+ let { chartConfig: e } = Ot(d, p, t);
3819
+ v(t), y(e), s.setUserManuallySelectedChart(!1);
3820
+ } else if (d.length > 0 || p.length > 0) {
3821
+ if (m === "table") {
3822
+ let e = [...p.map((e) => e.field), ...d.map((e) => e.field)], t = Array.isArray(h.xAxis) ? h.xAxis : [], n = e.filter((e) => !t.includes(e));
3823
+ n.length > 0 && y({
3824
+ ...h,
3825
+ xAxis: [...t, ...n]
3826
+ });
3827
+ } else if (!h.xAxis?.length && !h.yAxis?.length && !h.series?.length) {
3828
+ let { chartConfig: e } = Ot(d, p, m);
3829
+ y(e);
3714
3830
  }
3715
- } }));
3716
- }, [o]), ot = $((e) => e.aiState), st = $((e) => e.openAI), ct = $((e) => e.closeAI), lt = $((e) => e.setAIPrompt), ut = $((e) => e.setAIGenerating), dt = $((e) => e.setAIError), ft = $((e) => e.setAIHasGeneratedQuery), pt = $((e) => e.saveAIPreviousState), mt = $((e) => e.restoreAIPreviousState), ht = z("idle"), gt = G, _t = $((e) => e.getValidation), vt = R(() => _t(), [
3717
- _t,
3718
- c.queryStates,
3831
+ }
3832
+ }, [
3833
+ _,
3719
3834
  d,
3720
3835
  p,
3721
- u,
3836
+ m,
3837
+ g,
3722
3838
  h,
3723
- b,
3724
- x,
3725
- S,
3726
- C,
3727
- w,
3728
- T,
3729
- E,
3730
- D
3731
- ]), yt = I((e, t) => {
3732
- d === "retention" && t === "dimension" ? me({ field: e.name }) : Oe(e.name, t === "timeDimension");
3733
- }, [
3734
- d,
3735
- me,
3736
- Oe
3737
- ]), bt = I((e, t, n, r) => {
3738
- J.fieldModalMode === "metrics" && t === "measure" ? Ce(e.name) : J.fieldModalMode === "breakdown" && yt(e, t), r || J.closeFieldModal();
3839
+ v,
3840
+ y,
3841
+ s
3842
+ ]);
3843
+ let [x, S] = H({
3844
+ isOpen: !1,
3845
+ userPrompt: "",
3846
+ isGenerating: !1,
3847
+ error: null,
3848
+ hasGeneratedQuery: !1,
3849
+ previousState: null,
3850
+ previousConfig: null
3851
+ }), w = R((e) => {
3852
+ o.getState().updateQueryState(t.activeQueryIndex, (t) => {
3853
+ let n = e(t);
3854
+ return {
3855
+ ...t,
3856
+ metrics: n.metrics,
3857
+ breakdowns: n.breakdowns,
3858
+ filters: n.filters,
3859
+ order: n.order,
3860
+ limit: n.limit
3861
+ };
3862
+ });
3863
+ }, [o, t.activeQueryIndex]), T = R((e) => {
3864
+ let t = {
3865
+ version: 1,
3866
+ analysisType: "funnel",
3867
+ activeView: "chart",
3868
+ charts: { funnel: {
3869
+ chartType: "funnel",
3870
+ chartConfig: {},
3871
+ displayConfig: {}
3872
+ } },
3873
+ query: e
3874
+ };
3875
+ o.getState().load(t);
3876
+ }, [o]), E = R(() => {
3877
+ let e = o.getState().save();
3878
+ S({
3879
+ isOpen: !0,
3880
+ userPrompt: "",
3881
+ isGenerating: !1,
3882
+ error: null,
3883
+ hasGeneratedQuery: !1,
3884
+ previousState: {
3885
+ metrics: [...t.queryState.metrics],
3886
+ breakdowns: [...t.queryState.breakdowns],
3887
+ filters: [...t.queryState.filters],
3888
+ chartType: t.chartType,
3889
+ chartConfig: { ...t.chartConfig },
3890
+ displayConfig: { ...t.displayConfig },
3891
+ analysisType: t.analysisType || "query"
3892
+ },
3893
+ previousConfig: e
3894
+ });
3739
3895
  }, [
3740
- J,
3741
- Ce,
3742
- yt
3743
- ]), xt = I(async () => {
3744
- if (a?.aiEndpoint) {
3745
- pt(), ut(!0), dt(null);
3896
+ o,
3897
+ t.queryState.metrics,
3898
+ t.queryState.breakdowns,
3899
+ t.queryState.filters,
3900
+ t.chartType,
3901
+ t.chartConfig,
3902
+ t.displayConfig,
3903
+ t.analysisType
3904
+ ]), D = R(() => {
3905
+ S((e) => ({
3906
+ ...e,
3907
+ isOpen: !1,
3908
+ userPrompt: "",
3909
+ error: null,
3910
+ hasGeneratedQuery: !1
3911
+ }));
3912
+ }, []), O = R((e) => {
3913
+ S((t) => ({
3914
+ ...t,
3915
+ userPrompt: e
3916
+ }));
3917
+ }, []), k = R(async () => {
3918
+ if (x.userPrompt.trim()) {
3919
+ S((e) => ({
3920
+ ...e,
3921
+ isGenerating: !0,
3922
+ error: null
3923
+ }));
3746
3924
  try {
3747
- await new Promise((e) => setTimeout(e, 1e3)), ft(!0);
3925
+ let e = or(await ar("", x.userPrompt, r, c?.headers)), n = JSON.parse(e), i = "query" in n && n.query ? n.query : n, a = "chartType" in n ? n.chartType : void 0, o = "chartConfig" in n ? n.chartConfig : void 0;
3926
+ if (sr(i)) {
3927
+ s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
3928
+ ...e,
3929
+ isGenerating: !1,
3930
+ hasGeneratedQuery: !0
3931
+ }));
3932
+ return;
3933
+ }
3934
+ let l = i;
3935
+ w((e) => ({
3936
+ ...e,
3937
+ metrics: (l.measures || []).map((e, t) => ({
3938
+ id: C(),
3939
+ field: e,
3940
+ label: f(t)
3941
+ })),
3942
+ breakdowns: [...(l.dimensions || []).map((e) => ({
3943
+ id: C(),
3944
+ field: e,
3945
+ isTimeDimension: !1
3946
+ })), ...(l.timeDimensions || []).map((e) => ({
3947
+ id: C(),
3948
+ field: e.dimension,
3949
+ granularity: e.granularity,
3950
+ isTimeDimension: !0
3951
+ }))],
3952
+ filters: l.filters || [],
3953
+ order: l.order || void 0,
3954
+ limit: l.limit ?? void 0
3955
+ })), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
3956
+ ...e,
3957
+ isGenerating: !1,
3958
+ hasGeneratedQuery: !0
3959
+ }));
3748
3960
  } catch (e) {
3749
- dt(e instanceof Error ? e.message : "Failed to generate query");
3750
- } finally {
3751
- ut(!1);
3961
+ S((t) => ({
3962
+ ...t,
3963
+ isGenerating: !1,
3964
+ error: e instanceof Error ? e.message : "Failed to generate query"
3965
+ }));
3752
3966
  }
3753
3967
  }
3754
3968
  }, [
3755
- a?.aiEndpoint,
3756
- pt,
3757
- ut,
3758
- dt,
3759
- ft
3760
- ]), St = I(() => {
3761
- ct(), ft(!1);
3762
- }, [ct, ft]), Ct = I(() => {
3763
- mt(), ct();
3764
- }, [mt, ct]), wt = I(async () => {
3765
- ht.current = "copied", setTimeout(() => {
3766
- ht.current = "idle";
3767
- }, 2e3);
3768
- }, []), Tt = I(() => {
3769
- let e = o.getState();
3770
- return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
3771
- queries: e.buildAllQueries(),
3772
- mergeStrategy: e.mergeStrategy,
3773
- mergeKeys: e.getMergeKeys(),
3774
- queryLabels: e.queryStates.map((e, t) => `Q${t + 1}`),
3775
- funnelBindingKey: e.funnelBindingKey,
3776
- stepTimeToConvert: e.stepTimeToConvert
3777
- } : e.buildCurrentQuery();
3778
- }, [o]), Et = I(() => {
3779
- let e = o.getState(), t = e.charts[e.analysisType];
3780
- return t ? {
3781
- chartType: t.chartType,
3782
- chartConfig: t.chartConfig,
3783
- displayConfig: t.displayConfig
3784
- } : {
3785
- chartType: q.chartType,
3786
- chartConfig: q.chartConfig,
3787
- displayConfig: q.displayConfig
3788
- };
3969
+ x.userPrompt,
3970
+ r,
3971
+ c?.headers,
3972
+ w,
3973
+ T,
3974
+ t.analysisType,
3975
+ s
3976
+ ]), A = R(() => {
3977
+ S({
3978
+ isOpen: !1,
3979
+ userPrompt: "",
3980
+ isGenerating: !1,
3981
+ error: null,
3982
+ hasGeneratedQuery: !1,
3983
+ previousState: null,
3984
+ previousConfig: null
3985
+ });
3986
+ }, []), ee = R(() => {
3987
+ x.previousConfig ? o.getState().load(x.previousConfig) : x.previousState && (w((e) => ({
3988
+ ...e,
3989
+ metrics: x.previousState.metrics,
3990
+ breakdowns: x.previousState.breakdowns,
3991
+ filters: x.previousState.filters
3992
+ })), s.setChartType(x.previousState.chartType), s.setChartConfig(x.previousState.chartConfig), s.setDisplayConfig(x.previousState.displayConfig), x.previousState.analysisType && s.setAnalysisType(x.previousState.analysisType)), S({
3993
+ isOpen: !1,
3994
+ userPrompt: "",
3995
+ isGenerating: !1,
3996
+ error: null,
3997
+ hasGeneratedQuery: !1,
3998
+ previousState: null,
3999
+ previousConfig: null
4000
+ });
3789
4001
  }, [
4002
+ x.previousState,
4003
+ x.previousConfig,
3790
4004
  o,
3791
- q.chartType,
3792
- q.chartConfig,
3793
- q.displayConfig
3794
- ]), Dt = I(() => o.getState().analysisType, [o]);
4005
+ w,
4006
+ s
4007
+ ]), [te, ne] = H("idle"), j = t.effectiveIsValidQuery;
4008
+ return {
4009
+ aiState: x,
4010
+ openAI: E,
4011
+ closeAI: D,
4012
+ setAIPrompt: O,
4013
+ generateAI: k,
4014
+ acceptAI: A,
4015
+ cancelAI: ee,
4016
+ shareButtonState: te,
4017
+ share: R(async () => {
4018
+ if (!j) return;
4019
+ let { encoded: e, queryOnly: t } = er(o.getState().save());
4020
+ if (!e) return;
4021
+ let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
4022
+ try {
4023
+ await navigator.clipboard.writeText(n);
4024
+ } catch {
4025
+ let e = document.createElement("textarea");
4026
+ e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
4027
+ }
4028
+ ne(t ? "copied-no-chart" : "copied"), setTimeout(() => {
4029
+ ne("idle");
4030
+ }, 2e3);
4031
+ }, [j, o]),
4032
+ canShare: j
4033
+ };
4034
+ }
4035
+ //#endregion
4036
+ //#region src/client/hooks/useAnalysisBuilderHook.ts
4037
+ function lr(e = {}) {
4038
+ let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = Bn({ externalColorPalette: n }), c = qn({
4039
+ currentQuery: o.currentQuery,
4040
+ allQueries: o.allQueries,
4041
+ multiQueryConfig: o.multiQueryConfig,
4042
+ isMultiQueryMode: o.isMultiQueryMode,
4043
+ isValidQuery: o.effectiveIsValidQuery,
4044
+ initialData: t,
4045
+ mergeStrategy: o.mergeStrategy,
4046
+ funnelBindingKey: o.funnelBindingKey,
4047
+ isFunnelModeEnabled: o.isFunnelModeEnabled,
4048
+ analysisType: o.analysisType,
4049
+ serverFunnelQuery: o.serverFunnelQuery,
4050
+ serverFlowQuery: o.serverFlowQuery,
4051
+ serverRetentionQuery: o.serverRetentionQuery,
4052
+ retentionValidation: o.retentionValidation
4053
+ }), l = cr({
4054
+ state: o,
4055
+ query: c,
4056
+ aiEndpoint: a?.aiEndpoint,
4057
+ onQueryChange: r,
4058
+ onChartConfigChange: i
4059
+ });
3795
4060
  return {
3796
- queryState: c.queryState,
3797
- queryStates: c.queryStates,
3798
- activeQueryIndex: c.activeQueryIndex,
3799
- mergeStrategy: c.mergeStrategy,
3800
- isMultiQueryMode: c.isMultiQueryMode,
3801
- mergeKeys: c.mergeKeys,
3802
- currentQuery: c.currentQuery,
3803
- allQueries: c.allQueries,
3804
- multiQueryConfig: c.multiQueryConfig,
3805
- multiQueryValidation: c.multiQueryValidation,
3806
- funnelBindingKey: u,
3807
- isFunnelModeEnabled: g,
3808
- analysisType: d,
3809
- funnelCube: f,
3810
- funnelSteps: p,
3811
- activeFunnelStepIndex: m,
3812
- funnelTimeDimension: h,
3813
- funnelChartType: _,
3814
- funnelChartConfig: y,
3815
- funnelDisplayConfig: Je,
3816
- flowCube: b,
3817
- flowBindingKey: x,
3818
- flowTimeDimension: S,
3819
- eventDimension: C,
3820
- startingStep: w,
3821
- stepsBefore: T,
3822
- stepsAfter: E,
3823
- joinStrategy: D,
3824
- flowDisplayConfig: O,
3825
- retentionCube: ie,
3826
- retentionBindingKey: ae,
3827
- retentionTimeDimension: oe,
3828
- retentionDateRange: se,
3829
- retentionCohortFilters: ce,
3830
- retentionActivityFilters: le,
3831
- retentionBreakdowns: ue,
3832
- retentionViewGranularity: de,
3833
- retentionPeriods: fe,
3834
- retentionType: j,
3835
- retentionDisplayConfig: P,
3836
- executionStatus: K.executionStatus,
3837
- executionResults: K.executionResults,
3838
- perQueryResults: K.perQueryResults,
3839
- isLoading: K.isLoading,
3840
- isFetching: K.isFetching,
3841
- error: K.error,
3842
- isValidQuery: G,
3843
- debugDataPerQuery: K.debugDataPerQuery,
3844
- needsRefresh: K.needsRefresh,
3845
- warnings: K.warnings,
3846
- funnelExecutedQueries: K.funnelExecutedQueries,
3847
- funnelServerQuery: K.funnelServerQuery,
3848
- funnelDebugData: K.funnelDebugData,
3849
- flowServerQuery: K.flowServerQuery,
3850
- flowDebugData: K.flowDebugData,
3851
- retentionServerQuery: K.retentionServerQuery,
3852
- retentionDebugData: K.retentionDebugData,
3853
- retentionChartData: K.retentionChartData,
3854
- retentionValidation: K.retentionValidation,
3855
- chartType: q.chartType,
3856
- chartConfig: q.chartConfig,
3857
- displayConfig: q.displayConfig,
3858
- colorPalette: q.colorPalette,
3859
- localPaletteName: q.localPaletteName,
3860
- chartAvailability: q.chartAvailability,
3861
- combinedMetrics: l.combinedMetrics,
3862
- combinedBreakdowns: l.combinedBreakdowns,
3863
- effectiveBreakdowns: l.effectiveBreakdowns,
3864
- activeTab: J.activeTab,
3865
- activeView: J.activeView,
3866
- displayLimit: J.displayLimit,
3867
- showFieldModal: J.showFieldModal,
3868
- fieldModalMode: J.fieldModalMode,
3869
- activeTableIndex: J.activeTableIndex,
3870
- userManuallySelectedChart: J.userManuallySelectedChart,
4061
+ queryState: o.queryState,
4062
+ queryStates: o.queryStates,
4063
+ activeQueryIndex: o.activeQueryIndex,
4064
+ mergeStrategy: o.mergeStrategy,
4065
+ isMultiQueryMode: o.isMultiQueryMode,
4066
+ mergeKeys: o.mergeKeys,
4067
+ currentQuery: o.currentQuery,
4068
+ allQueries: o.allQueries,
4069
+ multiQueryConfig: o.multiQueryConfig,
4070
+ multiQueryValidation: o.multiQueryValidation,
4071
+ funnelBindingKey: o.funnelBindingKey,
4072
+ isFunnelModeEnabled: o.isFunnelModeEnabled,
4073
+ analysisType: o.analysisType,
4074
+ funnelCube: o.funnelCube,
4075
+ funnelSteps: o.funnelSteps,
4076
+ activeFunnelStepIndex: o.activeFunnelStepIndex,
4077
+ funnelTimeDimension: o.funnelTimeDimension,
4078
+ funnelChartType: o.funnelChartType,
4079
+ funnelChartConfig: o.funnelChartConfig,
4080
+ funnelDisplayConfig: o.funnelDisplayConfig,
4081
+ flowCube: o.flowCube,
4082
+ flowBindingKey: o.flowBindingKey,
4083
+ flowTimeDimension: o.flowTimeDimension,
4084
+ eventDimension: o.eventDimension,
4085
+ startingStep: o.startingStep,
4086
+ stepsBefore: o.stepsBefore,
4087
+ stepsAfter: o.stepsAfter,
4088
+ joinStrategy: o.joinStrategy,
4089
+ flowDisplayConfig: o.flowDisplayConfig,
4090
+ retentionCube: o.retentionCube,
4091
+ retentionBindingKey: o.retentionBindingKey,
4092
+ retentionTimeDimension: o.retentionTimeDimension,
4093
+ retentionDateRange: o.retentionDateRange,
4094
+ retentionCohortFilters: o.retentionCohortFilters,
4095
+ retentionActivityFilters: o.retentionActivityFilters,
4096
+ retentionBreakdowns: o.retentionBreakdowns,
4097
+ retentionViewGranularity: o.retentionViewGranularity,
4098
+ retentionPeriods: o.retentionPeriods,
4099
+ retentionType: o.retentionType,
4100
+ retentionDisplayConfig: o.retentionDisplayConfig,
4101
+ executionStatus: c.executionStatus,
4102
+ executionResults: c.executionResults,
4103
+ perQueryResults: c.perQueryResults,
4104
+ isLoading: c.isLoading,
4105
+ isFetching: c.isFetching,
4106
+ error: c.error,
4107
+ isValidQuery: o.effectiveIsValidQuery,
4108
+ debugDataPerQuery: c.debugDataPerQuery,
4109
+ needsRefresh: c.needsRefresh,
4110
+ warnings: c.warnings,
4111
+ funnelExecutedQueries: c.funnelExecutedQueries,
4112
+ funnelServerQuery: c.funnelServerQuery,
4113
+ funnelDebugData: c.funnelDebugData,
4114
+ flowServerQuery: c.flowServerQuery,
4115
+ flowDebugData: c.flowDebugData,
4116
+ retentionServerQuery: c.retentionServerQuery,
4117
+ retentionDebugData: c.retentionDebugData,
4118
+ retentionChartData: c.retentionChartData,
4119
+ retentionValidation: c.retentionValidation,
4120
+ chartType: o.chartType,
4121
+ chartConfig: o.chartConfig,
4122
+ displayConfig: o.displayConfig,
4123
+ colorPalette: o.colorPalette,
4124
+ localPaletteName: o.localPaletteName,
4125
+ chartAvailability: o.chartAvailability,
4126
+ combinedMetrics: o.combinedMetrics,
4127
+ combinedBreakdowns: o.combinedBreakdowns,
4128
+ effectiveBreakdowns: o.effectiveBreakdowns,
4129
+ activeTab: o.activeTab,
4130
+ activeView: o.activeView,
4131
+ displayLimit: o.displayLimit,
4132
+ showFieldModal: o.showFieldModal,
4133
+ fieldModalMode: o.fieldModalMode,
4134
+ activeTableIndex: o.activeTableIndex,
4135
+ userManuallySelectedChart: o.userManuallySelectedChart,
3871
4136
  aiState: {
3872
- isOpen: ot.isOpen,
3873
- userPrompt: ot.userPrompt,
3874
- isGenerating: ot.isGenerating,
3875
- error: ot.error,
3876
- hasGeneratedQuery: ot.hasGeneratedQuery
4137
+ isOpen: l.aiState.isOpen,
4138
+ userPrompt: l.aiState.userPrompt,
4139
+ isGenerating: l.aiState.isGenerating,
4140
+ error: l.aiState.error,
4141
+ hasGeneratedQuery: l.aiState.hasGeneratedQuery
3877
4142
  },
3878
- shareButtonState: ht.current,
3879
- canShare: gt,
3880
- adapterValidation: vt,
4143
+ shareButtonState: l.shareButtonState,
4144
+ canShare: l.canShare,
4145
+ adapterValidation: o.adapterValidation,
3881
4146
  actions: {
3882
- setActiveQueryIndex: c.setActiveQueryIndex,
3883
- setMergeStrategy: c.setMergeStrategy,
3884
- openMetricsModal: be,
3885
- addMetric: xe,
3886
- removeMetric: Se,
3887
- toggleMetric: Ce,
3888
- reorderMetrics: we,
3889
- openBreakdownsModal: Te,
3890
- addBreakdown: Ee,
3891
- removeBreakdown: De,
3892
- toggleBreakdown: Oe,
3893
- setBreakdownGranularity: ke,
3894
- toggleBreakdownComparison: Ae,
3895
- reorderBreakdowns: je,
3896
- setFilters: Me,
3897
- dropFieldToFilter: Ne,
3898
- setOrder: Pe,
3899
- setLimit: Fe,
3900
- addQuery: c.addQuery,
3901
- removeQuery: c.removeQuery,
3902
- setFunnelBindingKey: Re,
3903
- setAnalysisType: ze,
3904
- setFunnelCube: Be,
3905
- addFunnelStep: Ve,
3906
- removeFunnelStep: He,
3907
- updateFunnelStep: Ue,
3908
- setActiveFunnelStepIndex: We,
3909
- reorderFunnelSteps: Ge,
3910
- setFunnelTimeDimension: Ke,
3911
- setFunnelDisplayConfig: Y,
3912
- setFlowCube: Ye,
3913
- setFlowBindingKey: Xe,
3914
- setFlowTimeDimension: Ze,
3915
- setEventDimension: Qe,
3916
- setStartingStepName: $e,
3917
- setStartingStepFilters: et,
3918
- setStepsBefore: tt,
3919
- setStepsAfter: nt,
3920
- setJoinStrategy: rt,
3921
- setFlowDisplayConfig: it,
3922
- setRetentionCube: F,
3923
- setRetentionBindingKey: pe,
3924
- setRetentionTimeDimension: L,
3925
- setRetentionDateRange: B,
3926
- setRetentionCohortFilters: V,
3927
- setRetentionActivityFilters: H,
3928
- setRetentionBreakdowns: U,
3929
- addRetentionBreakdown: me,
3930
- removeRetentionBreakdown: W,
3931
- setRetentionViewGranularity: he,
3932
- setRetentionPeriods: ge,
3933
- setRetentionType: _e,
3934
- setRetentionDisplayConfig: at,
3935
- setChartType: q.setChartType,
3936
- setChartConfig: q.setChartConfig,
3937
- setDisplayConfig: q.setDisplayConfig,
3938
- setLocalPaletteName: q.setLocalPaletteName,
3939
- setActiveTab: J.setActiveTab,
3940
- setActiveView: J.setActiveView,
3941
- setDisplayLimit: J.setDisplayLimit,
3942
- closeFieldModal: J.closeFieldModal,
3943
- setActiveTableIndex: J.setActiveTableIndex,
3944
- openAI: st,
3945
- closeAI: ct,
3946
- setAIPrompt: lt,
3947
- generateAI: xt,
3948
- acceptAI: St,
3949
- cancelAI: Ct,
3950
- share: wt,
3951
- clearQuery: Ie,
3952
- clearCurrentMode: Le,
3953
- refetch: K.refetch,
3954
- handleFieldSelected: bt
4147
+ setActiveQueryIndex: o.actions.setActiveQueryIndex,
4148
+ setMergeStrategy: o.actions.setMergeStrategy,
4149
+ openMetricsModal: o.actions.openMetricsModal,
4150
+ addMetric: o.actions.addMetric,
4151
+ removeMetric: o.actions.removeMetric,
4152
+ toggleMetric: o.actions.toggleMetric,
4153
+ reorderMetrics: o.actions.reorderMetrics,
4154
+ openBreakdownsModal: o.actions.openBreakdownsModal,
4155
+ addBreakdown: o.actions.addBreakdown,
4156
+ removeBreakdown: o.actions.removeBreakdown,
4157
+ toggleBreakdown: o.actions.toggleBreakdown,
4158
+ setBreakdownGranularity: o.actions.setBreakdownGranularity,
4159
+ toggleBreakdownComparison: o.actions.toggleBreakdownComparison,
4160
+ reorderBreakdowns: o.actions.reorderBreakdowns,
4161
+ setFilters: o.actions.setFilters,
4162
+ dropFieldToFilter: o.actions.dropFieldToFilter,
4163
+ setOrder: o.actions.setOrder,
4164
+ setLimit: o.actions.setLimit,
4165
+ addQuery: o.actions.addQuery,
4166
+ removeQuery: o.actions.removeQuery,
4167
+ setFunnelBindingKey: o.actions.setFunnelBindingKey,
4168
+ setAnalysisType: o.actions.setAnalysisType,
4169
+ setFunnelCube: o.actions.setFunnelCube,
4170
+ addFunnelStep: o.actions.addFunnelStep,
4171
+ removeFunnelStep: o.actions.removeFunnelStep,
4172
+ updateFunnelStep: o.actions.updateFunnelStep,
4173
+ setActiveFunnelStepIndex: o.actions.setActiveFunnelStepIndex,
4174
+ reorderFunnelSteps: o.actions.reorderFunnelSteps,
4175
+ setFunnelTimeDimension: o.actions.setFunnelTimeDimension,
4176
+ setFunnelDisplayConfig: o.actions.setFunnelDisplayConfig,
4177
+ setFlowCube: o.actions.setFlowCube,
4178
+ setFlowBindingKey: o.actions.setFlowBindingKey,
4179
+ setFlowTimeDimension: o.actions.setFlowTimeDimension,
4180
+ setEventDimension: o.actions.setEventDimension,
4181
+ setStartingStepName: o.actions.setStartingStepName,
4182
+ setStartingStepFilters: o.actions.setStartingStepFilters,
4183
+ setStepsBefore: o.actions.setStepsBefore,
4184
+ setStepsAfter: o.actions.setStepsAfter,
4185
+ setJoinStrategy: o.actions.setJoinStrategy,
4186
+ setFlowDisplayConfig: o.actions.setFlowDisplayConfig,
4187
+ setRetentionCube: o.actions.setRetentionCube,
4188
+ setRetentionBindingKey: o.actions.setRetentionBindingKey,
4189
+ setRetentionTimeDimension: o.actions.setRetentionTimeDimension,
4190
+ setRetentionDateRange: o.actions.setRetentionDateRange,
4191
+ setRetentionCohortFilters: o.actions.setRetentionCohortFilters,
4192
+ setRetentionActivityFilters: o.actions.setRetentionActivityFilters,
4193
+ setRetentionBreakdowns: o.actions.setRetentionBreakdowns,
4194
+ addRetentionBreakdown: o.actions.addRetentionBreakdown,
4195
+ removeRetentionBreakdown: o.actions.removeRetentionBreakdown,
4196
+ setRetentionViewGranularity: o.actions.setRetentionViewGranularity,
4197
+ setRetentionPeriods: o.actions.setRetentionPeriods,
4198
+ setRetentionType: o.actions.setRetentionType,
4199
+ setRetentionDisplayConfig: o.actions.setRetentionDisplayConfig,
4200
+ setChartType: o.actions.setChartType,
4201
+ setChartConfig: o.actions.setChartConfig,
4202
+ setDisplayConfig: o.actions.setDisplayConfig,
4203
+ setLocalPaletteName: o.actions.setLocalPaletteName,
4204
+ setActiveTab: o.actions.setActiveTab,
4205
+ setActiveView: o.actions.setActiveView,
4206
+ setDisplayLimit: o.actions.setDisplayLimit,
4207
+ closeFieldModal: o.actions.closeFieldModal,
4208
+ setActiveTableIndex: o.actions.setActiveTableIndex,
4209
+ openAI: l.openAI,
4210
+ closeAI: l.closeAI,
4211
+ setAIPrompt: l.setAIPrompt,
4212
+ generateAI: l.generateAI,
4213
+ acceptAI: l.acceptAI,
4214
+ cancelAI: l.cancelAI,
4215
+ share: l.share,
4216
+ clearQuery: o.actions.clearQuery,
4217
+ clearCurrentMode: o.actions.clearCurrentMode,
4218
+ refetch: c.refetch,
4219
+ handleFieldSelected: o.actions.handleFieldSelected
3955
4220
  },
3956
- getQueryConfig: Tt,
3957
- getChartConfig: Et,
3958
- getAnalysisType: Dt
4221
+ getQueryConfig: o.getQueryConfig,
4222
+ getChartConfig: o.getChartConfig,
4223
+ getAnalysisType: o.getAnalysisType
3959
4224
  };
3960
4225
  }
3961
4226
  //#endregion
3962
4227
  //#region src/client/utils/funnelValidation.ts
3963
- function lr(e, t) {
4228
+ function ur(e, t) {
3964
4229
  let n = [];
3965
4230
  if (!t?.cubes) return n;
3966
4231
  if (typeof e.dimension == "string") {
@@ -3984,7 +4249,7 @@ function lr(e, t) {
3984
4249
  }
3985
4250
  return n;
3986
4251
  }
3987
- function ur(e) {
4252
+ function dr(e) {
3988
4253
  let t = [];
3989
4254
  for (let n = 0; n < e.length; n++) {
3990
4255
  let r = e[n], i = r.query;
@@ -3996,17 +4261,17 @@ function ur(e) {
3996
4261
  }
3997
4262
  return t;
3998
4263
  }
3999
- function dr(e, t) {
4264
+ function fr(e, t) {
4000
4265
  if (typeof e.dimension == "string") return !0;
4001
- let n = j(t);
4266
+ let n = I(t);
4002
4267
  return n ? e.dimension.some((e) => e.cube === n) : !1;
4003
4268
  }
4004
- function fr(e, t) {
4269
+ function pr(e, t) {
4005
4270
  let n = [];
4006
4271
  for (let r = 0; r < t.length; r++) {
4007
4272
  let i = t[r];
4008
- if (!dr(e, i.query)) {
4009
- let e = j(i.query) || "unknown";
4273
+ if (!fr(e, i.query)) {
4274
+ let e = I(i.query) || "unknown";
4010
4275
  n.push({
4011
4276
  type: "cross_cube",
4012
4277
  message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
@@ -4016,26 +4281,26 @@ function fr(e, t) {
4016
4281
  }
4017
4282
  return n;
4018
4283
  }
4019
- function pr(e) {
4284
+ function mr(e) {
4020
4285
  return e ? /^P(?:\d+Y)?(?:\d+M)?(?:\d+W)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$/.test(e) ? null : {
4021
4286
  type: "time_window",
4022
4287
  message: `Invalid time window format "${e}". Expected ISO 8601 duration (e.g., P7D, PT1H)`
4023
4288
  } : null;
4024
4289
  }
4025
- function mr(e, t) {
4290
+ function hr(e, t) {
4026
4291
  let n = [], r = [];
4027
4292
  e.steps.length < 2 && n.push({
4028
4293
  type: "general",
4029
4294
  message: "Funnel requires at least 2 steps"
4030
- }), e.bindingKey?.dimension ? (n.push(...lr(e.bindingKey, t)), n.push(...fr(e.bindingKey, e.steps))) : n.push({
4295
+ }), e.bindingKey?.dimension ? (n.push(...ur(e.bindingKey, t)), n.push(...pr(e.bindingKey, e.steps))) : n.push({
4031
4296
  type: "binding_key",
4032
4297
  message: "Binding key dimension is required"
4033
- }), n.push(...ur(e.steps));
4298
+ }), n.push(...dr(e.steps));
4034
4299
  for (let t = 0; t < e.steps.length; t++) {
4035
- let r = e.steps[t], i = pr(r.timeToConvert);
4300
+ let r = e.steps[t], i = mr(r.timeToConvert);
4036
4301
  i && (i.stepIndex = t, n.push(i));
4037
4302
  }
4038
- let i = pr(e.globalTimeWindow);
4303
+ let i = mr(e.globalTimeWindow);
4039
4304
  return i && n.push(i), e.steps.length > 5 && r.push({
4040
4305
  type: "general",
4041
4306
  message: "Funnels with more than 5 steps may have reduced performance"
@@ -4045,7 +4310,7 @@ function mr(e, t) {
4045
4310
  warnings: r
4046
4311
  };
4047
4312
  }
4048
- function hr(e, t) {
4313
+ function gr(e, t) {
4049
4314
  return t < 2 ? {
4050
4315
  isValid: !1,
4051
4316
  message: "Add at least 2 steps for funnel"
@@ -4054,7 +4319,7 @@ function hr(e, t) {
4054
4319
  message: "Select a binding key dimension"
4055
4320
  } : { isValid: !0 };
4056
4321
  }
4057
- function gr(e) {
4322
+ function _r(e) {
4058
4323
  if (!e?.cubes) return [];
4059
4324
  let t = [];
4060
4325
  for (let n of e.cubes) if (n.dimensions) for (let e of n.dimensions) (e.type === "string" || e.type === "number") && t.push({
@@ -4064,7 +4329,7 @@ function gr(e) {
4064
4329
  });
4065
4330
  return t;
4066
4331
  }
4067
- function _r(e) {
4332
+ function vr(e) {
4068
4333
  if (!e?.dimension) return "Select binding key...";
4069
4334
  if (typeof e.dimension == "string") return e.dimension.split(".")[1] || e.dimension;
4070
4335
  if (e.dimension.length > 0) {
@@ -4074,6 +4339,6 @@ function _r(e) {
4074
4339
  return "Select binding key...";
4075
4340
  }
4076
4341
  //#endregion
4077
- export { Dn as A, yn as C, wn as D, xn as E, nt as F, Je as I, $ as M, bn as N, On as O, Pt as P, An as S, Tn as T, Mn as _, fr as a, jn as b, cr as c, er as d, rr as f, Nn as g, or as h, lr as i, En as j, Sn as k, $n as l, ir as m, _r as n, mr as o, tr as p, hr as r, ur as s, gr as t, nr as u, Rn as v, Cn as w, Pn as x, In as y };
4342
+ export { Dn as A, wn as C, kn as D, Tn as E, Ye as F, xn as M, Ft as N, Cn as O, rt as P, bn as S, Sn as T, zn as _, pr as a, Fn as b, lr as c, tr as d, $n as f, Nn as g, Pn as h, ur as i, $ as j, On as k, Zn as l, ir as m, vr as n, hr as o, nr as p, gr as r, dr as s, _r as t, Qn as u, Ln as v, En as w, jn as x, Mn as y };
4078
4343
 
4079
- //# sourceMappingURL=analysis-builder-shared-BVK4TYfR.js.map
4344
+ //# sourceMappingURL=analysis-builder-shared-AdAYIfj_.js.map