drizzle-cube 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/adapters/ActivityGridChart.config-XMtoteb6.js +2 -0
  2. package/dist/adapters/ActivityGridChart.config-h1AXPvn0.cjs +1 -0
  3. package/dist/adapters/AreaChart.config-DYf9wufo.cjs +1 -0
  4. package/dist/adapters/AreaChart.config-We6b53aT.js +2 -0
  5. package/dist/adapters/BarChart.config-4SX44IYv.cjs +1 -0
  6. package/dist/adapters/BarChart.config-CwBnyptL.js +2 -0
  7. package/dist/adapters/BoxPlotChart.config-BzNe-FlW.cjs +1 -0
  8. package/dist/adapters/BoxPlotChart.config-mfAHqmcp.js +2 -0
  9. package/dist/adapters/BubbleChart.config-CBT5jMdc.cjs +1 -0
  10. package/dist/adapters/BubbleChart.config-DxG_Umal.js +2 -0
  11. package/dist/adapters/CandlestickChart.config-Cqw3XP1h.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-DPSSlzUD.cjs +1 -0
  13. package/dist/adapters/DataTable.config-DS1bvaDu.js +2 -0
  14. package/dist/adapters/DataTable.config-D_NsMeyz.cjs +1 -0
  15. package/dist/adapters/DotStripChart.config-BApWn6QV.cjs +1 -0
  16. package/dist/adapters/DotStripChart.config-Bdk5-YfB.js +2 -0
  17. package/dist/adapters/FunnelChart.config-BT5up_Bg.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-ISZiz9fn.js +2 -0
  19. package/dist/adapters/GaugeChart.config-Biaq1cKc.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-BjGfB84t.js +2 -0
  21. package/dist/adapters/HeatMapChart.config-Bmca8KiH.cjs +1 -0
  22. package/dist/adapters/HeatMapChart.config-uWvR0B-N.js +2 -0
  23. package/dist/adapters/KpiDelta.config-CJeDdj_1.js +2 -0
  24. package/dist/adapters/KpiDelta.config-CKr9pAxL.cjs +1 -0
  25. package/dist/adapters/KpiNumber.config-6YLEF2fy.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-C00M46GA.js +2 -0
  27. package/dist/adapters/KpiText.config-C8Av_D2W.cjs +1 -0
  28. package/dist/adapters/KpiText.config-bKTHob0C.js +2 -0
  29. package/dist/adapters/LineChart.config-DH68HT_B.js +2 -0
  30. package/dist/adapters/LineChart.config-DPq7GvL9.cjs +1 -0
  31. package/dist/adapters/MarkdownChart.config-CaaJPO3c.js +2 -0
  32. package/dist/adapters/MarkdownChart.config-ca_UyhWJ.cjs +1 -0
  33. package/dist/adapters/MeasureProfileChart.config-C1Il0IqL.cjs +1 -0
  34. package/dist/adapters/MeasureProfileChart.config-DMOnkmb6.js +2 -0
  35. package/dist/adapters/PieChart.config-Bg-8cxWK.js +2 -0
  36. package/dist/adapters/PieChart.config-joJcF--K.cjs +1 -0
  37. package/dist/adapters/ProportionBarChart.config-B2sltKsI.cjs +1 -0
  38. package/dist/adapters/ProportionBarChart.config-BlCedy1v.js +2 -0
  39. package/dist/adapters/RadarChart.config-DD1pX6FZ.js +2 -0
  40. package/dist/adapters/RadarChart.config-DVCCLSVw.cjs +1 -0
  41. package/dist/adapters/RadialBarChart.config--VIE2jMM.js +2 -0
  42. package/dist/adapters/RadialBarChart.config-BZwyWhTg.cjs +1 -0
  43. package/dist/adapters/RecordsTable.config-CTBQc-2r.js +2 -0
  44. package/dist/adapters/RecordsTable.config-DPdO0DL5.cjs +1 -0
  45. package/dist/adapters/RetentionCombinedChart.config-PGVxnkRL.js +2 -0
  46. package/dist/adapters/RetentionCombinedChart.config-mX5PMh82.cjs +1 -0
  47. package/dist/adapters/RetentionHeatmap.config-Co-JMzBm.js +2 -0
  48. package/dist/adapters/RetentionHeatmap.config-Cub3-ksy.cjs +1 -0
  49. package/dist/adapters/SankeyChart.config-BkIyUcAE.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-DGTnRmYg.js +2 -0
  51. package/dist/adapters/ScatterChart.config-CdZrBorg.js +2 -0
  52. package/dist/adapters/ScatterChart.config-CwN9niUL.cjs +1 -0
  53. package/dist/adapters/SunburstChart.config-D0ZkRSJv.cjs +1 -0
  54. package/dist/adapters/SunburstChart.config-RF3uu5Sa.js +2 -0
  55. package/dist/adapters/TreeMapChart.config-B2Yn_V7p.cjs +1 -0
  56. package/dist/adapters/TreeMapChart.config-diJtcs4D.js +2 -0
  57. package/dist/adapters/WaterfallChart.config-B10PxftT.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-BImlkLmR.js +2 -0
  59. package/dist/adapters/chartConfigHelpers-BhME7ow_.cjs +1 -0
  60. package/dist/adapters/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  61. package/dist/adapters/{compiler-Dw5tYox7.cjs → compiler-B-yljK02.cjs} +6 -6
  62. package/dist/adapters/{compiler-C8fOs43d.js → compiler-BhityGUO.js} +197 -186
  63. package/dist/adapters/core/index.cjs +1 -1
  64. package/dist/adapters/core/index.js +1 -1
  65. package/dist/adapters/{core-BP6GiYzO.cjs → core-CQOrzBNh.cjs} +1 -1
  66. package/dist/adapters/{core-z6vXJ8nF.js → core-xZE0miIu.js} +2 -2
  67. package/dist/adapters/express/index.cjs +1 -1
  68. package/dist/adapters/express/index.js +5 -5
  69. package/dist/adapters/fastify/index.cjs +1 -1
  70. package/dist/adapters/fastify/index.js +5 -5
  71. package/dist/adapters/{handler-CI3Rt-Zt.js → handler-ByeQ0-1r.js} +237 -234
  72. package/dist/adapters/handler-DSNmfv1R.cjs +16 -0
  73. package/dist/adapters/hono/index.cjs +1 -1
  74. package/dist/adapters/hono/index.js +4 -4
  75. package/dist/adapters/mcp-app-html-CNp0VqS_.cjs +1 -0
  76. package/dist/adapters/mcp-app-html-CvWoYMO3.js +5 -0
  77. package/dist/adapters/mcp-app-html.cjs +1 -1
  78. package/dist/adapters/mcp-app-html.js +1 -1
  79. package/dist/adapters/mcp-tools.cjs +1 -1
  80. package/dist/adapters/mcp-tools.js +3 -3
  81. package/dist/adapters/{mcp-transport-DpS_e0gL.js → mcp-transport-Cy6n4uj1.js} +1 -1
  82. package/dist/adapters/{mcp-transport-Bc7-KSG_.cjs → mcp-transport-DnLP5FPL.cjs} +1 -1
  83. package/dist/adapters/nextjs/index.cjs +1 -1
  84. package/dist/adapters/nextjs/index.js +5 -5
  85. package/dist/adapters/{openai-7064EJ1j.cjs → openai-BQl0yJCS.cjs} +1 -1
  86. package/dist/adapters/{openai-CnUBYFyY.js → openai-C4HrjyJj.js} +1 -1
  87. package/dist/adapters/{openai-DpGdZL3m.js → openai-D3Nt6Bj7.js} +1 -1
  88. package/dist/adapters/{openai-B0mByiYQ.cjs → openai-z1ai-G4Q.cjs} +1 -1
  89. package/dist/adapters/{utils-CN_bxSiq.js → utils-BaxFceDq.js} +6 -1
  90. package/dist/adapters/{utils-CvC1czqb.cjs → utils-a2p2B6x8.cjs} +2 -2
  91. package/dist/adapters/utils.cjs +1 -1
  92. package/dist/adapters/utils.js +1 -1
  93. package/dist/cjs/client/charts/chartConfigHelpers.d.ts +5 -0
  94. package/dist/cjs/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  95. package/dist/cjs/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  96. package/dist/cjs/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  97. package/dist/cjs/client/hooks/useAnalysisQuery.d.ts +6 -1
  98. package/dist/cjs/client/index.d.ts +2 -0
  99. package/dist/cjs/client/types.d.ts +3 -0
  100. package/dist/cjs/client/utils/gapFilling.d.ts +52 -0
  101. package/dist/cjs/client/utils/index.d.ts +1 -0
  102. package/dist/cjs/server/ai/query-schema.d.ts +1 -1
  103. package/dist/cjs/server/execution/result-post-processor.d.ts +4 -2
  104. package/dist/cjs/server/executor.d.ts +2 -0
  105. package/dist/cjs/server/gap-filler.d.ts +8 -43
  106. package/dist/cjs/server/types/core.d.ts +2 -0
  107. package/dist/cjs/server/types/cube.d.ts +12 -0
  108. package/dist/cjs/server/types/metadata.d.ts +5 -0
  109. package/dist/cjs/server/types/query.d.ts +2 -1
  110. package/dist/client/charts/chartConfigHelpers.d.ts +5 -0
  111. package/dist/client/charts.js +12 -12
  112. package/dist/client/chunks/{DashboardEditModal-5ZSP--FQ.js → DashboardEditModal-CIR4aqr7.js} +2360 -2548
  113. package/dist/client/chunks/DashboardEditModal-CIR4aqr7.js.map +1 -0
  114. package/dist/client/chunks/{DotStripChart-DTukhwG-.js → DotStripChart-B9IVCFPO.js} +3 -3
  115. package/dist/client/chunks/{DotStripChart-DTukhwG-.js.map → DotStripChart-B9IVCFPO.js.map} +1 -1
  116. package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js → ProportionBarChart-DieF9AzP.js} +3 -3
  117. package/dist/client/chunks/{ProportionBarChart-CPZ2cHxH.js.map → ProportionBarChart-DieF9AzP.js.map} +1 -1
  118. package/dist/client/chunks/{RecordsTable-BC5l67Dc.js → RecordsTable-Mo3ai5_M.js} +4 -4
  119. package/dist/client/chunks/{RecordsTable-BC5l67Dc.js.map → RecordsTable-Mo3ai5_M.js.map} +1 -1
  120. package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js → RetentionCombinedChart-Bie4ADyA.js} +3 -3
  121. package/dist/client/chunks/{RetentionCombinedChart-aj5xblfu.js.map → RetentionCombinedChart-Bie4ADyA.js.map} +1 -1
  122. package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js → RetentionHeatmap-qstIAx5B.js} +2 -2
  123. package/dist/client/chunks/{RetentionHeatmap-CKckuEMF.js.map → RetentionHeatmap-qstIAx5B.js.map} +1 -1
  124. package/dist/client/chunks/{analysis-builder-Db4umQtd.js → analysis-builder-DJNYt7CF.js} +41 -41
  125. package/dist/client/chunks/{analysis-builder-Db4umQtd.js.map → analysis-builder-DJNYt7CF.js.map} +1 -1
  126. package/dist/client/chunks/{analysis-builder-shared-BEvvX6ln.js → analysis-builder-shared-DPLR8upd.js} +487 -483
  127. package/dist/client/chunks/analysis-builder-shared-DPLR8upd.js.map +1 -0
  128. package/dist/client/chunks/{chart-activity-grid-Bbc58UJD.js → chart-activity-grid-Ly_-2B-f.js} +7 -2
  129. package/dist/client/chunks/chart-activity-grid-Ly_-2B-f.js.map +1 -0
  130. package/dist/client/chunks/{chart-area-9uCXIvMN.js → chart-area-D3l-71Wy.js} +2 -2
  131. package/dist/client/chunks/{chart-area-9uCXIvMN.js.map → chart-area-D3l-71Wy.js.map} +1 -1
  132. package/dist/client/chunks/{chart-bar-C5a1T9Ce.js → chart-bar-BaTyQOqs.js} +3 -3
  133. package/dist/client/chunks/{chart-bar-C5a1T9Ce.js.map → chart-bar-BaTyQOqs.js.map} +1 -1
  134. package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js → chart-box-plot-Cem6PHjz.js} +2 -2
  135. package/dist/client/chunks/{chart-box-plot-BbBrZsaJ.js.map → chart-box-plot-Cem6PHjz.js.map} +1 -1
  136. package/dist/client/chunks/{chart-bubble-dt5ESb7m.js → chart-bubble-DFlfqCDG.js} +2 -2
  137. package/dist/client/chunks/{chart-bubble-dt5ESb7m.js.map → chart-bubble-DFlfqCDG.js.map} +1 -1
  138. package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js → chart-candlestick-BkAFBXtZ.js} +2 -2
  139. package/dist/client/chunks/{chart-candlestick-2A2J_NsK.js.map → chart-candlestick-BkAFBXtZ.js.map} +1 -1
  140. package/dist/client/chunks/{chart-config-area-DsrZCIwF.js → chart-config-area-BnsRQ-MY.js} +35 -14
  141. package/dist/client/chunks/chart-config-area-BnsRQ-MY.js.map +1 -0
  142. package/dist/client/chunks/{chart-config-bar-BixSs43E.js → chart-config-bar-G2HJJBVV.js} +8 -7
  143. package/dist/client/chunks/chart-config-bar-G2HJJBVV.js.map +1 -0
  144. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js → chart-config-kpi-delta-BIAq1Ftg.js} +2 -2
  145. package/dist/client/chunks/{chart-config-kpi-delta-Cl7k6jTj.js.map → chart-config-kpi-delta-BIAq1Ftg.js.map} +1 -1
  146. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js → chart-config-kpi-number-Dgc4gIYu.js} +2 -2
  147. package/dist/client/chunks/{chart-config-kpi-number-DCcnANWC.js.map → chart-config-kpi-number-Dgc4gIYu.js.map} +1 -1
  148. package/dist/client/chunks/{chart-config-line-CBF9Px9b.js → chart-config-line-DLkRs1Zr.js} +9 -8
  149. package/dist/client/chunks/chart-config-line-DLkRs1Zr.js.map +1 -0
  150. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js → chart-config-pie-XrHim0C8.js} +2 -2
  151. package/dist/client/chunks/{chart-config-pie-DZLa6Eqm.js.map → chart-config-pie-XrHim0C8.js.map} +1 -1
  152. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js → chart-config-radar-xNS6Juqc.js} +2 -2
  153. package/dist/client/chunks/{chart-config-radar-DR6vHHyd.js.map → chart-config-radar-xNS6Juqc.js.map} +1 -1
  154. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js → chart-config-radial-bar-ChUChsEe.js} +2 -2
  155. package/dist/client/chunks/{chart-config-radial-bar-DVFou4fB.js.map → chart-config-radial-bar-ChUChsEe.js.map} +1 -1
  156. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js → chart-config-tree-map-CnrJ7OC1.js} +2 -2
  157. package/dist/client/chunks/{chart-config-tree-map-Uhise6Bx.js.map → chart-config-tree-map-CnrJ7OC1.js.map} +1 -1
  158. package/dist/client/chunks/{chart-data-table-zSjYEy0r.js → chart-data-table-Cxd0cdAl.js} +36 -36
  159. package/dist/client/chunks/{chart-data-table-zSjYEy0r.js.map → chart-data-table-Cxd0cdAl.js.map} +1 -1
  160. package/dist/client/chunks/{chart-funnel-CuOSCsbt.js → chart-funnel-71Kn4eeF.js} +2 -2
  161. package/dist/client/chunks/{chart-funnel-CuOSCsbt.js.map → chart-funnel-71Kn4eeF.js.map} +1 -1
  162. package/dist/client/chunks/{chart-gauge-DxKeqCCD.js → chart-gauge-BddS_9oS.js} +3 -3
  163. package/dist/client/chunks/{chart-gauge-DxKeqCCD.js.map → chart-gauge-BddS_9oS.js.map} +1 -1
  164. package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js → chart-heat-map-BQIsrn8m.js} +3 -3
  165. package/dist/client/chunks/{chart-heat-map-C1dvW-ov.js.map → chart-heat-map-BQIsrn8m.js.map} +1 -1
  166. package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js → chart-kpi-delta-DndbqdZT.js} +3 -3
  167. package/dist/client/chunks/{chart-kpi-delta-CgehGc9d.js.map → chart-kpi-delta-DndbqdZT.js.map} +1 -1
  168. package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js → chart-kpi-number-DAbfoHMt.js} +5 -5
  169. package/dist/client/chunks/{chart-kpi-number-C31-6A6m.js.map → chart-kpi-number-DAbfoHMt.js.map} +1 -1
  170. package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js → chart-kpi-text-D8oQgpxL.js} +3 -3
  171. package/dist/client/chunks/{chart-kpi-text-D2ydQIEn.js.map → chart-kpi-text-D8oQgpxL.js.map} +1 -1
  172. package/dist/client/chunks/{chart-line-CjW9Yo03.js → chart-line-BNqjUowg.js} +3 -3
  173. package/dist/client/chunks/{chart-line-CjW9Yo03.js.map → chart-line-BNqjUowg.js.map} +1 -1
  174. package/dist/client/chunks/{chart-markdown-Cgs62had.js → chart-markdown-DtgpU3xd.js} +2 -2
  175. package/dist/client/chunks/{chart-markdown-Cgs62had.js.map → chart-markdown-DtgpU3xd.js.map} +1 -1
  176. package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js → chart-measure-profile-D5nZMWlI.js} +3 -3
  177. package/dist/client/chunks/{chart-measure-profile-Cg39gYjR.js.map → chart-measure-profile-D5nZMWlI.js.map} +1 -1
  178. package/dist/client/chunks/{chart-pie-BTb5nKd7.js → chart-pie-D8r9HCZ4.js} +3 -3
  179. package/dist/client/chunks/{chart-pie-BTb5nKd7.js.map → chart-pie-D8r9HCZ4.js.map} +1 -1
  180. package/dist/client/chunks/{chart-radar-8384sPlX.js → chart-radar-R4PuCIWp.js} +3 -3
  181. package/dist/client/chunks/{chart-radar-8384sPlX.js.map → chart-radar-R4PuCIWp.js.map} +1 -1
  182. package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js → chart-radial-bar-hmrSFa6O.js} +3 -3
  183. package/dist/client/chunks/{chart-radial-bar-CuBmmOTU.js.map → chart-radial-bar-hmrSFa6O.js.map} +1 -1
  184. package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js → chart-sankey-CFXPybny.js} +2 -2
  185. package/dist/client/chunks/{chart-sankey-CoIuG7Nu.js.map → chart-sankey-CFXPybny.js.map} +1 -1
  186. package/dist/client/chunks/{chart-scatter-Bdj95OeV.js → chart-scatter-CH82md0L.js} +3 -3
  187. package/dist/client/chunks/{chart-scatter-Bdj95OeV.js.map → chart-scatter-CH82md0L.js.map} +1 -1
  188. package/dist/client/chunks/{chart-sunburst-CuG8520_.js → chart-sunburst-CTj95eEC.js} +3 -3
  189. package/dist/client/chunks/{chart-sunburst-CuG8520_.js.map → chart-sunburst-CTj95eEC.js.map} +1 -1
  190. package/dist/client/chunks/{chart-tree-map-CtJADX87.js → chart-tree-map-CmysE4bF.js} +3 -3
  191. package/dist/client/chunks/{chart-tree-map-CtJADX87.js.map → chart-tree-map-CmysE4bF.js.map} +1 -1
  192. package/dist/client/chunks/{chart-waterfall-D430fO48.js → chart-waterfall-Bv1mPvlB.js} +3 -3
  193. package/dist/client/chunks/{chart-waterfall-D430fO48.js.map → chart-waterfall-Bv1mPvlB.js.map} +1 -1
  194. package/dist/client/chunks/{charts-core-BSmlKmf0.js → charts-core-BdEQgbqN.js} +2 -2
  195. package/dist/client/chunks/{charts-core-BSmlKmf0.js.map → charts-core-BdEQgbqN.js.map} +1 -1
  196. package/dist/client/chunks/charts-loader-DoLQqFXg.js +87 -0
  197. package/dist/client/chunks/{charts-loader-Bz9yHkW1.js.map → charts-loader-DoLQqFXg.js.map} +1 -1
  198. package/dist/client/chunks/gapFilling-DKBRHcQL.js +391 -0
  199. package/dist/client/chunks/gapFilling-DKBRHcQL.js.map +1 -0
  200. package/dist/client/chunks/{nl-NL-BrqrWoAj.js → nl-NL-DVZXf8U7.js} +6 -1
  201. package/dist/client/chunks/nl-NL-DVZXf8U7.js.map +1 -0
  202. package/dist/client/chunks/{schema-visualization-D2NvjQny.js → schema-visualization-MlRrcJQH.js} +3 -3
  203. package/dist/client/chunks/{schema-visualization-D2NvjQny.js.map → schema-visualization-MlRrcJQH.js.map} +1 -1
  204. package/dist/client/chunks/{useDirtyStateTracking-DL_AnCWZ.js → useDirtyStateTracking-DSkxAJ29.js} +317 -292
  205. package/dist/client/chunks/useDirtyStateTracking-DSkxAJ29.js.map +1 -0
  206. package/dist/client/chunks/{useExplainAI-CdPWtj7E.js → useExplainAI-DRCIVcbu.js} +4 -4
  207. package/dist/client/chunks/{useExplainAI-CdPWtj7E.js.map → useExplainAI-DRCIVcbu.js.map} +1 -1
  208. package/dist/client/chunks/utils-CToHkuhU.js.map +1 -1
  209. package/dist/client/chunks/{vendor-Bpaolt6h.js → vendor-BfBpNmMa.js} +2 -2
  210. package/dist/client/chunks/{vendor-Bpaolt6h.js.map → vendor-BfBpNmMa.js.map} +1 -1
  211. package/dist/client/components/analyticsPortlet/usePortletQueryResults.d.ts +3 -1
  212. package/dist/client/components.js +2 -2
  213. package/dist/client/hooks/queries/useCubeLoadQuery.d.ts +7 -0
  214. package/dist/client/hooks/queries/useMultiCubeLoadQuery.d.ts +7 -0
  215. package/dist/client/hooks/useAnalysisQuery.d.ts +6 -1
  216. package/dist/client/hooks.js +3 -3
  217. package/dist/client/icons.js +1 -1
  218. package/dist/client/index.d.ts +2 -0
  219. package/dist/client/index.js +193 -192
  220. package/dist/client/index.js.map +1 -1
  221. package/dist/client/providers.js +1 -1
  222. package/dist/client/schema.js +1 -1
  223. package/dist/client/types.d.ts +3 -0
  224. package/dist/client/utils/gapFilling.d.ts +52 -0
  225. package/dist/client/utils/index.d.ts +1 -0
  226. package/dist/client/utils.js +9 -8
  227. package/dist/client/utils.js.map +1 -1
  228. package/dist/client-bundle-stats.html +1 -1
  229. package/dist/mcp-app/mcp-app.html +101 -101
  230. package/dist/server/ai/query-schema.d.ts +1 -1
  231. package/dist/server/chartConfigHelpers-BhME7ow_.cjs +1 -0
  232. package/dist/server/{chartConfigHelpers-BsnbxA2c.js → chartConfigHelpers-BsviVhEw.js} +27 -7
  233. package/dist/server/execution/result-post-processor.d.ts +4 -2
  234. package/dist/server/executor.d.ts +2 -0
  235. package/dist/server/gap-filler.d.ts +8 -43
  236. package/dist/server/index.cjs +34 -34
  237. package/dist/server/index.js +2049 -2030
  238. package/dist/server/types/core.d.ts +2 -0
  239. package/dist/server/types/cube.d.ts +12 -0
  240. package/dist/server/types/metadata.d.ts +5 -0
  241. package/dist/server/types/query.d.ts +2 -1
  242. package/package.json +1 -1
  243. package/dist/adapters/ActivityGridChart.config-BpGv0FYq.js +0 -2
  244. package/dist/adapters/ActivityGridChart.config-DWs9dRl7.cjs +0 -1
  245. package/dist/adapters/AreaChart.config-Cn8nAQqj.cjs +0 -1
  246. package/dist/adapters/AreaChart.config-NDMkAi9w.js +0 -2
  247. package/dist/adapters/BarChart.config-CuGCupRX.cjs +0 -1
  248. package/dist/adapters/BarChart.config-D4Ct_ZuS.js +0 -2
  249. package/dist/adapters/BoxPlotChart.config-BEHZDgrz.js +0 -2
  250. package/dist/adapters/BoxPlotChart.config-DnC3xk7q.cjs +0 -1
  251. package/dist/adapters/BubbleChart.config-D0ouKOKS.cjs +0 -1
  252. package/dist/adapters/BubbleChart.config-Du8aEfdQ.js +0 -2
  253. package/dist/adapters/CandlestickChart.config-B0B6dKYG.cjs +0 -1
  254. package/dist/adapters/CandlestickChart.config-DBilZaFc.js +0 -2
  255. package/dist/adapters/DataTable.config-BXalzUPO.cjs +0 -1
  256. package/dist/adapters/DataTable.config-CF8BzQHu.js +0 -2
  257. package/dist/adapters/DotStripChart.config-0ggseDij.cjs +0 -1
  258. package/dist/adapters/DotStripChart.config-CfHh0XSW.js +0 -2
  259. package/dist/adapters/FunnelChart.config-AcSpen_Q.js +0 -2
  260. package/dist/adapters/FunnelChart.config-D6k89qDc.cjs +0 -1
  261. package/dist/adapters/GaugeChart.config-B5BcrEvW.cjs +0 -1
  262. package/dist/adapters/GaugeChart.config-BChbha74.js +0 -2
  263. package/dist/adapters/HeatMapChart.config-BgkP8kiW.js +0 -2
  264. package/dist/adapters/HeatMapChart.config-Crq7vBwj.cjs +0 -1
  265. package/dist/adapters/KpiDelta.config-Cqu1WOkV.js +0 -2
  266. package/dist/adapters/KpiDelta.config-edWLG1bM.cjs +0 -1
  267. package/dist/adapters/KpiNumber.config-BLkE67us.cjs +0 -1
  268. package/dist/adapters/KpiNumber.config-DNsH72Rs.js +0 -2
  269. package/dist/adapters/KpiText.config-CAnLZYht.cjs +0 -1
  270. package/dist/adapters/KpiText.config-CQGd10Hj.js +0 -2
  271. package/dist/adapters/LineChart.config-C7l_xff-.js +0 -2
  272. package/dist/adapters/LineChart.config-DOxwtnfG.cjs +0 -1
  273. package/dist/adapters/MarkdownChart.config-BV5j1oJl.cjs +0 -1
  274. package/dist/adapters/MarkdownChart.config-CBkJAEpW.js +0 -2
  275. package/dist/adapters/MeasureProfileChart.config-CyyFz-x_.cjs +0 -1
  276. package/dist/adapters/MeasureProfileChart.config-VIvr7lq6.js +0 -2
  277. package/dist/adapters/PieChart.config-BP8OlSJ4.js +0 -2
  278. package/dist/adapters/PieChart.config-BaMxIlBa.cjs +0 -1
  279. package/dist/adapters/ProportionBarChart.config-CtZaP8Xn.js +0 -2
  280. package/dist/adapters/ProportionBarChart.config-DAyEQ8Pn.cjs +0 -1
  281. package/dist/adapters/RadarChart.config-CG07QZUT.cjs +0 -1
  282. package/dist/adapters/RadarChart.config-DJJuD-Tb.js +0 -2
  283. package/dist/adapters/RadialBarChart.config-BNgzWkot.cjs +0 -1
  284. package/dist/adapters/RadialBarChart.config-DVM_jg9B.js +0 -2
  285. package/dist/adapters/RecordsTable.config-BEQmKQ-S.cjs +0 -1
  286. package/dist/adapters/RecordsTable.config-d4s8HV9m.js +0 -2
  287. package/dist/adapters/RetentionCombinedChart.config-DJ4N-ffd.cjs +0 -1
  288. package/dist/adapters/RetentionCombinedChart.config-DV1h3rW2.js +0 -2
  289. package/dist/adapters/RetentionHeatmap.config-CIJDenRg.cjs +0 -1
  290. package/dist/adapters/RetentionHeatmap.config-P3VVn3QJ.js +0 -2
  291. package/dist/adapters/SankeyChart.config-CQ89DYf7.cjs +0 -1
  292. package/dist/adapters/SankeyChart.config-CfMmdmXJ.js +0 -2
  293. package/dist/adapters/ScatterChart.config-C4zrFpF-.cjs +0 -1
  294. package/dist/adapters/ScatterChart.config-DaJ3LVWH.js +0 -2
  295. package/dist/adapters/SunburstChart.config-1ZRhfGr0.cjs +0 -1
  296. package/dist/adapters/SunburstChart.config-DHgrSIkQ.js +0 -2
  297. package/dist/adapters/TreeMapChart.config-Cy3sAsJP.js +0 -2
  298. package/dist/adapters/TreeMapChart.config-D365WWEK.cjs +0 -1
  299. package/dist/adapters/WaterfallChart.config-DYEf1vQT.js +0 -2
  300. package/dist/adapters/WaterfallChart.config-s8pICbm8.cjs +0 -1
  301. package/dist/adapters/chartConfigHelpers-BZMu_1EP.cjs +0 -1
  302. package/dist/adapters/handler-B78akmC_.cjs +0 -16
  303. package/dist/adapters/mcp-app-html-C1fEW5oE.js +0 -5
  304. package/dist/adapters/mcp-app-html-CGk4ubE0.cjs +0 -1
  305. package/dist/client/chunks/DashboardEditModal-5ZSP--FQ.js.map +0 -1
  306. package/dist/client/chunks/analysis-builder-shared-BEvvX6ln.js.map +0 -1
  307. package/dist/client/chunks/chart-activity-grid-Bbc58UJD.js.map +0 -1
  308. package/dist/client/chunks/chart-config-area-DsrZCIwF.js.map +0 -1
  309. package/dist/client/chunks/chart-config-bar-BixSs43E.js.map +0 -1
  310. package/dist/client/chunks/chart-config-line-CBF9Px9b.js.map +0 -1
  311. package/dist/client/chunks/charts-loader-Bz9yHkW1.js +0 -87
  312. package/dist/client/chunks/nl-NL-BrqrWoAj.js.map +0 -1
  313. package/dist/client/chunks/useDirtyStateTracking-DL_AnCWZ.js.map +0 -1
  314. package/dist/server/chartConfigHelpers-BZMu_1EP.cjs +0 -1
@@ -1,33 +1,34 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-Bpaolt6h.js";
2
- import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-zSjYEy0r.js";
3
- import { A as f, C as p, D as m, E as h, F as g, T as _, _ as v, at as y, b, d as x, f as S, ot as C, st as w, u as T, v as E, w as D, x as O, y as k } from "./DashboardEditModal-5ZSP--FQ.js";
4
- import { a as ee, s as A, t as te } from "./retention-ChW9jYdy.js";
5
- import { O as j, k as M } from "./dashboardExport-Db3rmUP1.js";
6
- import { A as N, D as ne, F as re, I as ie, M as ae, N as P, O as oe, P as se, S as F, T as I, a as L, d as ce, j as le, k as R, l as ue, n as de, r as fe, s as pe } from "./useDirtyStateTracking-DL_AnCWZ.js";
7
- import { B as me, F as z } from "./chart-activity-grid-Bbc58UJD.js";
8
- import { a as he, i as ge } from "./useExplainAI-CdPWtj7E.js";
9
- import { r as _e, s as ve } from "./chart-funnel-CuOSCsbt.js";
10
- import { n as ye } from "./charts-core-BSmlKmf0.js";
11
- import B, { createContext as be, memo as xe, useCallback as V, useContext as Se, useEffect as H, useMemo as U, useRef as W, useState as G } from "react";
12
- import { Fragment as K, jsx as q, jsxs as J } 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-BfBpNmMa.js";
2
+ import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-Cxd0cdAl.js";
3
+ import { C as f, D as p, M as m, _ as h, b as g, d as _, f as v, it as y, nt as b, rt as x, u as S, v as C, w, x as T, y as E } from "./DashboardEditModal-CIR4aqr7.js";
4
+ import { a as D, s as O, t as k } from "./retention-ChW9jYdy.js";
5
+ import { O as A, k as j } from "./dashboardExport-Db3rmUP1.js";
6
+ import { A as ee, D as M, F as N, I as te, M as P, N as ne, O as re, P as ie, S as F, T as I, a as ae, d as oe, j as L, k as R, l as se, n as ce, r as le, s as ue } from "./useDirtyStateTracking-DSkxAJ29.js";
7
+ import { B as de, F as z } from "./chart-activity-grid-Ly_-2B-f.js";
8
+ import { a as fe, i as B, r as pe } from "./gapFilling-DKBRHcQL.js";
9
+ import { a as me, i as he } from "./useExplainAI-DRCIVcbu.js";
10
+ import { r as ge, s as _e } from "./chart-funnel-71Kn4eeF.js";
11
+ import { n as ve } from "./charts-core-BdEQgbqN.js";
12
+ import V, { createContext as ye, memo as be, useCallback as H, useContext as xe, useEffect as U, useMemo as W, useRef as G, useState as K } from "react";
13
+ import { Fragment as Se, jsx as q, jsxs as J } from "react/jsx-runtime";
13
14
  //#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
14
15
  function Ce(e, t) {
15
- let n = le(t, e);
16
+ let n = L(t, e);
16
17
  if (!n?.dateRange) return;
17
- let r = _(n.dateRange);
18
+ let r = fe(n.dateRange);
18
19
  if (!r) return;
19
- let i = p(r.start, r.end);
20
- return [[D(r.start), D(r.end)], [D(i.start), D(i.end)]];
20
+ let i = pe(r.start, r.end);
21
+ return [[B(r.start), B(r.end)], [B(i.start), B(i.end)]];
21
22
  }
22
23
  function we(e, t) {
23
- return re(e, t, "inDateRange");
24
+ return N(e, t, "inDateRange");
24
25
  }
25
26
  //#endregion
26
27
  //#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
27
28
  function Te(e, t, n, r, i = !1, a, o = !1) {
28
29
  let s = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), c = n;
29
30
  if (!i) for (let e of s) c = we(c, e);
30
- c = c.filter((e) => y(e));
31
+ c = c.filter((e) => b(e));
31
32
  let l = {
32
33
  measures: e.map((e) => e.field),
33
34
  dimensions: t.filter((e) => !e.isTimeDimension).map((e) => e.field),
@@ -102,14 +103,14 @@ function ke({ filter: e, dateRange: t }) {
102
103
  }), /* @__PURE__ */ q(Oe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
103
104
  }), o && /* @__PURE__ */ q("div", {
104
105
  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-sm dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
105
- children: E.map((e) => /* @__PURE__ */ q("button", {
106
+ children: C.map((e) => /* @__PURE__ */ q("button", {
106
107
  onClick: () => c(e.value),
107
108
  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"}`,
108
109
  children: n(e.label)
109
110
  }, e.value))
110
111
  })]
111
112
  }),
112
- ne(r) && /* @__PURE__ */ J("div", {
113
+ M(r) && /* @__PURE__ */ J("div", {
113
114
  className: "dc:flex dc:items-center dc:gap-2",
114
115
  children: [/* @__PURE__ */ q("input", {
115
116
  type: "number",
@@ -289,66 +290,66 @@ function Me({ field: e, dateRange: t, combo: n, inputs: r }) {
289
290
  //#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
290
291
  var Ne = d("close"), Pe = d("chevronDown"), Fe = d("dimension"), Ie = d("timeDimension"), Le = d("measure");
291
292
  function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
292
- let { t: a } = z(), [o, s] = G(e), [c, l] = G(!1), [u, d] = G(!1), [f, p] = G(!1), [m, h] = G("this_month"), [g, _] = G(1), [y, x] = G(""), [S, T] = G(null), [D, k] = G(-1), ee = W(null), A = W(null), te = de(y, 300), j = b(o.member, t), M = j?.field.type || "string", N = M === "time", re = j?.fieldType === "measure", ie = j?.fieldType === "dimension", ae = O(o.member, t), P = C[o.operator], oe = w(M), se = N && o.operator === "inDateRange", F = V(() => [
293
+ let { t: a } = z(), [o, s] = K(e), [c, l] = K(!1), [u, d] = K(!1), [f, p] = K(!1), [m, _] = K("this_month"), [v, b] = K(1), [S, w] = K(""), [E, D] = K(null), [O, k] = K(-1), A = G(null), j = G(null), ee = ce(S, 300), N = g(o.member, t), te = N?.field.type || "string", P = te === "time", ne = N?.fieldType === "measure", re = N?.fieldType === "dimension", ie = T(o.member, t), F = x[o.operator], ae = y(te), oe = P && o.operator === "inDateRange", L = H(() => [
293
294
  "equals",
294
295
  "notEquals",
295
296
  "in",
296
297
  "notIn"
297
- ].includes(o.operator) && ie && !N, [
298
+ ].includes(o.operator) && re && !P, [
298
299
  o.operator,
299
- ie,
300
- N
301
- ])(), { values: L, loading: ce, error: le, searchValues: R } = fe(o.member, F);
302
- H(() => {
300
+ re,
301
+ P
302
+ ])(), { values: R, loading: se, error: ue, searchValues: de } = le(o.member, L);
303
+ U(() => {
303
304
  if (!i) {
304
- T(null);
305
+ D(null);
305
306
  return;
306
307
  }
307
308
  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));
308
- T(r ? {
309
+ D(r ? {
309
310
  bottom: window.innerHeight - e.top + 8,
310
311
  left: a
311
312
  } : {
312
313
  top: e.bottom + 8,
313
314
  left: a
314
315
  });
315
- }, [i]), H(() => {
316
+ }, [i]), U(() => {
316
317
  let e = (e) => {
317
- ee.current && !ee.current.contains(e.target) && (l(!1), d(!1), p(!1));
318
+ A.current && !A.current.contains(e.target) && (l(!1), d(!1), p(!1));
318
319
  };
319
320
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
320
- }, []), H(() => {
321
- u && F && R && R("", !0), u || k(-1);
321
+ }, []), U(() => {
322
+ u && L && de && de("", !0), u || k(-1);
322
323
  }, [
323
324
  u,
324
- F,
325
- R
326
- ]), H(() => {
327
- if (D >= 0 && A.current) {
328
- let e = A.current.children[D];
325
+ L,
326
+ de
327
+ ]), U(() => {
328
+ if (O >= 0 && j.current) {
329
+ let e = j.current.children[O];
329
330
  e && e.scrollIntoView({ block: "nearest" });
330
331
  }
331
- }, [D]), H(() => {
332
- u && F && R && te !== void 0 && R(te);
332
+ }, [O]), U(() => {
333
+ u && L && de && ee !== void 0 && de(ee);
333
334
  }, [
334
- te,
335
+ ee,
335
336
  u,
336
- F,
337
- R
338
- ]), H(() => {
339
- if (!se) return;
340
- let e = v(o.dateRange);
341
- e && (h(e.rangeType), e.numberValue !== void 0 && _(e.numberValue));
342
- }, [o.dateRange, se]);
343
- let ue = V((e) => {
337
+ L,
338
+ de
339
+ ]), U(() => {
340
+ if (!oe) return;
341
+ let e = h(o.dateRange);
342
+ e && (_(e.rangeType), e.numberValue !== void 0 && b(e.numberValue));
343
+ }, [o.dateRange, oe]);
344
+ let fe = H((e) => {
344
345
  s({
345
346
  member: o.member,
346
347
  operator: e,
347
348
  values: []
348
349
  }), l(!1);
349
- }, [o.member]), pe = V((e, t) => {
350
+ }, [o.member]), B = H((e, t) => {
350
351
  let n = t?.shiftKey ?? !1, r = o.values || [];
351
- P?.supportsMultipleValues ? (r.includes(e) ? s({
352
+ F?.supportsMultipleValues ? (r.includes(e) ? s({
352
353
  ...o,
353
354
  values: r.filter((t) => t !== e)
354
355
  }) : s({
@@ -357,28 +358,28 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
357
358
  }), n || d(!1)) : (s({
358
359
  ...o,
359
360
  values: [e]
360
- }), d(!1)), x(""), k(-1);
361
- }, [o, P?.supportsMultipleValues]), me = V((e) => {
361
+ }), d(!1)), w(""), k(-1);
362
+ }, [o, F?.supportsMultipleValues]), pe = H((e) => {
362
363
  let t = (o.values || []).filter((t) => t !== e);
363
364
  s({
364
365
  ...o,
365
366
  values: t
366
367
  });
367
- }, [o]), he = V((e) => {
368
- let t = Ee(e.key, u, L.length, D);
368
+ }, [o]), me = H((e) => {
369
+ let t = Ee(e.key, u, R.length, O);
369
370
  if (t.type !== "none") {
370
371
  if (e.preventDefault(), t.type === "highlight") return k(t.index);
371
- if (t.type === "select") return pe(L[t.index], { shiftKey: e.shiftKey });
372
+ if (t.type === "select") return B(R[t.index], { shiftKey: e.shiftKey });
372
373
  d(!1), k(-1);
373
374
  }
374
375
  }, [
375
376
  u,
376
- L,
377
- D,
378
- pe
379
- ]), ge = V((e) => {
377
+ R,
378
+ O,
379
+ B
380
+ ]), he = H((e) => {
380
381
  let t = e.target.value;
381
- if (P?.valueType === "number") {
382
+ if (F?.valueType === "number") {
382
383
  let e = parseFloat(t);
383
384
  isNaN(e) ? (t === "" || t === "-") && s({
384
385
  ...o,
@@ -391,110 +392,110 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
391
392
  ...o,
392
393
  values: t ? [t] : []
393
394
  });
394
- }, [o, P?.valueType]), _e = V((e) => {
395
+ }, [o, F?.valueType]), ge = H((e) => {
395
396
  let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
396
397
  s({
397
398
  ...o,
398
399
  values: n
399
400
  });
400
- }, [o]), ve = V((e) => {
401
+ }, [o]), _e = H((e) => {
401
402
  let t = parseFloat(e.target.value), n = [(o.values?.length >= 2 ? o.values : ["", ""])[0], isNaN(t) ? "" : t].filter((e) => e !== "");
402
403
  s({
403
404
  ...o,
404
405
  values: n
405
406
  });
406
- }, [o]), ye = V((e) => {
407
+ }, [o]), ve = H((e) => {
407
408
  let t = e.target.value;
408
409
  s({
409
410
  ...o,
410
411
  values: t ? [t] : []
411
412
  });
412
- }, [o]), B = V((e) => {
413
- h(e), p(!1);
413
+ }, [o]), V = H((e) => {
414
+ _(e), p(!1);
414
415
  let t;
415
416
  if (e === "custom") {
416
417
  let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
417
418
  t = [e, e];
418
- } else t = ne(e) ? I(e, g) : I(e);
419
+ } else t = M(e) ? I(e, v) : I(e);
419
420
  s({
420
421
  ...o,
421
422
  dateRange: t
422
423
  });
423
- }, [o, g]), be = V((e) => {
424
- if (_(e), ne(m)) {
424
+ }, [o, v]), ye = H((e) => {
425
+ if (b(e), M(m)) {
425
426
  let t = I(m, e);
426
427
  s({
427
428
  ...o,
428
429
  dateRange: t
429
430
  });
430
431
  }
431
- }, [o, m]), xe = V((e) => {
432
+ }, [o, m]), be = H((e) => {
432
433
  let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
433
434
  s({
434
435
  ...o,
435
436
  dateRange: [t, n]
436
437
  });
437
- }, [o]), Se = V((e) => {
438
+ }, [o]), xe = H((e) => {
438
439
  let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : ["", o.dateRange || ""])[0] || t;
439
440
  s({
440
441
  ...o,
441
442
  dateRange: [n, t]
442
443
  });
443
- }, [o]), Ce = a(oe.find((e) => e.operator === o.operator)?.label || o.operator), we = a(E.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
444
+ }, [o]), Ce = a(ae.find((e) => e.operator === o.operator)?.label || o.operator), we = a(C.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
444
445
  filter: o,
445
- operatorMeta: P,
446
- shouldShowDateRange: se,
447
- shouldShowComboBox: F
446
+ operatorMeta: F,
447
+ shouldShowDateRange: oe,
448
+ shouldShowComboBox: L
448
449
  }, Y = {
449
450
  rangeType: m,
450
- numberValue: g,
451
+ numberValue: v,
451
452
  label: we,
452
453
  isOpen: f,
453
454
  onToggle: p,
454
- onRangeTypeChange: B,
455
- onNumberValueChange: be,
456
- onCustomStartDate: xe,
457
- onCustomEndDate: Se,
458
- onOpen: V(() => {
455
+ onRangeTypeChange: V,
456
+ onNumberValueChange: ye,
457
+ onCustomStartDate: be,
458
+ onCustomEndDate: xe,
459
+ onOpen: H(() => {
459
460
  l(!1), d(!1);
460
461
  }, [])
461
462
  }, De = {
462
463
  isOpen: u,
463
- options: L,
464
- loading: ce,
465
- error: le,
466
- searchText: y,
467
- highlightedIndex: D,
468
- listRef: A,
469
- onSearchTextChange: x,
464
+ options: R,
465
+ loading: se,
466
+ error: ue,
467
+ searchText: S,
468
+ highlightedIndex: O,
469
+ listRef: j,
470
+ onSearchTextChange: w,
470
471
  onHighlightedIndexChange: k,
471
- onSelect: pe,
472
- onRemove: me,
473
- onKeyDown: he,
474
- onOpen: V(() => {
472
+ onSelect: B,
473
+ onRemove: pe,
474
+ onKeyDown: me,
475
+ onOpen: H(() => {
475
476
  l(!1), p(!1), d((e) => !e);
476
477
  }, [])
477
- }, Oe = U(() => ({
478
- onBetweenStart: _e,
479
- onBetweenEnd: ve,
480
- onDate: ye,
481
- onDirect: ge
478
+ }, Oe = W(() => ({
479
+ onBetweenStart: ge,
480
+ onBetweenEnd: _e,
481
+ onDate: ve,
482
+ onDirect: he
482
483
  }), [
484
+ ge,
483
485
  _e,
484
486
  ve,
485
- ye,
486
- ge
487
- ]), ke = N ? Ie : re ? Le : Fe;
488
- return /* @__PURE__ */ q(K, { children: /* @__PURE__ */ q("div", {
489
- className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${S ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
487
+ he
488
+ ]), ke = P ? Ie : ne ? Le : Fe;
489
+ return /* @__PURE__ */ q(Se, { children: /* @__PURE__ */ q("div", {
490
+ className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${E ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
490
491
  onClick: r,
491
492
  children: /* @__PURE__ */ J("div", {
492
- ref: ee,
493
- className: S ? "bg-dc-surface dc:rounded-lg dc:border border-dc-border" : "bg-dc-surface dc:rounded-lg dc:border border-dc-border dc:max-w-md dc:w-full",
493
+ ref: A,
494
+ className: E ? "bg-dc-surface dc:rounded-lg dc:border border-dc-border" : "bg-dc-surface dc:rounded-lg dc:border border-dc-border dc:max-w-md dc:w-full",
494
495
  style: {
495
- ...S ? {
496
+ ...E ? {
496
497
  position: "fixed",
497
- ...S,
498
+ ...E,
498
499
  maxWidth: "400px",
499
500
  width: "100%"
500
501
  } : {},
@@ -523,7 +524,7 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
523
524
  className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
524
525
  children: [/* @__PURE__ */ q(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ q("span", {
525
526
  className: "dc:text-sm dc:font-medium text-dc-text",
526
- children: ae
527
+ children: ie
527
528
  })]
528
529
  })] }),
529
530
  /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
@@ -542,8 +543,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
542
543
  }), /* @__PURE__ */ q(Pe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
543
544
  }), c && /* @__PURE__ */ q("div", {
544
545
  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-sm dc:shadow-lg dc:max-h-48 dc:overflow-y-auto",
545
- children: oe.map((e) => /* @__PURE__ */ q("button", {
546
- onClick: () => ue(e.operator),
546
+ children: ae.map((e) => /* @__PURE__ */ q("button", {
547
+ onClick: () => fe(e.operator),
547
548
  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"}`,
548
549
  children: a(e.label)
549
550
  }, e.operator))
@@ -580,8 +581,8 @@ function Re({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
580
581
  //#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
581
582
  var ze = d("close"), Be = d("dimension"), Ve = d("timeDimension"), He = d("measure");
582
583
  function Ue({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
583
- let { t: i } = z(), [a, o] = G(!1), s = W(null), c = b(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = O(e.member, t), f = C[e.operator], p = f?.label ? i(f.label) : e.operator, m = We(e, f, i), h = l ? Ve : u ? He : Be;
584
- return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ J("div", {
584
+ let { t: i } = z(), [a, o] = K(!1), s = G(null), c = g(e.member, t), l = (c?.field.type || "string") === "time", u = c?.fieldType === "measure", d = T(e.member, t), f = x[e.operator], p = f?.label ? i(f.label) : e.operator, m = We(e, f, i), h = l ? Ve : u ? He : Be;
585
+ return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("div", {
585
586
  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",
586
587
  children: [
587
588
  /* @__PURE__ */ q("span", {
@@ -638,22 +639,22 @@ function We(e, t, n) {
638
639
  //#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
639
640
  var Ge = d("add"), Ke = d("close");
640
641
  function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
641
- let { t: s } = z(), [c, l] = G(!1), u = W(null);
642
- H(() => {
642
+ let { t: s } = z(), [c, l] = K(!1), u = G(null);
643
+ U(() => {
643
644
  let e = (e) => {
644
645
  u.current && !u.current.contains(e.target) && l(!1);
645
646
  };
646
647
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
647
648
  }, []);
648
- let d = V(() => {
649
- n(ie(e));
650
- }, [e, n]), f = V((t, r) => {
649
+ let d = H(() => {
650
+ n(te(e));
651
+ }, [e, n]), f = H((t, r) => {
651
652
  let i = [...e.filters];
652
653
  i[t] = r, n({
653
654
  ...e,
654
655
  filters: i
655
656
  });
656
- }, [e, n]), p = V((t) => {
657
+ }, [e, n]), p = H((t) => {
657
658
  let i = e.filters.filter((e, n) => n !== t);
658
659
  i.length === 0 ? r() : n({
659
660
  ...e,
@@ -664,7 +665,7 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
664
665
  n,
665
666
  r,
666
667
  a
667
- ]), m = V((t) => {
668
+ ]), m = H((t) => {
668
669
  let r = {
669
670
  type: t,
670
671
  filters: []
@@ -673,9 +674,9 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
673
674
  ...e,
674
675
  filters: [...e.filters, r]
675
676
  }), l(!1);
676
- }, [e, n]), h = V(() => {
677
+ }, [e, n]), h = H(() => {
677
678
  i([]), l(!1);
678
- }, [i]), g = V((e) => (t = []) => {
679
+ }, [i]), g = H((e) => (t = []) => {
679
680
  i([e, ...t]);
680
681
  }, [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");
681
682
  return /* @__PURE__ */ J("div", {
@@ -746,12 +747,12 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
746
747
  className: "dc:text-xs text-dc-primary dc:hover:underline",
747
748
  children: s("filter.group.addFilterLink")
748
749
  })]
749
- }) : e.filters.map((e, n) => P(e) ? /* @__PURE__ */ q(Ue, {
750
+ }) : e.filters.map((e, n) => ne(e) ? /* @__PURE__ */ q(Ue, {
750
751
  filter: e,
751
752
  schema: t,
752
753
  onUpdate: (e) => f(n, e),
753
754
  onRemove: () => p(n)
754
- }, `filter-${n}`) : ae(e) ? /* @__PURE__ */ q(qe, {
755
+ }, `filter-${n}`) : P(e) ? /* @__PURE__ */ q(qe, {
755
756
  group: e,
756
757
  schema: t,
757
758
  onUpdate: (e) => f(n, e),
@@ -766,42 +767,42 @@ function qe({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
766
767
  //#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
767
768
  var Je = d("add");
768
769
  function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
769
- let { t: a } = z(), [o, s] = G(!1), [c, l] = G(!1), u = W([]), d = R(e), f = V((e) => {
770
+ let { t: a } = z(), [o, s] = K(!1), [c, l] = K(!1), u = G([]), d = R(e), f = H((e) => {
770
771
  e.preventDefault(), e.stopPropagation(), l(!0);
771
- }, []), p = V((e) => {
772
+ }, []), p = H((e) => {
772
773
  e.preventDefault(), e.stopPropagation(), l(!1);
773
- }, []), m = V((e) => {
774
+ }, []), m = H((e) => {
774
775
  e.preventDefault(), e.stopPropagation(), l(!1);
775
776
  try {
776
777
  let t = JSON.parse(e.dataTransfer.getData("text/plain"));
777
778
  t.field && r && r(t.field);
778
779
  } catch {}
779
- }, [r]), h = N(e), g = V((t, r, i) => {
780
+ }, [r]), h = ee(e), g = H((t, r, i) => {
780
781
  let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
781
782
  member: t.name,
782
783
  operator: o,
783
784
  values: []
784
785
  };
785
- a && o === "inDateRange" && (c.dateRange = I("this_month")), n(oe(e, u.current, c)), s(!1), u.current = [];
786
- }, [e, n]), _ = V((t, r) => {
786
+ a && o === "inDateRange" && (c.dateRange = I("this_month")), n(re(e, u.current, c)), s(!1), u.current = [];
787
+ }, [e, n]), _ = H((t, r) => {
787
788
  let i = [...e];
788
789
  i[t] = r, n(i);
789
- }, [e, n]), v = V((t) => {
790
- n(se(e, t));
791
- }, [e, n]), y = V(() => {
790
+ }, [e, n]), v = H((t) => {
791
+ n(ie(e, t));
792
+ }, [e, n]), y = H(() => {
792
793
  n([]);
793
- }, [n]), b = V(() => {
794
+ }, [n]), b = H(() => {
794
795
  u.current = [], s(!0);
795
- }, []), x = V((e) => (t = []) => {
796
+ }, []), x = H((e) => (t = []) => {
796
797
  u.current = [...e, ...t], s(!0);
797
798
  }, []), S = (n, r, i = []) => {
798
799
  let a = [...i, r];
799
- return P(n) ? /* @__PURE__ */ q(Ue, {
800
+ return ne(n) ? /* @__PURE__ */ q(Ue, {
800
801
  filter: n,
801
802
  schema: t,
802
803
  onUpdate: (e) => _(r, e),
803
804
  onRemove: () => v(r)
804
- }, `filter-${a.join("-")}`) : ae(n) ? /* @__PURE__ */ q(qe, {
805
+ }, `filter-${a.join("-")}`) : P(n) ? /* @__PURE__ */ q(qe, {
805
806
  group: n,
806
807
  schema: t,
807
808
  onUpdate: (e) => _(r, e),
@@ -815,7 +816,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
815
816
  onClick: b,
816
817
  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",
817
818
  title: "Add filter",
818
- children: [/* @__PURE__ */ J(ye, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
819
+ children: [/* @__PURE__ */ J(ve, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
819
820
  className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
820
821
  children: [
821
822
  "(",
@@ -851,7 +852,7 @@ function Ye({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
851
852
  children: e.map((e, t) => S(e, t))
852
853
  })
853
854
  }),
854
- /* @__PURE__ */ q(k, {
855
+ /* @__PURE__ */ q(E, {
855
856
  isOpen: o,
856
857
  onClose: () => {
857
858
  s(!1), u.current = [];
@@ -923,8 +924,8 @@ function tt({ issue: e }) {
923
924
  });
924
925
  }
925
926
  function nt({ text: e }) {
926
- let { t } = z(), [n, r] = B.useState(!1), i = B.useRef(null);
927
- return B.useEffect(() => () => {
927
+ let { t } = z(), [n, r] = V.useState(!1), i = V.useRef(null);
928
+ return V.useEffect(() => () => {
928
929
  i.current && clearTimeout(i.current);
929
930
  }, []), /* @__PURE__ */ q("button", {
930
931
  onClick: async () => {
@@ -965,7 +966,7 @@ function rt({ rec: e }) {
965
966
  }),
966
967
  e.sql && /* @__PURE__ */ q("div", {
967
968
  className: "dc:mt-2",
968
- children: /* @__PURE__ */ q(g, {
969
+ children: /* @__PURE__ */ q(m, {
969
970
  code: e.sql,
970
971
  language: "sql",
971
972
  headerRight: /* @__PURE__ */ q(nt, { text: e.sql })
@@ -1000,12 +1001,12 @@ function rt({ rec: e }) {
1000
1001
  }
1001
1002
  function it({ analysis: e, onClose: t, onClear: n }) {
1002
1003
  let { t: r } = z(), i = t || n;
1003
- return B.useEffect(() => {
1004
+ return V.useEffect(() => {
1004
1005
  let e = (e) => {
1005
1006
  e.key === "Escape" && i && i();
1006
1007
  };
1007
1008
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
1008
- }, [i]), B.useEffect(() => (document.body.style.overflow = "hidden", () => {
1009
+ }, [i]), V.useEffect(() => (document.body.style.overflow = "hidden", () => {
1009
1010
  document.body.style.overflow = "";
1010
1011
  }), []), /* @__PURE__ */ J("div", {
1011
1012
  className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4 bg-black/50",
@@ -1272,7 +1273,7 @@ function Mt(e, t, n, r) {
1272
1273
  //#endregion
1273
1274
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
1274
1275
  function Nt({ title: e, height: t, className: n, children: r }) {
1275
- return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q("h4", {
1276
+ return /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("h4", {
1276
1277
  className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
1277
1278
  children: e
1278
1279
  }), /* @__PURE__ */ q("div", {
@@ -1293,7 +1294,7 @@ function Pt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSq
1293
1294
  height: o,
1294
1295
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
1295
1296
  children: n.message
1296
- }) : e ? /* @__PURE__ */ q(g, {
1297
+ }) : e ? /* @__PURE__ */ q(m, {
1297
1298
  code: i,
1298
1299
  language: "sql",
1299
1300
  title: a,
@@ -1362,7 +1363,7 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
1362
1363
  n.summary.usedIndexes.join(", ")
1363
1364
  ]
1364
1365
  }),
1365
- /* @__PURE__ */ q(g, {
1366
+ /* @__PURE__ */ q(m, {
1366
1367
  code: n.raw,
1367
1368
  language: "sql",
1368
1369
  title: a("debug.executionPlanTitle", { database: n.summary.database }),
@@ -1374,8 +1375,8 @@ function It({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
1374
1375
  }
1375
1376
  //#endregion
1376
1377
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
1377
- var Lt = xe(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" }) {
1378
- let { t: v } = z(), [y, b] = G(!1), [x, S] = G(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
1378
+ var Lt = be(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" }) {
1379
+ let { t: v } = z(), [y, b] = K(!1), [x, S] = K(!1), C = e ? e.sql + (e.params && e.params.length > 0 ? "\n\n-- Parameters:\n" + JSON.stringify(e.params, null, 2) : "") : "", w = () => {
1379
1380
  f && i && h && (f(i, h), S(!0));
1380
1381
  }, T = () => {
1381
1382
  S(!1);
@@ -1383,10 +1384,10 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
1383
1384
  onClick: w,
1384
1385
  disabled: u,
1385
1386
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded-sm 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",
1386
- children: u ? /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q("span", {
1387
+ children: u ? /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ q("span", {
1387
1388
  className: "dc:animate-spin",
1388
1389
  children: "⟳"
1389
- }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(K, { children: `✨ ${v("debug.aiAnalysis")}` })
1390
+ }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(Se, { children: `✨ ${v("debug.aiAnalysis")}` })
1390
1391
  }) : null;
1391
1392
  return /* @__PURE__ */ J("div", {
1392
1393
  className: "dc:space-y-3",
@@ -1399,7 +1400,7 @@ var Lt = xe(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
1399
1400
  formattedSql: C,
1400
1401
  title: g,
1401
1402
  height: _,
1402
- headerRight: /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ J("label", {
1403
+ headerRight: /* @__PURE__ */ J(Se, { children: [/* @__PURE__ */ J("label", {
1403
1404
  className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
1404
1405
  children: [/* @__PURE__ */ q("input", {
1405
1406
  type: "checkbox",
@@ -1479,22 +1480,22 @@ function Vt(e) {
1479
1480
  }
1480
1481
  function Ht(e) {
1481
1482
  return e.map((e, t) => ({
1482
- id: h(),
1483
+ id: f(),
1483
1484
  field: e,
1484
- label: m(t)
1485
+ label: w(t)
1485
1486
  }));
1486
1487
  }
1487
1488
  function Ut(e) {
1488
1489
  let t = [];
1489
1490
  if (e.dimensions) for (let n of e.dimensions) t.push({
1490
- id: h(),
1491
+ id: f(),
1491
1492
  field: n,
1492
1493
  isTimeDimension: !1
1493
1494
  });
1494
1495
  if (e.timeDimensions) for (let n of e.timeDimensions) {
1495
1496
  let e = !!(n.compareDateRange && n.compareDateRange.length > 0);
1496
1497
  t.push({
1497
- id: h(),
1498
+ id: f(),
1498
1499
  field: n.dimension,
1499
1500
  granularity: n.granularity,
1500
1501
  isTimeDimension: !0,
@@ -1599,7 +1600,7 @@ var X = {
1599
1600
  }
1600
1601
  }, Z = /* @__PURE__ */ new Map(), Kt = !1;
1601
1602
  function qt() {
1602
- Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", S), Z.has("flow") || Z.set("flow", x), Z.has("retention") || Z.set("retention", T), !0);
1603
+ Kt ||= (Z.has("query") || Z.set("query", X), Z.has("funnel") || Z.set("funnel", v), Z.has("flow") || Z.set("flow", _), Z.has("retention") || Z.set("retention", S), !0);
1603
1604
  }
1604
1605
  var Q = {
1605
1606
  register(e) {
@@ -1624,9 +1625,9 @@ var Q = {
1624
1625
  analysisType: "query",
1625
1626
  charts: {
1626
1627
  query: X.getDefaultChartConfig(),
1627
- funnel: S.getDefaultChartConfig(),
1628
- flow: x.getDefaultChartConfig(),
1629
- retention: T.getDefaultChartConfig()
1628
+ funnel: v.getDefaultChartConfig(),
1629
+ flow: _.getDefaultChartConfig(),
1630
+ retention: S.getDefaultChartConfig()
1630
1631
  },
1631
1632
  activeViews: {
1632
1633
  query: "chart",
@@ -1885,9 +1886,9 @@ var Q = {
1885
1886
  }),
1886
1887
  addMetric: (t, n) => e((e) => {
1887
1888
  let r = e.activeQueryIndex, i = [...e.queryStates], a = i[r] || Y(), o = {
1888
- id: h(),
1889
+ id: f(),
1889
1890
  field: t,
1890
- label: n || m(a.metrics.length)
1891
+ label: n || w(a.metrics.length)
1891
1892
  };
1892
1893
  return i[r] = {
1893
1894
  ...a,
@@ -1910,9 +1911,9 @@ var Q = {
1910
1911
  };
1911
1912
  else {
1912
1913
  let e = {
1913
- id: h(),
1914
+ id: f(),
1914
1915
  field: t,
1915
- label: m(i.metrics.length)
1916
+ label: w(i.metrics.length)
1916
1917
  };
1917
1918
  r[n] = {
1918
1919
  ...i,
@@ -1932,7 +1933,7 @@ var Q = {
1932
1933
  let i = e.activeQueryIndex, a = [...e.queryStates], o = a[i] || Y();
1933
1934
  if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
1934
1935
  let s = {
1935
- id: h(),
1936
+ id: f(),
1936
1937
  field: t,
1937
1938
  isTimeDimension: n,
1938
1939
  granularity: n ? r || "month" : void 0
@@ -1959,7 +1960,7 @@ var Q = {
1959
1960
  else {
1960
1961
  if (n && o.breakdowns.some((e) => e.isTimeDimension)) return e;
1961
1962
  let s = {
1962
- id: h(),
1963
+ id: f(),
1963
1964
  field: t,
1964
1965
  isTimeDimension: n,
1965
1966
  granularity: n ? r || "month" : void 0
@@ -2124,7 +2125,7 @@ var Q = {
2124
2125
  ...Qt(),
2125
2126
  addFunnelStep: () => e((e) => {
2126
2127
  let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
2127
- id: h(),
2128
+ id: f(),
2128
2129
  name: `Step ${e.funnelSteps.length + 1}`,
2129
2130
  cube: e.funnelCube || "",
2130
2131
  filters: t?.filters ? JSON.parse(JSON.stringify(t.filters)) : [],
@@ -2272,7 +2273,7 @@ var Q = {
2272
2273
  joinStrategy: e.joinStrategy
2273
2274
  } };
2274
2275
  }
2275
- }), nn = () => ({ ...ee }), rn = (e, t, n) => ({
2276
+ }), nn = () => ({ ...D }), rn = (e, t, n) => ({
2276
2277
  ...nn(),
2277
2278
  setRetentionCube: (t) => e(() => ({
2278
2279
  retentionCube: t,
@@ -2455,11 +2456,11 @@ var Q = {
2455
2456
  //#region src/client/stores/optionsToAnalysisConfig.ts
2456
2457
  function cn(e) {
2457
2458
  let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
2458
- id: h(),
2459
+ id: f(),
2459
2460
  field: e,
2460
2461
  isTimeDimension: !1
2461
2462
  })), ...n.map((e) => ({
2462
- id: h(),
2463
+ id: f(),
2463
2464
  field: e.dimension,
2464
2465
  granularity: e.granularity,
2465
2466
  isTimeDimension: !0,
@@ -2487,9 +2488,9 @@ function cn(e) {
2487
2488
  return {
2488
2489
  ...Y(),
2489
2490
  metrics: (e.measures || []).map((e, t) => ({
2490
- id: h(),
2491
+ id: f(),
2491
2492
  field: e,
2492
- label: m(t)
2493
+ label: w(t)
2493
2494
  })),
2494
2495
  breakdowns: r,
2495
2496
  filters: i,
@@ -2511,8 +2512,8 @@ function dn(e) {
2511
2512
  return e.initialActiveView || "chart";
2512
2513
  }
2513
2514
  function fn(e) {
2514
- let t = un(S, e.initialChartConfig), n = e.initialFunnelState ?? {};
2515
- return S.save({
2515
+ let t = un(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
2516
+ return v.save({
2516
2517
  funnelCube: n.funnelCube ?? null,
2517
2518
  funnelSteps: n.funnelSteps || [],
2518
2519
  activeFunnelStepIndex: 0,
@@ -2521,8 +2522,8 @@ function fn(e) {
2521
2522
  }, { funnel: t }, dn(e));
2522
2523
  }
2523
2524
  function pn(e) {
2524
- let t = un(x, e.initialChartConfig), n = e.initialFlowState ?? {};
2525
- return x.save({
2525
+ let t = un(_, e.initialChartConfig), n = e.initialFlowState ?? {};
2526
+ return _.save({
2526
2527
  flowCube: n.flowCube ?? null,
2527
2528
  flowBindingKey: n.flowBindingKey ?? null,
2528
2529
  flowTimeDimension: n.flowTimeDimension ?? null,
@@ -2537,8 +2538,8 @@ function pn(e) {
2537
2538
  }, { flow: t }, dn(e));
2538
2539
  }
2539
2540
  function mn(e) {
2540
- let t = un(T, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = A(te);
2541
- return T.save({
2541
+ let t = un(S, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = O(k);
2542
+ return S.save({
2542
2543
  retentionCube: n.retentionCube ?? null,
2543
2544
  retentionBindingKey: n.retentionBindingKey ?? null,
2544
2545
  retentionTimeDimension: n.retentionTimeDimension ?? null,
@@ -2592,9 +2593,9 @@ function yn(e, t) {
2592
2593
  ...nn(),
2593
2594
  charts: {
2594
2595
  query: X.getDefaultChartConfig(),
2595
- funnel: S.getDefaultChartConfig(),
2596
- flow: x.getDefaultChartConfig(),
2597
- retention: T.getDefaultChartConfig()
2596
+ funnel: v.getDefaultChartConfig(),
2597
+ flow: _.getDefaultChartConfig(),
2598
+ retention: S.getDefaultChartConfig()
2598
2599
  },
2599
2600
  activeViews: {
2600
2601
  query: "chart",
@@ -2610,21 +2611,21 @@ function yn(e, t) {
2610
2611
  ...Qt(),
2611
2612
  charts: {
2612
2613
  ...e.charts,
2613
- funnel: S.getDefaultChartConfig()
2614
+ funnel: v.getDefaultChartConfig()
2614
2615
  }
2615
2616
  };
2616
2617
  case "flow": return {
2617
2618
  ...en(),
2618
2619
  charts: {
2619
2620
  ...e.charts,
2620
- flow: x.getDefaultChartConfig()
2621
+ flow: _.getDefaultChartConfig()
2621
2622
  }
2622
2623
  };
2623
2624
  case "retention": return {
2624
2625
  ...nn(),
2625
2626
  charts: {
2626
2627
  ...e.charts,
2627
- retention: T.getDefaultChartConfig()
2628
+ retention: S.getDefaultChartConfig()
2628
2629
  }
2629
2630
  };
2630
2631
  default: return {
@@ -2671,10 +2672,10 @@ function bn(n = {}) {
2671
2672
  return a()(i(e(t(o, {
2672
2673
  name: n.storageKey || "drizzle-cube-analysis-builder-v3",
2673
2674
  partialize: (e) => e.saveWorkspace(),
2674
- merge: (e, t) => e && M(e) ? {
2675
+ merge: (e, t) => e && j(e) ? {
2675
2676
  ...t,
2676
2677
  _persistedWorkspace: e
2677
- } : e && j(e) ? {
2678
+ } : e && A(e) ? {
2678
2679
  ...t,
2679
2680
  _persistedConfig: e
2680
2681
  } : r ? {
@@ -2697,9 +2698,9 @@ function bn(n = {}) {
2697
2698
  }
2698
2699
  })), { name: "AnalysisBuilderStore" }));
2699
2700
  }
2700
- var xn = be(null);
2701
+ var xn = ye(null);
2701
2702
  function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
2702
- let u = W(null);
2703
+ let u = G(null);
2703
2704
  return u.current ||= bn({
2704
2705
  initialQuery: t,
2705
2706
  initialChartConfig: n,
@@ -2716,12 +2717,12 @@ function Sn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
2716
2717
  });
2717
2718
  }
2718
2719
  function $(e) {
2719
- let t = Se(xn);
2720
+ let t = xe(xn);
2720
2721
  if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
2721
2722
  return r(t, e);
2722
2723
  }
2723
2724
  function Cn() {
2724
- let e = Se(xn);
2725
+ let e = xe(xn);
2725
2726
  if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
2726
2727
  return e;
2727
2728
  }
@@ -2869,7 +2870,7 @@ function Vn(e) {
2869
2870
  //#endregion
2870
2871
  //#region src/client/hooks/useAnalysisState.ts
2871
2872
  function Hn(e = {}) {
2872
- let { externalColorPalette: t } = e, r = Cn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), u = $((e) => e.addQuery), d = $((e) => e.removeQuery), p = $((e) => e.getCurrentState), m = $((e) => e.getMergeKeys), h = $((e) => e.isMultiQueryMode), g = p(), _ = h(), v = m(), y = $((e) => l(e.charts[e.analysisType]?.chartType ?? "")), b = U(() => {
2873
+ let { externalColorPalette: t } = e, r = Cn(), i = $((e) => e.queryStates), a = $((e) => e.activeQueryIndex), o = $((e) => e.mergeStrategy), s = $((e) => e.setActiveQueryIndex), c = $((e) => e.setMergeStrategy), u = $((e) => e.addQuery), d = $((e) => e.removeQuery), f = $((e) => e.getCurrentState), m = $((e) => e.getMergeKeys), h = $((e) => e.isMultiQueryMode), g = f(), _ = h(), v = m(), y = $((e) => l(e.charts[e.analysisType]?.chartType ?? "")), b = W(() => {
2873
2874
  let e = i[a] || g;
2874
2875
  return Te(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
2875
2876
  }, [
@@ -2877,14 +2878,14 @@ function Hn(e = {}) {
2877
2878
  a,
2878
2879
  g,
2879
2880
  y
2880
- ]), x = U(() => {
2881
+ ]), x = W(() => {
2881
2882
  let e = i[0]?.breakdowns || [];
2882
2883
  return i.map((t, n) => Te(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
2883
2884
  }, [
2884
2885
  i,
2885
2886
  o,
2886
2887
  y
2887
- ]), S = U(() => {
2888
+ ]), S = W(() => {
2888
2889
  if (i.length <= 1) return null;
2889
2890
  let e = x.filter((e) => e.measures && e.measures.length > 0 || e.dimensions && e.dimensions.length > 0 || e.timeDimensions && e.timeDimensions.length > 0);
2890
2891
  return e.length < 2 ? null : {
@@ -2898,12 +2899,12 @@ function Hn(e = {}) {
2898
2899
  i.length,
2899
2900
  o,
2900
2901
  v
2901
- ]), C = U(() => _ ? Ln(x, o, v || []) : null, [
2902
+ ]), C = W(() => _ ? Ln(x, o, v || []) : null, [
2902
2903
  _,
2903
2904
  x,
2904
2905
  o,
2905
2906
  v
2906
- ]), w = U(() => b.measures && b.measures.length > 0 || b.dimensions && b.dimensions.length > 0 || b.timeDimensions && b.timeDimensions.length > 0, [b]), T = U(() => {
2907
+ ]), w = W(() => b.measures && b.measures.length > 0 || b.dimensions && b.dimensions.length > 0 || b.timeDimensions && b.timeDimensions.length > 0, [b]), T = W(() => {
2907
2908
  if (!_) return g.metrics;
2908
2909
  let e = /* @__PURE__ */ new Set(), t = [];
2909
2910
  for (let n = 0; n < i.length; n++) {
@@ -2921,7 +2922,7 @@ function Hn(e = {}) {
2921
2922
  _,
2922
2923
  i,
2923
2924
  g.metrics
2924
- ]), E = U(() => {
2925
+ ]), E = W(() => {
2925
2926
  if (!_) return g.breakdowns;
2926
2927
  let e = /* @__PURE__ */ new Set(), t = [];
2927
2928
  for (let n of i) for (let r of n.breakdowns) e.has(r.field) || (e.add(r.field), t.push(r));
@@ -2930,67 +2931,67 @@ function Hn(e = {}) {
2930
2931
  _,
2931
2932
  i,
2932
2933
  g.breakdowns
2933
- ]), D = U(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : g.breakdowns, [
2934
+ ]), D = W(() => o === "merge" && a > 0 ? i[0]?.breakdowns || [] : g.breakdowns, [
2934
2935
  o,
2935
2936
  a,
2936
2937
  i,
2937
2938
  g.breakdowns
2938
- ]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey), ee = $((e) => e.funnelCube), A = $((e) => e.funnelSteps), te = $((e) => e.activeFunnelStepIndex), j = $((e) => e.funnelTimeDimension), M = U(() => O !== "funnel" || !k?.dimension || !j || !A || A.length < 2 ? !1 : A.every((e) => e.filters.length > 0), [
2939
+ ]), O = $((e) => e.analysisType), k = $((e) => e.funnelBindingKey), A = $((e) => e.funnelCube), j = $((e) => e.funnelSteps), ee = $((e) => e.activeFunnelStepIndex), M = $((e) => e.funnelTimeDimension), N = W(() => O !== "funnel" || !k?.dimension || !M || !j || j.length < 2 ? !1 : j.every((e) => e.filters.length > 0), [
2939
2940
  O,
2940
2941
  k,
2941
- j,
2942
- A
2943
- ]), N = $((e) => e.charts.funnel?.chartType) || "funnel", ne = $((e) => e.charts.funnel?.chartConfig), re = U(() => ne || {}, [ne]), ie = $((e) => e.charts.funnel?.displayConfig), ae = U(() => ie || {
2942
+ M,
2943
+ j
2944
+ ]), te = $((e) => e.charts.funnel?.chartType) || "funnel", P = $((e) => e.charts.funnel?.chartConfig), ne = W(() => P || {}, [P]), re = $((e) => e.charts.funnel?.displayConfig), ie = W(() => re || {
2944
2945
  showLegend: !0,
2945
2946
  showGrid: !0,
2946
2947
  showTooltip: !0
2947
- }, [ie]), P = $((e) => e.flowCube), oe = $((e) => e.flowBindingKey), se = $((e) => e.flowTimeDimension), F = $((e) => e.eventDimension), I = $((e) => e.startingStep), L = $((e) => e.stepsBefore), ce = $((e) => e.stepsAfter), le = $((e) => e.joinStrategy), R = $((e) => e.charts.flow?.displayConfig), ue = U(() => R || {
2948
+ }, [re]), F = $((e) => e.flowCube), I = $((e) => e.flowBindingKey), ae = $((e) => e.flowTimeDimension), oe = $((e) => e.eventDimension), L = $((e) => e.startingStep), R = $((e) => e.stepsBefore), se = $((e) => e.stepsAfter), ce = $((e) => e.joinStrategy), le = $((e) => e.charts.flow?.displayConfig), ue = W(() => le || {
2948
2949
  showLegend: !0,
2949
2950
  showGrid: !0,
2950
2951
  showTooltip: !0
2951
- }, [R]), de = $((e) => e.charts.flow?.chartType) || "sankey", fe = $((e) => e.buildFunnelQueryFromSteps), pe = U(() => O === "funnel" ? fe() : null, [
2952
+ }, [le]), de = $((e) => e.charts.flow?.chartType) || "sankey", z = $((e) => e.buildFunnelQueryFromSteps), fe = W(() => O === "funnel" ? z() : null, [
2952
2953
  O,
2953
- fe,
2954
- A
2955
- ]), me = $((e) => e.buildFlowQuery), z = U(() => O === "flow" ? me() : null, [
2954
+ z,
2955
+ j
2956
+ ]), B = $((e) => e.buildFlowQuery), pe = W(() => O === "flow" ? B() : null, [
2956
2957
  O,
2957
- me,
2958
- P,
2959
- oe,
2960
- se,
2958
+ B,
2961
2959
  F,
2962
2960
  I,
2961
+ ae,
2962
+ oe,
2963
2963
  L,
2964
- ce,
2964
+ R,
2965
+ se,
2965
2966
  de,
2966
- le
2967
- ]), he = $((e) => e.retentionCube), ge = $((e) => e.retentionBindingKey), _e = $((e) => e.retentionTimeDimension), ve = $((e) => e.retentionDateRange), ye = $((e) => e.retentionCohortFilters), B = $((e) => e.retentionActivityFilters), be = $((e) => e.retentionBreakdowns), xe = $((e) => e.retentionViewGranularity), Se = $((e) => e.retentionPeriods), H = $((e) => e.retentionType), W = $((e) => e.buildRetentionQuery), K = $((e) => e.getRetentionValidation), q = $((e) => e.charts.retention?.displayConfig), J = U(() => O === "retention" ? W() : null, [
2967
+ ce
2968
+ ]), me = $((e) => e.retentionCube), he = $((e) => e.retentionBindingKey), ge = $((e) => e.retentionTimeDimension), _e = $((e) => e.retentionDateRange), ve = $((e) => e.retentionCohortFilters), V = $((e) => e.retentionActivityFilters), ye = $((e) => e.retentionBreakdowns), be = $((e) => e.retentionViewGranularity), xe = $((e) => e.retentionPeriods), U = $((e) => e.retentionType), G = $((e) => e.buildRetentionQuery), Se = $((e) => e.getRetentionValidation), q = $((e) => e.charts.retention?.displayConfig), J = W(() => O === "retention" ? G() : null, [
2968
2969
  O,
2969
- W,
2970
+ G,
2971
+ me,
2970
2972
  he,
2971
2973
  ge,
2972
2974
  _e,
2973
- ve,
2975
+ ye,
2974
2976
  be,
2975
2977
  xe,
2976
- Se,
2977
- H,
2978
- ye,
2979
- B
2980
- ]), Ce = U(() => O === "retention" ? K() : null, [
2978
+ U,
2979
+ ve,
2980
+ V
2981
+ ]), Ce = W(() => O === "retention" ? Se() : null, [
2981
2982
  O,
2982
- K,
2983
+ Se,
2984
+ me,
2983
2985
  he,
2984
2986
  ge,
2985
- _e,
2986
- ve
2987
- ]), we = U(() => O === "retention" ? J !== null : O === "flow" ? z !== null : O === "funnel" ? pe !== null : w ?? !1, [
2987
+ _e
2988
+ ]), we = W(() => O === "retention" ? J !== null : O === "flow" ? pe !== null : O === "funnel" ? fe !== null : w ?? !1, [
2988
2989
  O,
2989
2990
  J,
2990
- z,
2991
2991
  pe,
2992
+ fe,
2992
2993
  w
2993
- ]), { chartType: Y, chartConfig: Ee, displayConfig: De } = $(n(On)), Oe = $((e) => e.userManuallySelectedChart), ke = $((e) => e.localPaletteName), Ae = $((e) => e.setChartTypeManual), je = $((e) => e.setChartConfig), Me = $((e) => e.setDisplayConfig), Ne = $((e) => e.setFunnelChartType), Pe = $((e) => e.setFunnelChartConfig), Fe = $((e) => e.setFunnelDisplayConfig), Ie = $((e) => e.setLocalPaletteName), Le = $((e) => e.setUserManuallySelectedChart), Re = V((e) => {
2994
+ ]), { chartType: Y, chartConfig: Ee, displayConfig: De } = $(n(On)), Oe = $((e) => e.userManuallySelectedChart), ke = $((e) => e.localPaletteName), Ae = $((e) => e.setChartTypeManual), je = $((e) => e.setChartConfig), Me = $((e) => e.setDisplayConfig), Ne = $((e) => e.setFunnelChartType), Pe = $((e) => e.setFunnelChartConfig), Fe = $((e) => e.setFunnelDisplayConfig), Ie = $((e) => e.setLocalPaletteName), Le = $((e) => e.setUserManuallySelectedChart), Re = H((e) => {
2994
2995
  if (O === "funnel") Ne(e);
2995
2996
  else {
2996
2997
  Ae(e);
@@ -3004,24 +3005,24 @@ function Hn(e = {}) {
3004
3005
  Ne,
3005
3006
  Ae,
3006
3007
  je
3007
- ]), ze = V((e) => {
3008
+ ]), ze = H((e) => {
3008
3009
  O === "funnel" ? Pe(e) : je(e);
3009
3010
  }, [
3010
3011
  O,
3011
3012
  Pe,
3012
3013
  je
3013
- ]), Be = V((e) => {
3014
+ ]), Be = H((e) => {
3014
3015
  O === "funnel" ? Fe(e) : Me(e);
3015
3016
  }, [
3016
3017
  O,
3017
3018
  Fe,
3018
3019
  Me
3019
- ]), Ve = U(() => Ot(T, E), [T, E]), He = U(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3020
+ ]), Ve = W(() => Ot(T, E), [T, E]), He = W(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3020
3021
  name: "custom",
3021
3022
  label: "Custom",
3022
3023
  colors: t,
3023
3024
  gradient: t
3024
- } : t : f(ke), [t, ke]), Ue = V((e) => {
3025
+ } : t : p(ke), [t, ke]), Ue = H((e) => {
3025
3026
  r.setState((t) => ({ charts: {
3026
3027
  ...t.charts,
3027
3028
  flow: {
@@ -3033,7 +3034,7 @@ function Hn(e = {}) {
3033
3034
  displayConfig: e
3034
3035
  }
3035
3036
  } }));
3036
- }, [r]), We = V((e) => {
3037
+ }, [r]), We = H((e) => {
3037
3038
  r.setState((t) => ({ charts: {
3038
3039
  ...t.charts,
3039
3040
  retention: {
@@ -3045,28 +3046,28 @@ function Hn(e = {}) {
3045
3046
  displayConfig: e
3046
3047
  }
3047
3048
  } }));
3048
- }, [r]), Ge = $((e) => e.activeTab), Ke = $((e) => e.activeView), qe = $((e) => e.displayLimit), Je = $((e) => e.showFieldModal), Ye = $((e) => e.fieldModalMode), Xe = $((e) => e.setActiveTab), Ze = $((e) => e.setActiveView), Qe = $((e) => e.setDisplayLimit), $e = $((e) => e.closeFieldModal), [et, tt] = G(0), nt = $((e) => e.openMetricsModal), rt = $((e) => e.addMetric), it = $((e) => e.removeMetric), at = $((e) => e.toggleMetric), ot = $((e) => e.reorderMetrics), st = $((e) => e.openBreakdownsModal), ct = $((e) => e.addBreakdown), lt = $((e) => e.removeBreakdown), ut = $((e) => e.toggleBreakdown), dt = $((e) => e.setBreakdownGranularity), ft = $((e) => e.toggleBreakdownComparison), pt = $((e) => e.reorderBreakdowns), mt = $((e) => e.setFilters), ht = $((e) => e.dropFieldToFilter), gt = $((e) => e.setOrder), _t = $((e) => e.setLimit), vt = $((e) => e.clearQuery), yt = $((e) => e.clearCurrentMode), bt = $((e) => e.setFunnelBindingKey), xt = $((e) => e.setAnalysisType), St = $((e) => e.setFunnelCube), Ct = $((e) => e.addFunnelStep), wt = $((e) => e.removeFunnelStep), Tt = $((e) => e.updateFunnelStep), Et = $((e) => e.setActiveFunnelStepIndex), Dt = $((e) => e.reorderFunnelSteps), kt = $((e) => e.setFunnelTimeDimension), jt = $((e) => e.setFlowCube), Mt = $((e) => e.setFlowBindingKey), Nt = $((e) => e.setFlowTimeDimension), Pt = $((e) => e.setEventDimension), Ft = $((e) => e.setStartingStepName), It = $((e) => e.setStartingStepFilters), Lt = $((e) => e.setStepsBefore), Rt = $((e) => e.setStepsAfter), zt = $((e) => e.setJoinStrategy), Bt = $((e) => e.setRetentionCube), Vt = $((e) => e.setRetentionBindingKey), Ht = $((e) => e.setRetentionTimeDimension), Ut = $((e) => e.setRetentionDateRange), Wt = $((e) => e.setRetentionCohortFilters), Gt = $((e) => e.setRetentionActivityFilters), X = $((e) => e.setRetentionBreakdowns), Z = $((e) => e.addRetentionBreakdown), Kt = $((e) => e.removeRetentionBreakdown), qt = $((e) => e.setRetentionViewGranularity), Q = $((e) => e.setRetentionPeriods), Jt = $((e) => e.setRetentionType), Yt = $((e) => e.getValidation), Xt = U(() => Yt(), [
3049
+ }, [r]), Ge = $((e) => e.activeTab), Ke = $((e) => e.activeView), qe = $((e) => e.displayLimit), Je = $((e) => e.showFieldModal), Ye = $((e) => e.fieldModalMode), Xe = $((e) => e.setActiveTab), Ze = $((e) => e.setActiveView), Qe = $((e) => e.setDisplayLimit), $e = $((e) => e.closeFieldModal), [et, tt] = K(0), nt = $((e) => e.openMetricsModal), rt = $((e) => e.addMetric), it = $((e) => e.removeMetric), at = $((e) => e.toggleMetric), ot = $((e) => e.reorderMetrics), st = $((e) => e.openBreakdownsModal), ct = $((e) => e.addBreakdown), lt = $((e) => e.removeBreakdown), ut = $((e) => e.toggleBreakdown), dt = $((e) => e.setBreakdownGranularity), ft = $((e) => e.toggleBreakdownComparison), pt = $((e) => e.reorderBreakdowns), mt = $((e) => e.setFilters), ht = $((e) => e.dropFieldToFilter), gt = $((e) => e.setOrder), _t = $((e) => e.setLimit), vt = $((e) => e.clearQuery), yt = $((e) => e.clearCurrentMode), bt = $((e) => e.setFunnelBindingKey), xt = $((e) => e.setAnalysisType), St = $((e) => e.setFunnelCube), Ct = $((e) => e.addFunnelStep), wt = $((e) => e.removeFunnelStep), Tt = $((e) => e.updateFunnelStep), Et = $((e) => e.setActiveFunnelStepIndex), Dt = $((e) => e.reorderFunnelSteps), kt = $((e) => e.setFunnelTimeDimension), jt = $((e) => e.setFlowCube), Mt = $((e) => e.setFlowBindingKey), Nt = $((e) => e.setFlowTimeDimension), Pt = $((e) => e.setEventDimension), Ft = $((e) => e.setStartingStepName), It = $((e) => e.setStartingStepFilters), Lt = $((e) => e.setStepsBefore), Rt = $((e) => e.setStepsAfter), zt = $((e) => e.setJoinStrategy), Bt = $((e) => e.setRetentionCube), Vt = $((e) => e.setRetentionBindingKey), Ht = $((e) => e.setRetentionTimeDimension), Ut = $((e) => e.setRetentionDateRange), Wt = $((e) => e.setRetentionCohortFilters), Gt = $((e) => e.setRetentionActivityFilters), X = $((e) => e.setRetentionBreakdowns), Z = $((e) => e.addRetentionBreakdown), Kt = $((e) => e.removeRetentionBreakdown), qt = $((e) => e.setRetentionViewGranularity), Q = $((e) => e.setRetentionPeriods), Jt = $((e) => e.setRetentionType), Yt = $((e) => e.getValidation), Xt = W(() => Yt(), [
3049
3050
  Yt,
3050
3051
  i,
3051
3052
  O,
3052
- A,
3053
- k,
3054
3053
  j,
3055
- P,
3056
- oe,
3057
- se,
3054
+ k,
3055
+ M,
3058
3056
  F,
3059
3057
  I,
3058
+ ae,
3059
+ oe,
3060
3060
  L,
3061
- ce,
3062
- le
3063
- ]), Zt = V((e, t) => {
3061
+ R,
3062
+ se,
3063
+ ce
3064
+ ]), Zt = H((e, t) => {
3064
3065
  O === "retention" && t === "dimension" ? Z({ field: e.name }) : ut(e.name, t === "timeDimension");
3065
3066
  }, [
3066
3067
  O,
3067
3068
  Z,
3068
3069
  ut
3069
- ]), Qt = V((e, t, n, r) => {
3070
+ ]), Qt = H((e, t, n, r) => {
3070
3071
  Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
3071
3072
  }, [
3072
3073
  Ye,
@@ -3093,35 +3094,35 @@ function Hn(e = {}) {
3093
3094
  effectiveBreakdowns: D,
3094
3095
  analysisType: O,
3095
3096
  funnelBindingKey: k,
3096
- isFunnelModeEnabled: M,
3097
- funnelCube: ee,
3098
- funnelSteps: A,
3099
- activeFunnelStepIndex: te,
3100
- funnelTimeDimension: j,
3101
- funnelChartType: N,
3102
- funnelChartConfig: re,
3103
- funnelDisplayConfig: ae,
3104
- serverFunnelQuery: pe,
3105
- flowCube: P,
3106
- flowBindingKey: oe,
3107
- flowTimeDimension: se,
3108
- eventDimension: F,
3109
- startingStep: I,
3110
- stepsBefore: L,
3111
- stepsAfter: ce,
3112
- joinStrategy: le,
3097
+ isFunnelModeEnabled: N,
3098
+ funnelCube: A,
3099
+ funnelSteps: j,
3100
+ activeFunnelStepIndex: ee,
3101
+ funnelTimeDimension: M,
3102
+ funnelChartType: te,
3103
+ funnelChartConfig: ne,
3104
+ funnelDisplayConfig: ie,
3105
+ serverFunnelQuery: fe,
3106
+ flowCube: F,
3107
+ flowBindingKey: I,
3108
+ flowTimeDimension: ae,
3109
+ eventDimension: oe,
3110
+ startingStep: L,
3111
+ stepsBefore: R,
3112
+ stepsAfter: se,
3113
+ joinStrategy: ce,
3113
3114
  flowDisplayConfig: ue,
3114
- serverFlowQuery: z,
3115
- retentionCube: he,
3116
- retentionBindingKey: ge,
3117
- retentionTimeDimension: _e,
3118
- retentionDateRange: ve,
3119
- retentionCohortFilters: ye,
3120
- retentionActivityFilters: B,
3121
- retentionBreakdowns: be,
3122
- retentionViewGranularity: xe,
3123
- retentionPeriods: Se,
3124
- retentionType: H,
3115
+ serverFlowQuery: pe,
3116
+ retentionCube: me,
3117
+ retentionBindingKey: he,
3118
+ retentionTimeDimension: ge,
3119
+ retentionDateRange: _e,
3120
+ retentionCohortFilters: ve,
3121
+ retentionActivityFilters: V,
3122
+ retentionBreakdowns: ye,
3123
+ retentionViewGranularity: be,
3124
+ retentionPeriods: xe,
3125
+ retentionType: U,
3125
3126
  retentionDisplayConfig: q,
3126
3127
  serverRetentionQuery: J,
3127
3128
  retentionValidation: Ce,
@@ -3139,7 +3140,7 @@ function Hn(e = {}) {
3139
3140
  fieldModalMode: Ye,
3140
3141
  activeTableIndex: et,
3141
3142
  adapterValidation: Xt,
3142
- getQueryConfig: V(() => {
3143
+ getQueryConfig: H(() => {
3143
3144
  let e = r.getState();
3144
3145
  return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
3145
3146
  queries: e.buildAllQueries(),
@@ -3150,7 +3151,7 @@ function Hn(e = {}) {
3150
3151
  stepTimeToConvert: e.stepTimeToConvert
3151
3152
  } : e.buildCurrentQuery();
3152
3153
  }, [r]),
3153
- getChartConfig: V(() => {
3154
+ getChartConfig: H(() => {
3154
3155
  let e = r.getState(), t = e.charts[e.analysisType];
3155
3156
  return t ? {
3156
3157
  chartType: t.chartType,
@@ -3167,7 +3168,7 @@ function Hn(e = {}) {
3167
3168
  Ee,
3168
3169
  De
3169
3170
  ]),
3170
- getAnalysisType: V(() => r.getState().analysisType, [r]),
3171
+ getAnalysisType: H(() => r.getState().analysisType, [r]),
3171
3172
  actions: {
3172
3173
  setActiveQueryIndex: s,
3173
3174
  setMergeStrategy: c,
@@ -3285,192 +3286,194 @@ function Jn(e) {
3285
3286
  //#endregion
3286
3287
  //#region src/client/hooks/useAnalysisQuery.ts
3287
3288
  function Yn(e) {
3288
- 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 } = me(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Un({
3289
- isRetentionMode: v,
3290
- isFlowMode: _,
3291
- isFunnelMode: g,
3292
- isMultiMode: y
3293
- }), C = U(() => x || !g || !c || n.length < 2 ? null : _e(n, c), [
3294
- x,
3295
- g,
3289
+ 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, fillMissingDates: h } = e, g = { fillMissingDates: h }, { getFieldLabel: _ } = de(), v = u === "funnel" || l, y = u === "flow", b = u === "retention", x = u === "query" && i, S = u === "query" && !i, C = u === "funnel" && !!d, w = Un({
3290
+ isRetentionMode: b,
3291
+ isFlowMode: y,
3292
+ isFunnelMode: v,
3293
+ isMultiMode: x
3294
+ }), T = W(() => C || !v || !c || n.length < 2 ? null : ge(n, c), [
3295
+ C,
3296
+ v,
3296
3297
  c,
3297
3298
  n
3298
- ]), w = Kn({
3299
+ ]), E = Kn({
3299
3300
  isValidQuery: a,
3300
- isSingleMode: b,
3301
- isMultiMode: y,
3302
- isFunnelMode: g,
3303
- isFlowMode: _,
3304
- isRetentionMode: v,
3301
+ isSingleMode: S,
3302
+ isMultiMode: x,
3303
+ isFunnelMode: v,
3304
+ isFlowMode: y,
3305
+ isRetentionMode: b,
3305
3306
  hasMultiQueryConfig: !!r,
3306
- hasFunnelConfig: !!C,
3307
+ hasFunnelConfig: !!T,
3307
3308
  hasServerFunnelQuery: !!d,
3308
3309
  hasServerFlowQuery: !!f,
3309
3310
  hasServerRetentionQuery: !!p
3310
- }), T = F(t, {
3311
- skip: w.single,
3312
- debounceMs: 300
3313
- }), E = ce(r, {
3314
- skip: w.multi,
3315
- debounceMs: 300
3316
- }), D = ue(C, {
3317
- skip: w.funnel,
3311
+ }), D = F(t, {
3312
+ skip: E.single,
3313
+ debounceMs: 300,
3314
+ gapFill: g
3315
+ }), O = oe(r, {
3316
+ skip: E.multi,
3318
3317
  debounceMs: 300,
3319
- prebuiltServerQuery: x ? d : void 0
3320
- }), O = pe(f ?? null, {
3321
- skip: w.flow,
3318
+ gapFill: g
3319
+ }), k = se(T, {
3320
+ skip: E.funnel,
3321
+ debounceMs: 300,
3322
+ prebuiltServerQuery: C ? d : void 0
3323
+ }), A = ue(f ?? null, {
3324
+ skip: E.flow,
3322
3325
  debounceMs: 300
3323
- }), k = L(p ?? null, {
3324
- skip: w.retention,
3326
+ }), j = ae(p ?? null, {
3327
+ skip: E.retention,
3325
3328
  debounceMs: 300,
3326
- getFieldLabel: h
3327
- }), ee = ge({
3329
+ getFieldLabel: _
3330
+ }), ee = he({
3328
3331
  queries: i ? n : [t],
3329
3332
  isMultiQueryMode: i,
3330
- skip: w.dryRun
3331
- }), A = he(D.serverQuery, { skip: !g || !D.serverQuery }), te = he(O.serverQuery, { skip: !_ || !O.serverQuery }), j = he(p, { skip: !v || !p }), M = Wn(S, {
3332
- retention: k.isLoading || k.isDebouncing,
3333
- flow: O.isLoading || O.isDebouncing,
3334
- funnel: D.isExecuting || D.isDebouncing,
3335
- multi: E.isLoading,
3336
- single: T.isLoading
3337
- }), N = Wn(S, {
3338
- retention: k.isFetching,
3339
- flow: O.isFetching,
3340
- funnel: D.isExecuting,
3341
- multi: E.isFetching,
3342
- single: T.isFetching
3343
- }), ne = Wn(S, {
3344
- retention: k.error,
3345
- flow: O.error,
3346
- funnel: D.error,
3347
- multi: E.error,
3348
- single: T.error
3349
- }), re = !(!T.debouncedQuery && !E.debouncedConfig && D.isDebouncing && O.isDebouncing && k.isDebouncing), ie = V((e) => {
3350
- switch (S) {
3333
+ skip: E.dryRun
3334
+ }), M = me(k.serverQuery, { skip: !v || !k.serverQuery }), N = me(A.serverQuery, { skip: !y || !A.serverQuery }), te = me(p, { skip: !b || !p }), P = Wn(w, {
3335
+ retention: j.isLoading || j.isDebouncing,
3336
+ flow: A.isLoading || A.isDebouncing,
3337
+ funnel: k.isExecuting || k.isDebouncing,
3338
+ multi: O.isLoading,
3339
+ single: D.isLoading
3340
+ }), ne = Wn(w, {
3341
+ retention: j.isFetching,
3342
+ flow: A.isFetching,
3343
+ funnel: k.isExecuting,
3344
+ multi: O.isFetching,
3345
+ single: D.isFetching
3346
+ }), re = Wn(w, {
3347
+ retention: j.error,
3348
+ flow: A.error,
3349
+ funnel: k.error,
3350
+ multi: O.error,
3351
+ single: D.error
3352
+ }), ie = !(!D.debouncedQuery && !O.debouncedConfig && k.isDebouncing && A.isDebouncing && j.isDebouncing), I = H((e) => {
3353
+ switch (w) {
3351
3354
  case "retention":
3352
- k.execute(e);
3355
+ j.execute(e);
3353
3356
  break;
3354
3357
  case "flow":
3355
- O.refetch(e);
3358
+ A.refetch(e);
3356
3359
  break;
3357
3360
  case "funnel":
3358
- D.execute(e);
3361
+ k.execute(e);
3359
3362
  break;
3360
3363
  case "multi":
3361
- E.refetch(e);
3364
+ O.refetch(e);
3362
3365
  break;
3363
- default: T.refetch(e);
3366
+ default: D.refetch(e);
3364
3367
  }
3365
3368
  }, [
3366
- S,
3369
+ w,
3370
+ j,
3371
+ A,
3367
3372
  k,
3368
3373
  O,
3369
- D,
3370
- E,
3371
- T
3372
- ]), ae = U(() => qn({
3373
- hasResults: Wn(S, {
3374
- retention: k.chartData,
3375
- flow: O.data,
3376
- funnel: D.chartData,
3377
- multi: E.data,
3378
- single: T.rawData
3374
+ D
3375
+ ]), L = W(() => qn({
3376
+ hasResults: Wn(w, {
3377
+ retention: j.chartData,
3378
+ flow: A.data,
3379
+ funnel: k.chartData,
3380
+ multi: O.data,
3381
+ single: D.rawData
3379
3382
  }),
3380
3383
  initialData: o,
3381
3384
  isValidQuery: a,
3382
- isLoading: M,
3383
- isFetching: N,
3384
- error: ne
3385
+ isLoading: P,
3386
+ isFetching: ne,
3387
+ error: re
3385
3388
  }), [
3386
3389
  a,
3387
- M,
3388
- N,
3390
+ P,
3389
3391
  ne,
3390
- T.rawData,
3391
- E.data,
3392
- D.chartData,
3392
+ re,
3393
+ D.rawData,
3393
3394
  O.data,
3394
3395
  k.chartData,
3396
+ A.data,
3397
+ j.chartData,
3395
3398
  o,
3396
- S
3397
- ]), P = U(() => Jn({
3398
- isRetentionMode: v,
3399
- isFlowMode: _,
3400
- isFunnelMode: g,
3401
- isMultiMode: y,
3402
- retentionChartData: k.chartData,
3403
- flowData: O.data,
3404
- funnelChartData: D.chartData,
3405
- multiData: E.data,
3406
- singleRawData: T.rawData,
3399
+ w
3400
+ ]), R = W(() => Jn({
3401
+ isRetentionMode: b,
3402
+ isFlowMode: y,
3403
+ isFunnelMode: v,
3404
+ isMultiMode: x,
3405
+ retentionChartData: j.chartData,
3406
+ flowData: A.data,
3407
+ funnelChartData: k.chartData,
3408
+ multiData: O.data,
3409
+ singleRawData: D.rawData,
3407
3410
  initialData: o
3408
3411
  }), [
3409
- T.rawData,
3410
- E.data,
3411
- D.chartData,
3412
+ D.rawData,
3412
3413
  O.data,
3413
3414
  k.chartData,
3415
+ A.data,
3416
+ j.chartData,
3414
3417
  o,
3418
+ x,
3419
+ v,
3415
3420
  y,
3416
- g,
3417
- _,
3418
- v
3419
- ]), oe = U(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
3420
- y,
3421
- g,
3422
- E.perQueryData,
3423
- D.stepResults
3424
- ]), { funnelExecutedQueries: se, funnelServerQuery: I, funnelDebugData: le, flowServerQuery: R, flowChartData: de, flowDebugData: fe, retentionServerQuery: z, retentionChartData: ve, retentionDebugData: ye } = Gn({
3425
- isFunnelMode: g,
3426
- isFlowMode: _,
3427
- isRetentionMode: v,
3428
- funnelExecutedQueries: D.executedQueries,
3429
- funnelServerQuery: D.serverQuery,
3430
- funnelDebugData: A.debugData,
3431
- flowServerQuery: O.serverQuery,
3432
- flowData: O.data,
3433
- flowDebugData: te.debugData,
3421
+ b
3422
+ ]), ce = W(() => v && k.stepResults ? k.stepResults.map((e) => e.data) : !x || !O.perQueryData ? null : O.perQueryData, [
3423
+ x,
3424
+ v,
3425
+ O.perQueryData,
3426
+ k.stepResults
3427
+ ]), { funnelExecutedQueries: le, funnelServerQuery: z, funnelDebugData: fe, flowServerQuery: B, flowChartData: pe, flowDebugData: _e, retentionServerQuery: ve, retentionChartData: V, retentionDebugData: ye } = Gn({
3428
+ isFunnelMode: v,
3429
+ isFlowMode: y,
3430
+ isRetentionMode: b,
3431
+ funnelExecutedQueries: k.executedQueries,
3432
+ funnelServerQuery: k.serverQuery,
3433
+ funnelDebugData: M.debugData,
3434
+ flowServerQuery: A.serverQuery,
3435
+ flowData: A.data,
3436
+ flowDebugData: N.debugData,
3434
3437
  retentionServerQuery: p ?? null,
3435
- retentionChartData: k.chartData,
3436
- retentionDebugData: j.debugData
3437
- }), B = U(() => Wn(S, {
3438
- retention: k.needsRefresh,
3439
- flow: O.needsRefresh,
3440
- funnel: D.needsRefresh,
3438
+ retentionChartData: j.chartData,
3439
+ retentionDebugData: te.debugData
3440
+ }), be = W(() => Wn(w, {
3441
+ retention: j.needsRefresh,
3442
+ flow: A.needsRefresh,
3443
+ funnel: k.needsRefresh,
3441
3444
  multi: !1,
3442
- single: T.needsRefresh
3445
+ single: D.needsRefresh
3443
3446
  }), [
3444
- S,
3447
+ w,
3448
+ j.needsRefresh,
3449
+ A.needsRefresh,
3445
3450
  k.needsRefresh,
3446
- O.needsRefresh,
3447
- D.needsRefresh,
3448
- T.needsRefresh
3449
- ]), be = U(() => {
3450
- if (b && T.warnings) return T.warnings;
3451
- }, [b, T.warnings]);
3451
+ D.needsRefresh
3452
+ ]), xe = W(() => {
3453
+ if (S && D.warnings) return D.warnings;
3454
+ }, [S, D.warnings]);
3452
3455
  return {
3453
- executionStatus: ae,
3454
- executionResults: P,
3455
- perQueryResults: oe,
3456
- isLoading: M,
3457
- isFetching: N,
3458
- error: ne,
3456
+ executionStatus: L,
3457
+ executionResults: R,
3458
+ perQueryResults: ce,
3459
+ isLoading: P,
3460
+ isFetching: ne,
3461
+ error: re,
3459
3462
  debugDataPerQuery: ee.debugDataPerQuery,
3460
- hasDebounced: re,
3461
- refetch: ie,
3462
- funnelExecutedQueries: se,
3463
- funnelServerQuery: I,
3464
- funnelDebugData: le,
3465
- flowServerQuery: R,
3466
- flowChartData: de,
3467
- flowDebugData: fe,
3468
- retentionServerQuery: z,
3469
- retentionChartData: ve,
3463
+ hasDebounced: ie,
3464
+ refetch: I,
3465
+ funnelExecutedQueries: le,
3466
+ funnelServerQuery: z,
3467
+ funnelDebugData: fe,
3468
+ flowServerQuery: B,
3469
+ flowChartData: pe,
3470
+ flowDebugData: _e,
3471
+ retentionServerQuery: ve,
3472
+ retentionChartData: V,
3470
3473
  retentionDebugData: ye,
3471
3474
  retentionValidation: m ?? null,
3472
- needsRefresh: B,
3473
- warnings: be
3475
+ needsRefresh: be,
3476
+ warnings: xe
3474
3477
  };
3475
3478
  }
3476
3479
  //#endregion
@@ -3485,7 +3488,7 @@ function er(e) {
3485
3488
  let t = (0, Xn.decompressFromEncodedURIComponent)(e);
3486
3489
  if (!t) return null;
3487
3490
  let n = JSON.parse(t);
3488
- return j(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3491
+ return A(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3489
3492
  } catch {
3490
3493
  return null;
3491
3494
  }
@@ -3578,19 +3581,19 @@ function lr(e) {
3578
3581
  return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
3579
3582
  }
3580
3583
  function ur(e) {
3581
- let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u = W(!1);
3582
- H(() => {
3584
+ let { state: t, query: n, aiEndpoint: r = "/api/ai", onQueryChange: i, onChartConfigChange: a } = e, { storeApi: o, actions: s } = t, { apiOptions: l } = c(), u = G(!1);
3585
+ U(() => {
3583
3586
  if (u.current) return;
3584
3587
  u.current = !0;
3585
3588
  let e = or();
3586
3589
  e && (o.getState().load(e), ar());
3587
- }, [o]), H(() => {
3590
+ }, [o]), U(() => {
3588
3591
  i && t.isValidQuery && i(t.currentQuery);
3589
3592
  }, [
3590
3593
  t.currentQuery,
3591
3594
  t.isValidQuery,
3592
3595
  i
3593
- ]), H(() => {
3596
+ ]), U(() => {
3594
3597
  a && a({
3595
3598
  chartType: t.chartType,
3596
3599
  chartConfig: t.chartConfig,
@@ -3602,46 +3605,46 @@ function ur(e) {
3602
3605
  t.displayConfig,
3603
3606
  a
3604
3607
  ]);
3605
- let { combinedMetrics: d, combinedBreakdowns: f, chartType: p, chartConfig: g, userManuallySelectedChart: _ } = t, { hasDebounced: v } = n, { setChartType: y, setChartConfig: b } = s, x = W("");
3606
- H(() => {
3607
- if (!v || d.length === 0 && f.length === 0) return;
3608
+ let { combinedMetrics: d, combinedBreakdowns: p, chartType: m, chartConfig: h, userManuallySelectedChart: g } = t, { hasDebounced: _ } = n, { setChartType: v, setChartConfig: y } = s, b = G("");
3609
+ U(() => {
3610
+ if (!_ || d.length === 0 && p.length === 0) return;
3608
3611
  let e = JSON.stringify({
3609
3612
  metrics: d.map((e) => e.field),
3610
- breakdowns: f.map((e) => ({
3613
+ breakdowns: p.map((e) => ({
3611
3614
  field: e.field,
3612
3615
  isTime: e.isTimeDimension
3613
3616
  }))
3614
3617
  });
3615
- if (e === x.current) return;
3616
- x.current = e;
3617
- let t = Mt(d, f, p, _);
3618
+ if (e === b.current) return;
3619
+ b.current = e;
3620
+ let t = Mt(d, p, m, g);
3618
3621
  if (t) {
3619
- let { chartConfig: e } = At(d, f, t);
3620
- y(t), b(e), s.setUserManuallySelectedChart(!1);
3621
- } else if (d.length > 0 || f.length > 0) {
3622
- if (p === "table" || p === "recordsTable") {
3623
- let e = p === "recordsTable" ? "columns" : "xAxis", t = [...f.map((e) => e.field), ...d.map((e) => e.field)], n = Array.isArray(g[e]) ? g[e] : [], r = new Set(g.hiddenColumns ?? []), i = t.filter((e) => !n.includes(e) && !r.has(e));
3624
- i.length > 0 && b({
3625
- ...g,
3622
+ let { chartConfig: e } = At(d, p, t);
3623
+ v(t), y(e), s.setUserManuallySelectedChart(!1);
3624
+ } else if (d.length > 0 || p.length > 0) {
3625
+ if (m === "table" || m === "recordsTable") {
3626
+ let e = m === "recordsTable" ? "columns" : "xAxis", t = [...p.map((e) => e.field), ...d.map((e) => e.field)], n = Array.isArray(h[e]) ? h[e] : [], r = new Set(h.hiddenColumns ?? []), i = t.filter((e) => !n.includes(e) && !r.has(e));
3627
+ i.length > 0 && y({
3628
+ ...h,
3626
3629
  [e]: [...n, ...i]
3627
3630
  });
3628
- } else if (!g.xAxis?.length && !g.yAxis?.length && !g.series?.length) {
3629
- let { chartConfig: e } = At(d, f, p);
3630
- b(e);
3631
+ } else if (!h.xAxis?.length && !h.yAxis?.length && !h.series?.length) {
3632
+ let { chartConfig: e } = At(d, p, m);
3633
+ y(e);
3631
3634
  }
3632
3635
  }
3633
3636
  }, [
3634
- v,
3637
+ _,
3635
3638
  d,
3636
- f,
3637
3639
  p,
3638
- _,
3640
+ m,
3639
3641
  g,
3642
+ h,
3643
+ v,
3640
3644
  y,
3641
- b,
3642
3645
  s
3643
3646
  ]);
3644
- let [S, C] = G({
3647
+ let [x, S] = K({
3645
3648
  isOpen: !1,
3646
3649
  userPrompt: "",
3647
3650
  isGenerating: !1,
@@ -3649,7 +3652,7 @@ function ur(e) {
3649
3652
  hasGeneratedQuery: !1,
3650
3653
  previousState: null,
3651
3654
  previousConfig: null
3652
- }), w = V((e) => {
3655
+ }), C = H((e) => {
3653
3656
  o.getState().updateQueryState(t.activeQueryIndex, (t) => {
3654
3657
  let n = e(t);
3655
3658
  return {
@@ -3661,7 +3664,7 @@ function ur(e) {
3661
3664
  limit: n.limit
3662
3665
  };
3663
3666
  });
3664
- }, [o, t.activeQueryIndex]), T = V((e) => {
3667
+ }, [o, t.activeQueryIndex]), T = H((e) => {
3665
3668
  let t = {
3666
3669
  version: 1,
3667
3670
  analysisType: "funnel",
@@ -3674,9 +3677,9 @@ function ur(e) {
3674
3677
  query: e
3675
3678
  };
3676
3679
  o.getState().load(t);
3677
- }, [o]), E = V(() => {
3680
+ }, [o]), E = H(() => {
3678
3681
  let e = o.getState().save();
3679
- C({
3682
+ S({
3680
3683
  isOpen: !0,
3681
3684
  userPrompt: "",
3682
3685
  isGenerating: !1,
@@ -3702,30 +3705,30 @@ function ur(e) {
3702
3705
  t.chartConfig,
3703
3706
  t.displayConfig,
3704
3707
  t.analysisType
3705
- ]), D = V(() => {
3706
- C((e) => ({
3708
+ ]), D = H(() => {
3709
+ S((e) => ({
3707
3710
  ...e,
3708
3711
  isOpen: !1,
3709
3712
  userPrompt: "",
3710
3713
  error: null,
3711
3714
  hasGeneratedQuery: !1
3712
3715
  }));
3713
- }, []), O = V((e) => {
3714
- C((t) => ({
3716
+ }, []), O = H((e) => {
3717
+ S((t) => ({
3715
3718
  ...t,
3716
3719
  userPrompt: e
3717
3720
  }));
3718
- }, []), k = V(async () => {
3719
- if (S.userPrompt.trim()) {
3720
- C((e) => ({
3721
+ }, []), k = H(async () => {
3722
+ if (x.userPrompt.trim()) {
3723
+ S((e) => ({
3721
3724
  ...e,
3722
3725
  isGenerating: !0,
3723
3726
  error: null
3724
3727
  }));
3725
3728
  try {
3726
- let e = cr(await sr("", S.userPrompt, r, l?.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;
3729
+ let e = cr(await sr("", x.userPrompt, r, l?.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;
3727
3730
  if (lr(i)) {
3728
- s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
3731
+ s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
3729
3732
  ...e,
3730
3733
  isGenerating: !1,
3731
3734
  hasGeneratedQuery: !0
@@ -3733,19 +3736,19 @@ function ur(e) {
3733
3736
  return;
3734
3737
  }
3735
3738
  let c = i;
3736
- w((e) => ({
3739
+ C((e) => ({
3737
3740
  ...e,
3738
3741
  metrics: (c.measures || []).map((e, t) => ({
3739
- id: h(),
3742
+ id: f(),
3740
3743
  field: e,
3741
- label: m(t)
3744
+ label: w(t)
3742
3745
  })),
3743
3746
  breakdowns: [...(c.dimensions || []).map((e) => ({
3744
- id: h(),
3747
+ id: f(),
3745
3748
  field: e,
3746
3749
  isTimeDimension: !1
3747
3750
  })), ...(c.timeDimensions || []).map((e) => ({
3748
- id: h(),
3751
+ id: f(),
3749
3752
  field: e.dimension,
3750
3753
  granularity: e.granularity,
3751
3754
  isTimeDimension: !0
@@ -3753,13 +3756,13 @@ function ur(e) {
3753
3756
  filters: c.filters || [],
3754
3757
  order: c.order || void 0,
3755
3758
  limit: c.limit ?? void 0
3756
- })), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), C((e) => ({
3759
+ })), t.analysisType === "funnel" && s.setAnalysisType("query"), a && s.setChartType(a), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
3757
3760
  ...e,
3758
3761
  isGenerating: !1,
3759
3762
  hasGeneratedQuery: !0
3760
3763
  }));
3761
3764
  } catch (e) {
3762
- C((t) => ({
3765
+ S((t) => ({
3763
3766
  ...t,
3764
3767
  isGenerating: !1,
3765
3768
  error: e instanceof Error ? e.message : "Failed to generate query"
@@ -3767,15 +3770,15 @@ function ur(e) {
3767
3770
  }
3768
3771
  }
3769
3772
  }, [
3770
- S.userPrompt,
3773
+ x.userPrompt,
3771
3774
  r,
3772
3775
  l?.headers,
3773
- w,
3776
+ C,
3774
3777
  T,
3775
3778
  t.analysisType,
3776
3779
  s
3777
- ]), ee = V(() => {
3778
- C({
3780
+ ]), A = H(() => {
3781
+ S({
3779
3782
  isOpen: !1,
3780
3783
  userPrompt: "",
3781
3784
  isGenerating: !1,
@@ -3784,13 +3787,13 @@ function ur(e) {
3784
3787
  previousState: null,
3785
3788
  previousConfig: null
3786
3789
  });
3787
- }, []), A = V(() => {
3788
- S.previousConfig ? o.getState().load(S.previousConfig) : S.previousState && (w((e) => ({
3790
+ }, []), j = H(() => {
3791
+ x.previousConfig ? o.getState().load(x.previousConfig) : x.previousState && (C((e) => ({
3789
3792
  ...e,
3790
- metrics: S.previousState.metrics,
3791
- breakdowns: S.previousState.breakdowns,
3792
- filters: S.previousState.filters
3793
- })), s.setChartType(S.previousState.chartType), s.setChartConfig(S.previousState.chartConfig), s.setDisplayConfig(S.previousState.displayConfig), S.previousState.analysisType && s.setAnalysisType(S.previousState.analysisType)), C({
3793
+ metrics: x.previousState.metrics,
3794
+ breakdowns: x.previousState.breakdowns,
3795
+ filters: x.previousState.filters
3796
+ })), s.setChartType(x.previousState.chartType), s.setChartConfig(x.previousState.chartConfig), s.setDisplayConfig(x.previousState.displayConfig), x.previousState.analysisType && s.setAnalysisType(x.previousState.analysisType)), S({
3794
3797
  isOpen: !1,
3795
3798
  userPrompt: "",
3796
3799
  isGenerating: !1,
@@ -3800,23 +3803,23 @@ function ur(e) {
3800
3803
  previousConfig: null
3801
3804
  });
3802
3805
  }, [
3803
- S.previousState,
3804
- S.previousConfig,
3806
+ x.previousState,
3807
+ x.previousConfig,
3805
3808
  o,
3806
- w,
3809
+ C,
3807
3810
  s
3808
- ]), [te, j] = G("idle"), M = t.effectiveIsValidQuery;
3811
+ ]), [ee, M] = K("idle"), N = t.effectiveIsValidQuery;
3809
3812
  return {
3810
- aiState: S,
3813
+ aiState: x,
3811
3814
  openAI: E,
3812
3815
  closeAI: D,
3813
3816
  setAIPrompt: O,
3814
3817
  generateAI: k,
3815
- acceptAI: ee,
3816
- cancelAI: A,
3817
- shareButtonState: te,
3818
- share: V(async () => {
3819
- if (!M) return;
3818
+ acceptAI: A,
3819
+ cancelAI: j,
3820
+ shareButtonState: ee,
3821
+ share: H(async () => {
3822
+ if (!N) return;
3820
3823
  let { encoded: e, queryOnly: t } = nr(o.getState().save());
3821
3824
  if (!e) return;
3822
3825
  let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
@@ -3826,11 +3829,11 @@ function ur(e) {
3826
3829
  let e = document.createElement("textarea");
3827
3830
  e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
3828
3831
  }
3829
- j(t ? "copied-no-chart" : "copied"), setTimeout(() => {
3830
- j("idle");
3832
+ M(t ? "copied-no-chart" : "copied"), setTimeout(() => {
3833
+ M("idle");
3831
3834
  }, 2e3);
3832
- }, [M, o]),
3833
- canShare: M
3835
+ }, [N, o]),
3836
+ canShare: N
3834
3837
  };
3835
3838
  }
3836
3839
  //#endregion
@@ -3850,7 +3853,8 @@ function dr(e = {}) {
3850
3853
  serverFunnelQuery: o.serverFunnelQuery,
3851
3854
  serverFlowQuery: o.serverFlowQuery,
3852
3855
  serverRetentionQuery: o.serverRetentionQuery,
3853
- retentionValidation: o.retentionValidation
3856
+ retentionValidation: o.retentionValidation,
3857
+ fillMissingDates: o.displayConfig.fillMissingDates
3854
3858
  }), l = ur({
3855
3859
  state: o,
3856
3860
  query: c,
@@ -4064,7 +4068,7 @@ function pr(e) {
4064
4068
  }
4065
4069
  function mr(e, t) {
4066
4070
  if (typeof e.dimension == "string") return !0;
4067
- let n = ve(t);
4071
+ let n = _e(t);
4068
4072
  return n ? e.dimension.some((e) => e.cube === n) : !1;
4069
4073
  }
4070
4074
  function hr(e, t) {
@@ -4072,7 +4076,7 @@ function hr(e, t) {
4072
4076
  for (let r = 0; r < t.length; r++) {
4073
4077
  let i = t[r];
4074
4078
  if (!mr(e, i.query)) {
4075
- let e = ve(i.query) || "unknown";
4079
+ let e = _e(i.query) || "unknown";
4076
4080
  n.push({
4077
4081
  type: "cross_cube",
4078
4082
  message: `Step ${r + 1} uses cube "${e}" but no binding key mapping exists for it`,
@@ -4142,4 +4146,4 @@ function br(e) {
4142
4146
  //#endregion
4143
4147
  export { kn as A, En as C, jn as D, Dn as E, Ye as F, Cn as M, Lt as N, Tn as O, it as P, Sn as S, wn as T, Vn as _, hr as a, Ln as b, dr as c, rr as d, tr as f, Fn as g, In as h, fr as i, $ as j, An as k, $n as l, or as m, br as n, _r as o, ir as p, vr as r, pr as s, yr as t, er as u, zn as v, On as w, Nn as x, Pn as y };
4144
4148
 
4145
- //# sourceMappingURL=analysis-builder-shared-BEvvX6ln.js.map
4149
+ //# sourceMappingURL=analysis-builder-shared-DPLR8upd.js.map