drizzle-cube 0.9.6 → 0.9.7

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 (264) hide show
  1. package/README.md +3 -2
  2. package/dist/adapters/ActivityGridChart.config-C2kT9qd6.cjs +1 -0
  3. package/dist/adapters/ActivityGridChart.config-Crkwyx_5.js +2 -0
  4. package/dist/adapters/AreaChart.config-Cn4fTDQH.js +2 -0
  5. package/dist/adapters/AreaChart.config-DSBAn4xT.cjs +1 -0
  6. package/dist/adapters/BarChart.config-2r2_F09O.cjs +1 -0
  7. package/dist/adapters/BarChart.config-CorT50Sr.js +2 -0
  8. package/dist/adapters/BoxPlotChart.config-BM4SbL34.cjs +1 -0
  9. package/dist/adapters/BoxPlotChart.config-Dki3qfhN.js +2 -0
  10. package/dist/adapters/BubbleChart.config-DA768T1u.cjs +1 -0
  11. package/dist/adapters/BubbleChart.config-LJ2w0ZAz.js +2 -0
  12. package/dist/adapters/CandlestickChart.config-C00YG927.cjs +1 -0
  13. package/dist/adapters/CandlestickChart.config-D-vVDHaQ.js +2 -0
  14. package/dist/adapters/DataTable.config-Ml6Q3VEP.cjs +1 -0
  15. package/dist/adapters/DataTable.config-jwBiAUpg.js +2 -0
  16. package/dist/adapters/DotStripChart.config-C_dgJFje.js +2 -0
  17. package/dist/adapters/DotStripChart.config-D5M4xxNE.cjs +1 -0
  18. package/dist/adapters/FunnelChart.config-DBkjp0wh.js +2 -0
  19. package/dist/adapters/FunnelChart.config-Jc6DVjCx.cjs +1 -0
  20. package/dist/adapters/GaugeChart.config-BqW6WqXS.cjs +1 -0
  21. package/dist/adapters/GaugeChart.config-CyD4y_yf.js +2 -0
  22. package/dist/adapters/HeatMapChart.config-C_TKjH9_.cjs +1 -0
  23. package/dist/adapters/HeatMapChart.config-Di1KFl9H.js +2 -0
  24. package/dist/adapters/KpiDelta.config-qlIY4kju.js +2 -0
  25. package/dist/adapters/KpiDelta.config-zaqkGeS2.cjs +1 -0
  26. package/dist/adapters/KpiNumber.config-D1hq68b3.cjs +1 -0
  27. package/dist/adapters/KpiNumber.config-D9LpXMmo.js +2 -0
  28. package/dist/adapters/KpiText.config-BBBV_4aK.cjs +1 -0
  29. package/dist/adapters/KpiText.config-pqFid-lb.js +2 -0
  30. package/dist/adapters/LineChart.config-CFGa_jpk.js +2 -0
  31. package/dist/adapters/LineChart.config-DRTr24Jl.cjs +1 -0
  32. package/dist/adapters/MarkdownChart.config--Teyo7aa.cjs +1 -0
  33. package/dist/adapters/MarkdownChart.config-Cnptz8gx.js +2 -0
  34. package/dist/adapters/MeasureProfileChart.config-BlAnkNf6.js +2 -0
  35. package/dist/adapters/MeasureProfileChart.config-c4K6xVET.cjs +1 -0
  36. package/dist/adapters/PieChart.config-BX5FcoZn.cjs +1 -0
  37. package/dist/adapters/PieChart.config-DT1TCBFA.js +2 -0
  38. package/dist/adapters/ProportionBarChart.config-CN5ov6e6.js +2 -0
  39. package/dist/adapters/ProportionBarChart.config-DdrZQypv.cjs +1 -0
  40. package/dist/adapters/RadarChart.config-CYpWy1MI.js +2 -0
  41. package/dist/adapters/RadarChart.config-Cm14F-JW.cjs +1 -0
  42. package/dist/adapters/RadialBarChart.config-BXEmrEW0.js +2 -0
  43. package/dist/adapters/RadialBarChart.config-bJL8ZwT5.cjs +1 -0
  44. package/dist/adapters/RecordsTable.config-BifW_6cA.cjs +1 -0
  45. package/dist/adapters/RecordsTable.config-DOu5dLR9.js +2 -0
  46. package/dist/adapters/RetentionCombinedChart.config-BLTS46q4.js +2 -0
  47. package/dist/adapters/RetentionCombinedChart.config-DkIUp-uU.cjs +1 -0
  48. package/dist/adapters/RetentionHeatmap.config-Csnntt4P.js +2 -0
  49. package/dist/adapters/RetentionHeatmap.config-Xljn01Px.cjs +1 -0
  50. package/dist/adapters/SankeyChart.config-BExGzO93.cjs +1 -0
  51. package/dist/adapters/SankeyChart.config-DEBF3E7J.js +2 -0
  52. package/dist/adapters/ScatterChart.config-B9fxyVl8.cjs +1 -0
  53. package/dist/adapters/ScatterChart.config-CNWNsjv_.js +2 -0
  54. package/dist/adapters/SunburstChart.config-DyBJr_Ah.js +2 -0
  55. package/dist/adapters/SunburstChart.config-vXKPV3lF.cjs +1 -0
  56. package/dist/adapters/TreeMapChart.config-CoXSasFP.js +2 -0
  57. package/dist/adapters/TreeMapChart.config-iq-fCkIZ.cjs +1 -0
  58. package/dist/adapters/WaterfallChart.config-Coyj2j_7.cjs +1 -0
  59. package/dist/adapters/WaterfallChart.config-Dyf-p2Z2.js +2 -0
  60. package/dist/adapters/{compiler-CpvetSCm.js → compiler-BKg3j2mm.js} +1260 -2446
  61. package/dist/adapters/compiler-BX6Ug_Uq.cjs +166 -0
  62. package/dist/adapters/core/index.cjs +1 -1
  63. package/dist/adapters/core/index.js +1 -1
  64. package/dist/adapters/{core-BH_56XtM.js → core-Bmb7XMBz.js} +2 -2
  65. package/dist/adapters/{core-CydD6oFu.cjs → core-JgUTMhxl.cjs} +1 -1
  66. package/dist/adapters/express/index.cjs +1 -1
  67. package/dist/adapters/express/index.js +5 -5
  68. package/dist/adapters/fastify/index.cjs +1 -1
  69. package/dist/adapters/fastify/index.js +23 -23
  70. package/dist/adapters/{handler-Dp8fpSpk.cjs → handler-CTSg1daG.cjs} +8 -8
  71. package/dist/adapters/{handler-CtcALGcY.js → handler-DtX1YNOn.js} +213 -209
  72. package/dist/adapters/hono/index.cjs +1 -1
  73. package/dist/adapters/hono/index.js +4 -4
  74. package/dist/adapters/mcp-app-html-Bu4j3yZM.cjs +1 -0
  75. package/dist/adapters/{mcp-app-html-C8vG9epH.js → mcp-app-html-D3GsxPcx.js} +1 -1
  76. package/dist/adapters/mcp-app-html.cjs +1 -1
  77. package/dist/adapters/mcp-app-html.js +1 -1
  78. package/dist/adapters/mcp-tools.cjs +1 -1
  79. package/dist/adapters/mcp-tools.js +3 -3
  80. package/dist/adapters/{mcp-transport-DDxjqyuK.js → mcp-transport-BTmAXLo8.js} +8 -3
  81. package/dist/adapters/{mcp-transport-QGYYYSgR.cjs → mcp-transport-DzxluRyH.cjs} +2 -2
  82. package/dist/adapters/nextjs/index.cjs +1 -1
  83. package/dist/adapters/nextjs/index.js +5 -5
  84. package/dist/adapters/{openai-Cm4JcLuF.cjs → openai-BwtOIJIk.cjs} +1 -1
  85. package/dist/adapters/{openai-pCkHdDh4.js → openai-CWnhWp3I.js} +1 -1
  86. package/dist/adapters/{openai-CwKv0DD-.cjs → openai-ClwjvwzT.cjs} +2 -2
  87. package/dist/adapters/{openai-DH5InEPj.js → openai-Dqrs3PGo.js} +3 -3
  88. package/dist/adapters/utils-Du_UZbn5.cjs +139 -0
  89. package/dist/adapters/{utils-C_Mc0qsk.js → utils-i2h5cwI3.js} +2587 -1254
  90. package/dist/adapters/utils.cjs +1 -1
  91. package/dist/adapters/utils.js +1 -1
  92. package/dist/cjs/server/adapters/base-adapter.d.ts +3 -3
  93. package/dist/cjs/server/ai/query-schema.d.ts +3 -3
  94. package/dist/cjs/server/builders/date-time-builder.d.ts +1 -2
  95. package/dist/cjs/server/builders/date-time-helpers.d.ts +19 -6
  96. package/dist/cjs/server/builders/filter-operators.d.ts +10 -1
  97. package/dist/cjs/server/execution/query-normalizer.d.ts +9 -0
  98. package/dist/cjs/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
  99. package/dist/cjs/server/physical-plan/semi-join.d.ts +21 -0
  100. package/dist/cjs/server/prompts/single-step-prompt.d.ts +1 -1
  101. package/dist/client/charts.js +12 -12
  102. package/dist/client/chunks/{DashboardEditModal-USQFytJw.js → DashboardEditModal-DfaeSZGf.js} +12 -12
  103. package/dist/client/chunks/{DashboardEditModal-USQFytJw.js.map → DashboardEditModal-DfaeSZGf.js.map} +1 -1
  104. package/dist/client/chunks/{DotStripChart-CjSsunHE.js → DotStripChart-in6QHc0b.js} +3 -3
  105. package/dist/client/chunks/{DotStripChart-CjSsunHE.js.map → DotStripChart-in6QHc0b.js.map} +1 -1
  106. package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js → ProportionBarChart-CjuOm7NT.js} +3 -3
  107. package/dist/client/chunks/{ProportionBarChart-B8UyZBO_.js.map → ProportionBarChart-CjuOm7NT.js.map} +1 -1
  108. package/dist/client/chunks/{RecordsTable-BSmkwdgd.js → RecordsTable-CXXsiaV1.js} +4 -4
  109. package/dist/client/chunks/{RecordsTable-BSmkwdgd.js.map → RecordsTable-CXXsiaV1.js.map} +1 -1
  110. package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js → RetentionCombinedChart-DFCeEFkx.js} +3 -3
  111. package/dist/client/chunks/{RetentionCombinedChart-rOdIhUGH.js.map → RetentionCombinedChart-DFCeEFkx.js.map} +1 -1
  112. package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js → RetentionHeatmap-jpshJ2Af.js} +2 -2
  113. package/dist/client/chunks/{RetentionHeatmap-DVm_7rph.js.map → RetentionHeatmap-jpshJ2Af.js.map} +1 -1
  114. package/dist/client/chunks/{analysis-builder-D_tw9BvU.js → analysis-builder-fPK8NgJW.js} +9 -9
  115. package/dist/client/chunks/{analysis-builder-D_tw9BvU.js.map → analysis-builder-fPK8NgJW.js.map} +1 -1
  116. package/dist/client/chunks/{analysis-builder-shared-BSINKFr2.js → analysis-builder-shared--4LqPSum.js} +829 -775
  117. package/dist/client/chunks/analysis-builder-shared--4LqPSum.js.map +1 -0
  118. package/dist/client/chunks/{chart-activity-grid-CSIsJ12e.js → chart-activity-grid-DGazwi4C.js} +9 -2
  119. package/dist/client/chunks/chart-activity-grid-DGazwi4C.js.map +1 -0
  120. package/dist/client/chunks/{chart-area-BpvSKH5I.js → chart-area-zyLGD-ym.js} +2 -2
  121. package/dist/client/chunks/{chart-area-BpvSKH5I.js.map → chart-area-zyLGD-ym.js.map} +1 -1
  122. package/dist/client/chunks/{chart-bar-Cjzv-LvG.js → chart-bar-DMCBq8qJ.js} +3 -3
  123. package/dist/client/chunks/{chart-bar-Cjzv-LvG.js.map → chart-bar-DMCBq8qJ.js.map} +1 -1
  124. package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js → chart-box-plot-5Z55A-it.js} +2 -2
  125. package/dist/client/chunks/{chart-box-plot-DHsHfMt6.js.map → chart-box-plot-5Z55A-it.js.map} +1 -1
  126. package/dist/client/chunks/{chart-bubble-BtWm6x7L.js → chart-bubble-YD28dX8w.js} +2 -2
  127. package/dist/client/chunks/{chart-bubble-BtWm6x7L.js.map → chart-bubble-YD28dX8w.js.map} +1 -1
  128. package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js → chart-candlestick-BUMpBI08.js} +2 -2
  129. package/dist/client/chunks/{chart-candlestick-Bz0_fLuq.js.map → chart-candlestick-BUMpBI08.js.map} +1 -1
  130. package/dist/client/chunks/{chart-data-table-BH1A-1RN.js → chart-data-table-BdMo3zVh.js} +2 -2
  131. package/dist/client/chunks/{chart-data-table-BH1A-1RN.js.map → chart-data-table-BdMo3zVh.js.map} +1 -1
  132. package/dist/client/chunks/{chart-funnel-C_-K4RLj.js → chart-funnel-BRyZS6ie.js} +2 -2
  133. package/dist/client/chunks/{chart-funnel-C_-K4RLj.js.map → chart-funnel-BRyZS6ie.js.map} +1 -1
  134. package/dist/client/chunks/{chart-gauge-F-vdq2BX.js → chart-gauge-DxgHlZKp.js} +3 -3
  135. package/dist/client/chunks/{chart-gauge-F-vdq2BX.js.map → chart-gauge-DxgHlZKp.js.map} +1 -1
  136. package/dist/client/chunks/{chart-heat-map-D_8TluGo.js → chart-heat-map-5jHm3f-V.js} +3 -3
  137. package/dist/client/chunks/{chart-heat-map-D_8TluGo.js.map → chart-heat-map-5jHm3f-V.js.map} +1 -1
  138. package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js → chart-kpi-delta-C84P-mwu.js} +3 -3
  139. package/dist/client/chunks/{chart-kpi-delta-DGvQ0BHZ.js.map → chart-kpi-delta-C84P-mwu.js.map} +1 -1
  140. package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js → chart-kpi-number-D9GqtBWw.js} +5 -5
  141. package/dist/client/chunks/{chart-kpi-number-DP6zCh-c.js.map → chart-kpi-number-D9GqtBWw.js.map} +1 -1
  142. package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js → chart-kpi-text-D3HqxXzU.js} +3 -3
  143. package/dist/client/chunks/{chart-kpi-text-DDbWfMwK.js.map → chart-kpi-text-D3HqxXzU.js.map} +1 -1
  144. package/dist/client/chunks/{chart-line-DlhmQQ-X.js → chart-line-IEgiF8Nv.js} +3 -3
  145. package/dist/client/chunks/{chart-line-DlhmQQ-X.js.map → chart-line-IEgiF8Nv.js.map} +1 -1
  146. package/dist/client/chunks/{chart-markdown-C5ldCjSN.js → chart-markdown-B_2Ed7FJ.js} +2 -2
  147. package/dist/client/chunks/{chart-markdown-C5ldCjSN.js.map → chart-markdown-B_2Ed7FJ.js.map} +1 -1
  148. package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js → chart-measure-profile-CWsPrQhH.js} +3 -3
  149. package/dist/client/chunks/{chart-measure-profile-CjErXQI4.js.map → chart-measure-profile-CWsPrQhH.js.map} +1 -1
  150. package/dist/client/chunks/{chart-pie-CmKhmUR-.js → chart-pie-BEB2sCXF.js} +3 -3
  151. package/dist/client/chunks/{chart-pie-CmKhmUR-.js.map → chart-pie-BEB2sCXF.js.map} +1 -1
  152. package/dist/client/chunks/{chart-radar-B2bYTyb0.js → chart-radar-BbSbXKbP.js} +3 -3
  153. package/dist/client/chunks/{chart-radar-B2bYTyb0.js.map → chart-radar-BbSbXKbP.js.map} +1 -1
  154. package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js → chart-radial-bar-CNYD7tkM.js} +3 -3
  155. package/dist/client/chunks/{chart-radial-bar-DvQ-xZS-.js.map → chart-radial-bar-CNYD7tkM.js.map} +1 -1
  156. package/dist/client/chunks/{chart-sankey-DHIrjmhj.js → chart-sankey-DKnTIvSr.js} +2 -2
  157. package/dist/client/chunks/{chart-sankey-DHIrjmhj.js.map → chart-sankey-DKnTIvSr.js.map} +1 -1
  158. package/dist/client/chunks/{chart-scatter-JnoA3CD5.js → chart-scatter-CSWF6-lx.js} +3 -3
  159. package/dist/client/chunks/{chart-scatter-JnoA3CD5.js.map → chart-scatter-CSWF6-lx.js.map} +1 -1
  160. package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js → chart-sunburst-CdGzCq7q.js} +3 -3
  161. package/dist/client/chunks/{chart-sunburst-BtzRp5bg.js.map → chart-sunburst-CdGzCq7q.js.map} +1 -1
  162. package/dist/client/chunks/{chart-tree-map-HQitd39D.js → chart-tree-map-BiXB7EiM.js} +3 -3
  163. package/dist/client/chunks/{chart-tree-map-HQitd39D.js.map → chart-tree-map-BiXB7EiM.js.map} +1 -1
  164. package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js → chart-waterfall-5rSDeLEZ.js} +3 -3
  165. package/dist/client/chunks/{chart-waterfall-Dd3HMz3p.js.map → chart-waterfall-5rSDeLEZ.js.map} +1 -1
  166. package/dist/client/chunks/{charts-core-CQFOTTPb.js → charts-core-CKpkoMCa.js} +2 -2
  167. package/dist/client/chunks/{charts-core-CQFOTTPb.js.map → charts-core-CKpkoMCa.js.map} +1 -1
  168. package/dist/client/chunks/charts-loader-BTI0UPK4.js +87 -0
  169. package/dist/client/chunks/{charts-loader-BlxEsp39.js.map → charts-loader-BTI0UPK4.js.map} +1 -1
  170. package/dist/client/chunks/{nl-NL-gaWTnOGQ.js → nl-NL-kRjxedTf.js} +8 -1
  171. package/dist/client/chunks/{nl-NL-gaWTnOGQ.js.map → nl-NL-kRjxedTf.js.map} +1 -1
  172. package/dist/client/chunks/{schema-visualization-BspQ-XB8.js → schema-visualization-BbvL74Sf.js} +3 -3
  173. package/dist/client/chunks/{schema-visualization-BspQ-XB8.js.map → schema-visualization-BbvL74Sf.js.map} +1 -1
  174. package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js → useDirtyStateTracking-BfG1lX_3.js} +4 -4
  175. package/dist/client/chunks/{useDirtyStateTracking-DY5sjvb6.js.map → useDirtyStateTracking-BfG1lX_3.js.map} +1 -1
  176. package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js → useExplainAI-CDFhgmpE.js} +4 -4
  177. package/dist/client/chunks/{useExplainAI-BY0Ti3FZ.js.map → useExplainAI-CDFhgmpE.js.map} +1 -1
  178. package/dist/client/chunks/{vendor-C4pD7rZf.js → vendor-DeckzF1j.js} +2 -2
  179. package/dist/client/chunks/{vendor-C4pD7rZf.js.map → vendor-DeckzF1j.js.map} +1 -1
  180. package/dist/client/components.js +1 -1
  181. package/dist/client/hooks.js +3 -3
  182. package/dist/client/icons.js +1 -1
  183. package/dist/client/index.js +13 -13
  184. package/dist/client/providers.js +1 -1
  185. package/dist/client/schema.js +1 -1
  186. package/dist/client/utils.js +4 -4
  187. package/dist/client-bundle-stats.html +1 -1
  188. package/dist/mcp-app/mcp-app.html +2 -2
  189. package/dist/server/adapters/base-adapter.d.ts +3 -3
  190. package/dist/server/ai/query-schema.d.ts +3 -3
  191. package/dist/server/builders/date-time-builder.d.ts +1 -2
  192. package/dist/server/builders/date-time-helpers.d.ts +19 -6
  193. package/dist/server/builders/filter-operators.d.ts +10 -1
  194. package/dist/server/execution/query-normalizer.d.ts +9 -0
  195. package/dist/server/index.cjs +54 -47
  196. package/dist/server/index.js +2561 -2408
  197. package/dist/server/physical-plan/drizzle-sql-builder.d.ts +25 -0
  198. package/dist/server/physical-plan/semi-join.d.ts +21 -0
  199. package/dist/server/prompts/single-step-prompt.d.ts +1 -1
  200. package/package.json +1 -1
  201. package/dist/adapters/ActivityGridChart.config-BgAUfqKS.js +0 -2
  202. package/dist/adapters/ActivityGridChart.config-CGsjbfYL.cjs +0 -1
  203. package/dist/adapters/AreaChart.config-Bmj24k3G.cjs +0 -1
  204. package/dist/adapters/AreaChart.config-DqJvquc-.js +0 -2
  205. package/dist/adapters/BarChart.config-CzGxsUq-.js +0 -2
  206. package/dist/adapters/BarChart.config-D1uQGV6T.cjs +0 -1
  207. package/dist/adapters/BoxPlotChart.config-I0S4-aNF.js +0 -2
  208. package/dist/adapters/BoxPlotChart.config-wfS4FxGI.cjs +0 -1
  209. package/dist/adapters/BubbleChart.config-BDSknEkc.js +0 -2
  210. package/dist/adapters/BubbleChart.config-CByvW3Rq.cjs +0 -1
  211. package/dist/adapters/CandlestickChart.config-08gqS1xj.cjs +0 -1
  212. package/dist/adapters/CandlestickChart.config-Bkr9bdwM.js +0 -2
  213. package/dist/adapters/DataTable.config-BFP6xnMc.cjs +0 -1
  214. package/dist/adapters/DataTable.config-DHYD7PA8.js +0 -2
  215. package/dist/adapters/DotStripChart.config-DRQybZZu.cjs +0 -1
  216. package/dist/adapters/DotStripChart.config-Sp0fOxfM.js +0 -2
  217. package/dist/adapters/FunnelChart.config-ByARozX6.cjs +0 -1
  218. package/dist/adapters/FunnelChart.config-DhCqap3P.js +0 -2
  219. package/dist/adapters/GaugeChart.config-CfRicB1o.cjs +0 -1
  220. package/dist/adapters/GaugeChart.config-PTQ85WM5.js +0 -2
  221. package/dist/adapters/HeatMapChart.config-0tmGHwm2.cjs +0 -1
  222. package/dist/adapters/HeatMapChart.config-Devz5A5U.js +0 -2
  223. package/dist/adapters/KpiDelta.config-CGTdddOM.js +0 -2
  224. package/dist/adapters/KpiDelta.config-CjWmwXjk.cjs +0 -1
  225. package/dist/adapters/KpiNumber.config-Cd4jw22d.cjs +0 -1
  226. package/dist/adapters/KpiNumber.config-D3Et71Zn.js +0 -2
  227. package/dist/adapters/KpiText.config-B9VATPy2.js +0 -2
  228. package/dist/adapters/KpiText.config-B_dkrdHj.cjs +0 -1
  229. package/dist/adapters/LineChart.config-C3p-mc15.cjs +0 -1
  230. package/dist/adapters/LineChart.config-DXWLMWjn.js +0 -2
  231. package/dist/adapters/MarkdownChart.config-BQGmd6Iz.js +0 -2
  232. package/dist/adapters/MarkdownChart.config-CQFu4297.cjs +0 -1
  233. package/dist/adapters/MeasureProfileChart.config-CXLeprVS.js +0 -2
  234. package/dist/adapters/MeasureProfileChart.config-KpfD016N.cjs +0 -1
  235. package/dist/adapters/PieChart.config-j-syrhBx.js +0 -2
  236. package/dist/adapters/PieChart.config-zzBPh0tx.cjs +0 -1
  237. package/dist/adapters/ProportionBarChart.config-BD9bf-LZ.js +0 -2
  238. package/dist/adapters/ProportionBarChart.config-CBLcLV4Z.cjs +0 -1
  239. package/dist/adapters/RadarChart.config-CW9f_VxU.cjs +0 -1
  240. package/dist/adapters/RadarChart.config-yKvcZ49V.js +0 -2
  241. package/dist/adapters/RadialBarChart.config-DwQYejI6.cjs +0 -1
  242. package/dist/adapters/RadialBarChart.config-xK4AyoOF.js +0 -2
  243. package/dist/adapters/RecordsTable.config-CquV7Wi0.js +0 -2
  244. package/dist/adapters/RecordsTable.config-DzrQXBvh.cjs +0 -1
  245. package/dist/adapters/RetentionCombinedChart.config-BYAFkFb-.cjs +0 -1
  246. package/dist/adapters/RetentionCombinedChart.config-Ddmb-WwM.js +0 -2
  247. package/dist/adapters/RetentionHeatmap.config-CSHXD736.cjs +0 -1
  248. package/dist/adapters/RetentionHeatmap.config-DODcy3gK.js +0 -2
  249. package/dist/adapters/SankeyChart.config-B56o6GFu.js +0 -2
  250. package/dist/adapters/SankeyChart.config-DLnhr2k_.cjs +0 -1
  251. package/dist/adapters/ScatterChart.config-CrIFaC-s.js +0 -2
  252. package/dist/adapters/ScatterChart.config-Dfj1_af-.cjs +0 -1
  253. package/dist/adapters/SunburstChart.config-CuLsLj6v.cjs +0 -1
  254. package/dist/adapters/SunburstChart.config-CvuVUfkp.js +0 -2
  255. package/dist/adapters/TreeMapChart.config-CvbDr1Ic.js +0 -2
  256. package/dist/adapters/TreeMapChart.config-Dqjhe8Xk.cjs +0 -1
  257. package/dist/adapters/WaterfallChart.config-DXFeGg7P.cjs +0 -1
  258. package/dist/adapters/WaterfallChart.config-MLHPNE5q.js +0 -2
  259. package/dist/adapters/compiler-C5OSdfwn.cjs +0 -166
  260. package/dist/adapters/mcp-app-html-DRWnkcx4.cjs +0 -1
  261. package/dist/adapters/utils-BFGzuSlF.cjs +0 -132
  262. package/dist/client/chunks/analysis-builder-shared-BSINKFr2.js.map +0 -1
  263. package/dist/client/chunks/chart-activity-grid-CSIsJ12e.js.map +0 -1
  264. package/dist/client/chunks/charts-loader-BlxEsp39.js +0 -87
@@ -1,130 +1,184 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-C4pD7rZf.js";
2
- import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-BH1A-1RN.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-USQFytJw.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./vendor-DeckzF1j.js";
2
+ import { A as s, B as c, d as l, u, y as d } from "./chart-data-table-BdMo3zVh.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-DfaeSZGf.js";
4
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-DY5sjvb6.js";
7
- import { B as de, F as z } from "./chart-activity-grid-CSIsJ12e.js";
8
- import { a as fe, i as pe } from "./useExplainAI-BY0Ti3FZ.js";
9
- import { r as me, s as he } from "./chart-funnel-C_-K4RLj.js";
10
- import { n as ge } from "./charts-core-CQFOTTPb.js";
5
+ import { O as ee, k as A } from "./dashboardExport-Db3rmUP1.js";
6
+ import { A as te, D as j, F as M, I as ne, M as N, N as re, O as ie, P as ae, S as P, T as F, a as oe, d as se, j as I, k as L, l as ce, n as le, r as ue, s as de } from "./useDirtyStateTracking-BfG1lX_3.js";
7
+ import { B as R, F as z } from "./chart-activity-grid-DGazwi4C.js";
8
+ import { a as fe, i as pe } from "./useExplainAI-CDFhgmpE.js";
9
+ import { r as me, s as he } from "./chart-funnel-BRyZS6ie.js";
10
+ import { n as ge } from "./charts-core-CKpkoMCa.js";
11
11
  import B, { createContext as _e, memo as ve, useCallback as V, useContext as ye, 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";
12
+ import { Fragment as be, jsx as K, jsxs as q } from "react/jsx-runtime";
13
13
  //#region src/shared/date-utils.ts
14
- function be(e) {
15
- let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
16
- if (n === "today") {
17
- let e = new Date(t);
18
- e.setUTCHours(0, 0, 0, 0);
19
- let n = new Date(t);
20
- return n.setUTCHours(23, 59, 59, 999), {
21
- start: e,
22
- end: n
23
- };
24
- }
25
- if (n === "yesterday") {
26
- let e = new Date(t);
27
- e.setUTCDate(a - 1), e.setUTCHours(0, 0, 0, 0);
28
- let n = new Date(t);
29
- return n.setUTCDate(a - 1), n.setUTCHours(23, 59, 59, 999), {
30
- start: e,
31
- end: n
32
- };
33
- }
34
- if (n === "this week") {
35
- let e = o === 0 ? -6 : 1 - o, n = new Date(t);
36
- n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
37
- let r = new Date(n);
38
- return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
14
+ var xe = (e) => {
15
+ let t = new Date(e);
16
+ return t.setUTCHours(0, 0, 0, 0), t;
17
+ }, J = (e) => {
18
+ let t = new Date(e);
19
+ return t.setUTCHours(23, 59, 59, 999), t;
20
+ }, Se = {
21
+ today: ({ now: e }) => ({
22
+ start: xe(e),
23
+ end: J(e)
24
+ }),
25
+ yesterday: ({ now: e, utcDate: t }) => {
26
+ let n = new Date(e);
27
+ n.setUTCDate(t - 1), n.setUTCHours(0, 0, 0, 0);
28
+ let r = new Date(e);
29
+ return r.setUTCDate(t - 1), r.setUTCHours(23, 59, 59, 999), {
39
30
  start: n,
40
31
  end: r
41
32
  };
42
- }
43
- if (n === "this month") return {
44
- start: new Date(Date.UTC(r, i, 1, 0, 0, 0, 0)),
45
- end: new Date(Date.UTC(r, i + 1, 0, 23, 59, 59, 999))
46
- };
47
- if (n === "this quarter") {
48
- let e = Math.floor(i / 3);
33
+ },
34
+ "this week": ({ now: e, utcDate: t, utcDay: n }) => {
35
+ let r = n === 0 ? -6 : 1 - n, i = new Date(e);
36
+ i.setUTCDate(t + r), i.setUTCHours(0, 0, 0, 0);
37
+ let a = new Date(i);
38
+ return a.setUTCDate(i.getUTCDate() + 6), a.setUTCHours(23, 59, 59, 999), {
39
+ start: i,
40
+ end: a
41
+ };
42
+ },
43
+ "this month": ({ utcYear: e, utcMonth: t }) => ({
44
+ start: new Date(Date.UTC(e, t, 1, 0, 0, 0, 0)),
45
+ end: new Date(Date.UTC(e, t + 1, 0, 23, 59, 59, 999))
46
+ }),
47
+ "this quarter": ({ utcYear: e, utcMonth: t }) => {
48
+ let n = Math.floor(t / 3);
49
49
  return {
50
- start: new Date(Date.UTC(r, e * 3, 1, 0, 0, 0, 0)),
51
- end: new Date(Date.UTC(r, e * 3 + 3, 0, 23, 59, 59, 999))
50
+ start: new Date(Date.UTC(e, n * 3, 1, 0, 0, 0, 0)),
51
+ end: new Date(Date.UTC(e, n * 3 + 3, 0, 23, 59, 59, 999))
52
52
  };
53
- }
54
- if (n === "this year") return {
55
- start: new Date(Date.UTC(r, 0, 1, 0, 0, 0, 0)),
56
- end: new Date(Date.UTC(r, 11, 31, 23, 59, 59, 999))
57
- };
58
- let s = n.match(/^last\s+(\d+)\s+days?$/);
59
- if (s) {
60
- let e = parseInt(s[1], 10), n = new Date(t);
61
- n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
62
- let r = new Date(t);
63
- return r.setUTCHours(23, 59, 59, 999), {
64
- start: n,
65
- end: r
53
+ },
54
+ "this year": ({ utcYear: e }) => ({
55
+ start: new Date(Date.UTC(e, 0, 1, 0, 0, 0, 0)),
56
+ end: new Date(Date.UTC(e, 11, 31, 23, 59, 59, 999))
57
+ }),
58
+ "last week": ({ now: e, utcDate: t, utcDay: n }) => {
59
+ let r = n === 0 ? -13 : -6 - n, i = new Date(e);
60
+ i.setUTCDate(t + r), i.setUTCHours(0, 0, 0, 0);
61
+ let a = new Date(i);
62
+ return a.setUTCDate(i.getUTCDate() + 6), a.setUTCHours(23, 59, 59, 999), {
63
+ start: i,
64
+ end: a
66
65
  };
67
- }
68
- let c = n.match(/^last\s+(\d+)\s+weeks?$/);
69
- if (c) {
70
- let e = parseInt(c[1], 10) * 7, n = new Date(t);
71
- n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
72
- let r = new Date(t);
73
- return r.setUTCHours(23, 59, 59, 999), {
74
- start: n,
75
- end: r
66
+ },
67
+ "last month": ({ utcYear: e, utcMonth: t }) => ({
68
+ start: new Date(Date.UTC(e, t - 1, 1, 0, 0, 0, 0)),
69
+ end: new Date(Date.UTC(e, t, 0, 23, 59, 59, 999))
70
+ }),
71
+ "last quarter": ({ utcYear: e, utcMonth: t }) => {
72
+ let n = Math.floor(t / 3), r = n === 0 ? 3 : n - 1, i = n === 0 ? e - 1 : e;
73
+ return {
74
+ start: new Date(Date.UTC(i, r * 3, 1, 0, 0, 0, 0)),
75
+ end: new Date(Date.UTC(i, r * 3 + 3, 0, 23, 59, 59, 999))
76
76
  };
77
+ },
78
+ "last year": ({ utcYear: e }) => ({
79
+ start: new Date(Date.UTC(e - 1, 0, 1, 0, 0, 0, 0)),
80
+ end: new Date(Date.UTC(e - 1, 11, 31, 23, 59, 59, 999))
81
+ }),
82
+ "last 12 months": ({ now: e, utcYear: t, utcMonth: n }) => ({
83
+ start: new Date(Date.UTC(t, n - 11, 1, 0, 0, 0, 0)),
84
+ end: J(e)
85
+ })
86
+ }, Ce = [
87
+ {
88
+ re: /^last\s+(\d+)\s+days?$/,
89
+ build: (e, { now: t, utcDate: n }) => {
90
+ let r = new Date(t);
91
+ return r.setUTCDate(n - e + 1), r.setUTCHours(0, 0, 0, 0), {
92
+ start: r,
93
+ end: J(t)
94
+ };
95
+ }
96
+ },
97
+ {
98
+ re: /^last\s+(\d+)\s+weeks?$/,
99
+ build: (e, { now: t, utcDate: n }) => {
100
+ let r = new Date(t);
101
+ return r.setUTCDate(n - e * 7 + 1), r.setUTCHours(0, 0, 0, 0), {
102
+ start: r,
103
+ end: J(t)
104
+ };
105
+ }
106
+ },
107
+ {
108
+ re: /^last\s+(\d+)\s+months?$/,
109
+ build: (e, { now: t, utcYear: n, utcMonth: r }) => ({
110
+ start: new Date(Date.UTC(n, r - e + 1, 1, 0, 0, 0, 0)),
111
+ end: J(t)
112
+ })
113
+ },
114
+ {
115
+ re: /^last\s+(\d+)\s+quarters?$/,
116
+ build: (e, { now: t, utcYear: n, utcMonth: r }) => ({
117
+ start: new Date(Date.UTC(n, (Math.floor(r / 3) - e + 1) * 3, 1, 0, 0, 0, 0)),
118
+ end: J(t)
119
+ })
120
+ },
121
+ {
122
+ re: /^last\s+(\d+)\s+years?$/,
123
+ build: (e, { now: t, utcYear: n }) => ({
124
+ start: new Date(Date.UTC(n - e, 0, 1, 0, 0, 0, 0)),
125
+ end: J(t)
126
+ })
77
127
  }
78
- if (n === "last week") {
79
- let e = o === 0 ? -13 : -6 - o, n = new Date(t);
80
- n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
128
+ ], we = ({ now: e, utcDate: t, utcDay: n }) => {
129
+ let r = new Date(e);
130
+ return r.setUTCDate(t + (n === 0 ? -6 : 1 - n)), r.setUTCHours(0, 0, 0, 0), r;
131
+ }, Te = {
132
+ tomorrow: ({ now: e, utcDate: t }) => {
133
+ let n = new Date(e);
134
+ n.setUTCDate(t + 1), n.setUTCHours(0, 0, 0, 0);
81
135
  let r = new Date(n);
82
- return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
136
+ return r.setUTCHours(23, 59, 59, 999), {
83
137
  start: n,
84
138
  end: r
85
139
  };
86
- }
87
- if (n === "last month") return {
88
- start: new Date(Date.UTC(r, i - 1, 1, 0, 0, 0, 0)),
89
- end: new Date(Date.UTC(r, i, 0, 23, 59, 59, 999))
90
- };
91
- if (n === "last quarter") {
92
- let e = Math.floor(i / 3), t = e === 0 ? 3 : e - 1, n = e === 0 ? r - 1 : r;
93
- return {
94
- start: new Date(Date.UTC(n, t * 3, 1, 0, 0, 0, 0)),
95
- end: new Date(Date.UTC(n, t * 3 + 3, 0, 23, 59, 59, 999))
96
- };
97
- }
98
- if (n === "last year") return {
99
- start: new Date(Date.UTC(r - 1, 0, 1, 0, 0, 0, 0)),
100
- end: new Date(Date.UTC(r - 1, 11, 31, 23, 59, 59, 999))
101
- };
102
- if (n === "last 12 months") {
103
- let e = new Date(Date.UTC(r, i - 11, 1, 0, 0, 0, 0)), n = new Date(t);
104
- return n.setUTCHours(23, 59, 59, 999), {
105
- start: e,
106
- end: n
107
- };
108
- }
109
- let l = n.match(/^last\s+(\d+)\s+months?$/);
110
- if (l) {
111
- let e = new Date(Date.UTC(r, i - parseInt(l[1], 10) + 1, 1, 0, 0, 0, 0)), n = new Date(t);
112
- return n.setUTCHours(23, 59, 59, 999), {
113
- start: e,
140
+ },
141
+ "next week": (e) => {
142
+ let t = we(e);
143
+ t.setUTCDate(t.getUTCDate() + 7);
144
+ let n = new Date(t);
145
+ return n.setUTCDate(t.getUTCDate() + 6), n.setUTCHours(23, 59, 59, 999), {
146
+ start: t,
114
147
  end: n
115
148
  };
116
- }
117
- let u = n.match(/^last\s+(\d+)\s+years?$/);
118
- if (u) {
119
- let e = new Date(Date.UTC(r - parseInt(u[1], 10), 0, 1, 0, 0, 0, 0)), n = new Date(t);
120
- return n.setUTCHours(23, 59, 59, 999), {
121
- start: e,
122
- end: n
149
+ },
150
+ "next month": ({ utcYear: e, utcMonth: t }) => ({
151
+ start: new Date(Date.UTC(e, t + 1, 1, 0, 0, 0, 0)),
152
+ end: new Date(Date.UTC(e, t + 2, 0, 23, 59, 59, 999))
153
+ }),
154
+ "next quarter": ({ utcYear: e, utcMonth: t }) => {
155
+ let n = (Math.floor(t / 3) + 1) * 3;
156
+ return {
157
+ start: new Date(Date.UTC(e, n, 1, 0, 0, 0, 0)),
158
+ end: new Date(Date.UTC(e, n + 3, 0, 23, 59, 59, 999))
123
159
  };
160
+ },
161
+ "next year": ({ utcYear: e }) => ({
162
+ start: new Date(Date.UTC(e + 1, 0, 1, 0, 0, 0, 0)),
163
+ end: new Date(Date.UTC(e + 1, 11, 31, 23, 59, 59, 999))
164
+ })
165
+ };
166
+ function Ee(e) {
167
+ let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = {
168
+ now: t,
169
+ utcYear: t.getUTCFullYear(),
170
+ utcMonth: t.getUTCMonth(),
171
+ utcDate: t.getUTCDate(),
172
+ utcDay: t.getUTCDay()
173
+ }, i = Object.prototype.hasOwnProperty.call(Se, n) ? Se[n] : Object.prototype.hasOwnProperty.call(Te, n) ? Te[n] : void 0;
174
+ if (i) return i(r);
175
+ for (let { re: e, build: t } of Ce) {
176
+ let i = n.match(e);
177
+ if (i) return t(parseInt(i[1], 10), r);
124
178
  }
125
179
  return null;
126
180
  }
127
- function xe(e) {
181
+ function De(e) {
128
182
  if (Array.isArray(e)) {
129
183
  if (e.length < 2) return null;
130
184
  let t = new Date(e[0]), n = new Date(e[1]);
@@ -133,12 +187,12 @@ function xe(e) {
133
187
  end: n
134
188
  });
135
189
  }
136
- return be(e);
190
+ return Ee(e);
137
191
  }
138
- function Se(e) {
192
+ function Oe(e) {
139
193
  return e.toISOString().split("T")[0];
140
194
  }
141
- function Ce(e, t) {
195
+ function ke(e, t) {
142
196
  let n = t.getTime() - e.getTime(), r = Math.ceil(n / 864e5), i = new Date(e);
143
197
  i.setUTCDate(i.getUTCDate() - 1), i.setUTCHours(23, 59, 59, 999);
144
198
  let a = new Date(i);
@@ -149,22 +203,22 @@ function Ce(e, t) {
149
203
  }
150
204
  //#endregion
151
205
  //#region src/client/components/AnalysisBuilder/utils/filterUtils.ts
152
- function we(e, t) {
153
- let n = L(t, e);
206
+ function Ae(e, t) {
207
+ let n = I(t, e);
154
208
  if (!n?.dateRange) return;
155
- let r = xe(n.dateRange);
209
+ let r = De(n.dateRange);
156
210
  if (!r) return;
157
- let i = Ce(r.start, r.end);
158
- return [[Se(r.start), Se(r.end)], [Se(i.start), Se(i.end)]];
211
+ let i = ke(r.start, r.end);
212
+ return [[Oe(r.start), Oe(r.end)], [Oe(i.start), Oe(i.end)]];
159
213
  }
160
- function Te(e, t) {
161
- return N(e, t, "inDateRange");
214
+ function je(e, t) {
215
+ return M(e, t, "inDateRange");
162
216
  }
163
217
  //#endregion
164
218
  //#region src/client/components/AnalysisBuilder/utils/queryUtils.ts
165
- function Ee(e, t, n, r, i = !1, a, o = !1) {
219
+ function Me(e, t, n, r, i = !1, a, o = !1) {
166
220
  let s = t.filter((e) => e.isTimeDimension && e.enableComparison).map((e) => e.field), c = n;
167
- if (!i) for (let e of s) c = Te(c, e);
221
+ if (!i) for (let e of s) c = je(c, e);
168
222
  c = c.filter((e) => b(e));
169
223
  let l = {
170
224
  measures: e.map((e) => e.field),
@@ -175,7 +229,7 @@ function Ee(e, t, n, r, i = !1, a, o = !1) {
175
229
  granularity: e.granularity || "day"
176
230
  };
177
231
  if (e.enableComparison) {
178
- let r = we(e.field, n);
232
+ let r = Ae(e.field, n);
179
233
  r && (t.compareDateRange = r);
180
234
  }
181
235
  return t;
@@ -200,7 +254,7 @@ function Y() {
200
254
  }
201
255
  //#endregion
202
256
  //#region src/client/components/AnalysisBuilder/filterConfigModalUtils.ts
203
- function De(e, t, n, r) {
257
+ function Ne(e, t, n, r) {
204
258
  if (!t || n === 0) return { type: "none" };
205
259
  switch (e) {
206
260
  case "ArrowDown": return {
@@ -221,60 +275,60 @@ function De(e, t, n, r) {
221
275
  }
222
276
  //#endregion
223
277
  //#region src/client/components/AnalysisBuilder/FilterValueInput.tsx
224
- var Oe = d("close"), ke = d("chevronDown");
225
- function Ae({ filter: e, dateRange: t }) {
278
+ var Pe = d("close"), Fe = d("chevronDown");
279
+ function Ie({ filter: e, dateRange: t }) {
226
280
  let { t: n } = z(), { rangeType: r, numberValue: i, label: a, isOpen: o, onToggle: s, onRangeTypeChange: c, onNumberValueChange: l, onCustomStartDate: u, onCustomEndDate: d, onOpen: f } = t;
227
- return /* @__PURE__ */ J("div", {
281
+ return /* @__PURE__ */ q("div", {
228
282
  className: "dc:space-y-2",
229
283
  children: [
230
- /* @__PURE__ */ J("div", {
284
+ /* @__PURE__ */ q("div", {
231
285
  className: "dc:relative",
232
- children: [/* @__PURE__ */ J("button", {
286
+ children: [/* @__PURE__ */ q("button", {
233
287
  onClick: () => {
234
288
  f(), s(!o);
235
289
  },
236
290
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
237
- children: [/* @__PURE__ */ q("span", {
291
+ children: [/* @__PURE__ */ K("span", {
238
292
  className: "dc:truncate",
239
293
  children: a
240
- }), /* @__PURE__ */ q(ke, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
241
- }), o && /* @__PURE__ */ q("div", {
294
+ }), /* @__PURE__ */ K(Fe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${o ? "dc:rotate-180" : ""}` })]
295
+ }), o && /* @__PURE__ */ K("div", {
242
296
  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",
243
- children: C.map((e) => /* @__PURE__ */ q("button", {
297
+ children: C.map((e) => /* @__PURE__ */ K("button", {
244
298
  onClick: () => c(e.value),
245
299
  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"}`,
246
300
  children: n(e.label)
247
301
  }, e.value))
248
302
  })]
249
303
  }),
250
- M(r) && /* @__PURE__ */ J("div", {
304
+ j(r) && /* @__PURE__ */ q("div", {
251
305
  className: "dc:flex dc:items-center dc:gap-2",
252
- children: [/* @__PURE__ */ q("input", {
306
+ children: [/* @__PURE__ */ K("input", {
253
307
  type: "number",
254
308
  min: "1",
255
309
  max: "1000",
256
310
  value: i,
257
311
  onChange: (e) => l(Math.max(1, parseInt(e.target.value) || 1)),
258
312
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text dc:w-20"
259
- }), /* @__PURE__ */ q("span", {
313
+ }), /* @__PURE__ */ K("span", {
260
314
  className: "dc:text-sm text-dc-text-muted",
261
315
  children: r.replace("last_n_", "")
262
316
  })]
263
317
  }),
264
- r === "custom" && /* @__PURE__ */ J("div", {
318
+ r === "custom" && /* @__PURE__ */ q("div", {
265
319
  className: "dc:flex dc:items-center dc:gap-2",
266
320
  children: [
267
- /* @__PURE__ */ q("input", {
321
+ /* @__PURE__ */ K("input", {
268
322
  type: "date",
269
323
  value: Array.isArray(e.dateRange) ? e.dateRange[0] : "",
270
324
  onChange: u,
271
325
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-2 dc:py-2 bg-dc-surface text-dc-text"
272
326
  }),
273
- /* @__PURE__ */ q("span", {
327
+ /* @__PURE__ */ K("span", {
274
328
  className: "dc:text-sm text-dc-text-muted",
275
329
  children: n("filter.modal.dateTo")
276
330
  }),
277
- /* @__PURE__ */ q("input", {
331
+ /* @__PURE__ */ K("input", {
278
332
  type: "date",
279
333
  value: Array.isArray(e.dateRange) ? e.dateRange[1] : "",
280
334
  onChange: d,
@@ -285,26 +339,26 @@ function Ae({ filter: e, dateRange: t }) {
285
339
  ]
286
340
  });
287
341
  }
288
- function je({ filter: e, combo: t }) {
342
+ function Le({ filter: e, combo: t }) {
289
343
  let { t: n } = z(), { options: r, loading: i, error: a, highlightedIndex: o, listRef: s, onSelect: c } = t;
290
- return i ? /* @__PURE__ */ q("div", {
344
+ return i ? /* @__PURE__ */ K("div", {
291
345
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
292
346
  children: n("filter.modal.loading")
293
- }) : a ? /* @__PURE__ */ J("div", {
347
+ }) : a ? /* @__PURE__ */ q("div", {
294
348
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-error",
295
349
  children: [n("filter.modal.errorPrefix"), String(a)]
296
- }) : r.length === 0 ? /* @__PURE__ */ q("div", {
350
+ }) : r.length === 0 ? /* @__PURE__ */ K("div", {
297
351
  className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text-muted",
298
352
  children: n("filter.modal.noValues")
299
- }) : /* @__PURE__ */ q("div", {
353
+ }) : /* @__PURE__ */ K("div", {
300
354
  ref: s,
301
355
  className: "dc:max-h-40 dc:overflow-y-auto",
302
356
  children: r.map((t, n) => {
303
357
  let r = e.values?.includes(t);
304
- return /* @__PURE__ */ J("button", {
358
+ return /* @__PURE__ */ q("button", {
305
359
  onClick: (e) => c(t, e),
306
360
  className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:text-sm dc:transition-colors ${n === o ? "bg-dc-surface-hover" : ""} ${r ? "bg-dc-primary/10 text-dc-primary" : "text-dc-text hover:bg-dc-surface-hover"}`,
307
- children: [String(t), r && /* @__PURE__ */ q("span", {
361
+ children: [String(t), r && /* @__PURE__ */ K("span", {
308
362
  className: "dc:float-right",
309
363
  children: "✓"
310
364
  })]
@@ -312,41 +366,41 @@ function je({ filter: e, combo: t }) {
312
366
  })
313
367
  });
314
368
  }
315
- function Me({ filter: e, operatorMeta: t, combo: n }) {
369
+ function Re({ filter: e, operatorMeta: t, combo: n }) {
316
370
  let { t: r } = z(), { isOpen: i, loading: a, searchText: o, onSearchTextChange: s, onHighlightedIndexChange: c, onRemove: l, onKeyDown: u, onOpen: d } = n;
317
- return /* @__PURE__ */ J("div", {
371
+ return /* @__PURE__ */ q("div", {
318
372
  className: "dc:space-y-2",
319
373
  children: [
320
- e.values && e.values.length > 0 && /* @__PURE__ */ q("div", {
374
+ e.values && e.values.length > 0 && /* @__PURE__ */ K("div", {
321
375
  className: "dc:flex dc:flex-wrap dc:gap-1.5",
322
- children: e.values.map((e, t) => /* @__PURE__ */ J("span", {
376
+ children: e.values.map((e, t) => /* @__PURE__ */ q("span", {
323
377
  className: "dc:inline-flex dc:items-center dc:gap-1 bg-dc-primary/10 text-dc-primary dc:text-sm dc:px-2 dc:py-1 dc:rounded-sm",
324
- children: [/* @__PURE__ */ q("span", {
378
+ children: [/* @__PURE__ */ K("span", {
325
379
  className: "dc:max-w-[150px] dc:truncate",
326
380
  children: String(e)
327
- }), /* @__PURE__ */ q("button", {
381
+ }), /* @__PURE__ */ K("button", {
328
382
  onClick: () => l(e),
329
383
  className: "hover:text-dc-danger",
330
- children: /* @__PURE__ */ q(Oe, { className: "dc:w-3.5 dc:h-3.5" })
384
+ children: /* @__PURE__ */ K(Pe, { className: "dc:w-3.5 dc:h-3.5" })
331
385
  })]
332
386
  }, t))
333
387
  }),
334
- /* @__PURE__ */ J("div", {
388
+ /* @__PURE__ */ q("div", {
335
389
  className: "dc:relative",
336
- children: [/* @__PURE__ */ J("button", {
390
+ children: [/* @__PURE__ */ q("button", {
337
391
  onClick: () => {
338
392
  d();
339
393
  },
340
394
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
341
- children: [/* @__PURE__ */ q("span", {
395
+ children: [/* @__PURE__ */ K("span", {
342
396
  className: "text-dc-text-muted dc:truncate",
343
397
  children: r(a ? "filter.modal.loading" : "filter.modal.selectValue")
344
- }), /* @__PURE__ */ q(ke, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
345
- }), i && /* @__PURE__ */ J("div", {
398
+ }), /* @__PURE__ */ K(Fe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${i ? "dc:rotate-180" : ""}` })]
399
+ }), i && /* @__PURE__ */ q("div", {
346
400
  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-56 dc:overflow-hidden",
347
- children: [/* @__PURE__ */ q("div", {
401
+ children: [/* @__PURE__ */ K("div", {
348
402
  className: "dc:p-2 dc:border-b border-dc-border",
349
- children: /* @__PURE__ */ q("input", {
403
+ children: /* @__PURE__ */ K("input", {
350
404
  type: "text",
351
405
  value: o,
352
406
  onChange: (e) => {
@@ -357,39 +411,39 @@ function Me({ filter: e, operatorMeta: t, combo: n }) {
357
411
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text",
358
412
  autoFocus: !0
359
413
  })
360
- }), /* @__PURE__ */ q(je, {
414
+ }), /* @__PURE__ */ K(Le, {
361
415
  filter: e,
362
416
  combo: n
363
417
  })]
364
418
  })]
365
419
  }),
366
- t?.supportsMultipleValues && /* @__PURE__ */ q("p", {
420
+ t?.supportsMultipleValues && /* @__PURE__ */ K("p", {
367
421
  className: "dc:text-xs text-dc-text-muted",
368
422
  children: r("filter.modal.multiSelectHint")
369
423
  })
370
424
  ]
371
425
  });
372
426
  }
373
- function Ne({ field: e, dateRange: t, combo: n, inputs: r }) {
427
+ function ze({ field: e, dateRange: t, combo: n, inputs: r }) {
374
428
  let { t: i } = z(), { filter: a, operatorMeta: o, shouldShowDateRange: s, shouldShowComboBox: c } = e, { onBetweenStart: l, onBetweenEnd: u, onDate: d, onDirect: f } = r;
375
- return o?.requiresValues ? s ? /* @__PURE__ */ q(Ae, {
429
+ return o?.requiresValues ? s ? /* @__PURE__ */ K(Ie, {
376
430
  filter: a,
377
431
  dateRange: t
378
- }) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ J("div", {
432
+ }) : a.operator === "between" || a.operator === "notBetween" ? /* @__PURE__ */ q("div", {
379
433
  className: "dc:flex dc:items-center dc:gap-2",
380
434
  children: [
381
- /* @__PURE__ */ q("input", {
435
+ /* @__PURE__ */ K("input", {
382
436
  type: "number",
383
437
  value: a.values?.[0] ?? "",
384
438
  onChange: l,
385
439
  placeholder: i("filter.modal.min"),
386
440
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
387
441
  }),
388
- /* @__PURE__ */ q("span", {
442
+ /* @__PURE__ */ K("span", {
389
443
  className: "dc:text-sm text-dc-text-muted",
390
444
  children: i("filter.modal.to")
391
445
  }),
392
- /* @__PURE__ */ q("input", {
446
+ /* @__PURE__ */ K("input", {
393
447
  type: "number",
394
448
  value: a.values?.[1] ?? "",
395
449
  onChange: u,
@@ -397,46 +451,46 @@ function Ne({ field: e, dateRange: t, combo: n, inputs: r }) {
397
451
  className: "dc:flex-1 dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
398
452
  })
399
453
  ]
400
- }) : o?.valueType === "date" ? /* @__PURE__ */ q("input", {
454
+ }) : o?.valueType === "date" ? /* @__PURE__ */ K("input", {
401
455
  type: "date",
402
456
  value: a.values?.[0] || "",
403
457
  onChange: d,
404
458
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
405
- }) : o?.valueType === "number" ? /* @__PURE__ */ q("input", {
459
+ }) : o?.valueType === "number" ? /* @__PURE__ */ K("input", {
406
460
  type: "number",
407
461
  value: a.values?.[0] ?? "",
408
462
  onChange: f,
409
463
  placeholder: i("filter.modal.enterNumber"),
410
464
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text"
411
- }) : c ? /* @__PURE__ */ q(Me, {
465
+ }) : c ? /* @__PURE__ */ K(Re, {
412
466
  filter: a,
413
467
  operatorMeta: o,
414
468
  combo: n
415
- }) : /* @__PURE__ */ q("input", {
469
+ }) : /* @__PURE__ */ K("input", {
416
470
  type: "text",
417
471
  value: a.values?.[0] ?? "",
418
472
  onChange: f,
419
473
  placeholder: i("filter.modal.enterValue"),
420
474
  className: "dc:w-full dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text placeholder-dc-text-muted"
421
- }) : /* @__PURE__ */ q("div", {
475
+ }) : /* @__PURE__ */ K("div", {
422
476
  className: "dc:text-sm text-dc-text-muted dc:italic dc:py-2",
423
477
  children: i("filter.modal.noValueRequired")
424
478
  });
425
479
  }
426
480
  //#endregion
427
481
  //#region src/client/components/AnalysisBuilder/FilterConfigModal.tsx
428
- var Pe = d("close"), Fe = d("chevronDown"), Ie = d("dimension"), Le = d("timeDimension"), Re = d("measure");
429
- function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
430
- let { t: a } = z(), [o, s] = G(e), [c, l] = G(!1), [u, d] = G(!1), [f, p] = G(!1), [m, _] = G("this_month"), [v, b] = G(1), [S, w] = G(""), [E, D] = G(null), [O, k] = G(-1), A = W(null), j = W(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 = V(() => [
482
+ var Be = d("close"), Ve = d("chevronDown"), He = d("dimension"), Ue = d("timeDimension"), We = d("measure");
483
+ function Ge({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i }) {
484
+ let { t: a } = z(), [o, s] = G(e), [c, l] = G(!1), [u, d] = G(!1), [f, p] = G(!1), [m, _] = G("this_month"), [v, b] = G(1), [S, w] = G(""), [E, D] = G(null), [O, k] = G(-1), ee = W(null), A = W(null), te = le(S, 300), M = g(o.member, t), ne = M?.field.type || "string", N = ne === "time", re = M?.fieldType === "measure", ie = M?.fieldType === "dimension", ae = T(o.member, t), P = x[o.operator], oe = y(ne), se = N && o.operator === "inDateRange", I = V(() => [
431
485
  "equals",
432
486
  "notEquals",
433
487
  "in",
434
488
  "notIn"
435
- ].includes(o.operator) && re && !P, [
489
+ ].includes(o.operator) && ie && !N, [
436
490
  o.operator,
437
- re,
438
- P
439
- ])(), { values: R, loading: se, error: ue, searchValues: de } = le(o.member, L);
491
+ ie,
492
+ N
493
+ ])(), { values: L, loading: ce, error: de, searchValues: R } = ue(o.member, I);
440
494
  H(() => {
441
495
  if (!i) {
442
496
  D(null);
@@ -452,32 +506,32 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
452
506
  });
453
507
  }, [i]), H(() => {
454
508
  let e = (e) => {
455
- A.current && !A.current.contains(e.target) && (l(!1), d(!1), p(!1));
509
+ ee.current && !ee.current.contains(e.target) && (l(!1), d(!1), p(!1));
456
510
  };
457
511
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
458
512
  }, []), H(() => {
459
- u && L && de && de("", !0), u || k(-1);
513
+ u && I && R && R("", !0), u || k(-1);
460
514
  }, [
461
515
  u,
462
- L,
463
- de
516
+ I,
517
+ R
464
518
  ]), H(() => {
465
- if (O >= 0 && j.current) {
466
- let e = j.current.children[O];
519
+ if (O >= 0 && A.current) {
520
+ let e = A.current.children[O];
467
521
  e && e.scrollIntoView({ block: "nearest" });
468
522
  }
469
523
  }, [O]), H(() => {
470
- u && L && de && ee !== void 0 && de(ee);
524
+ u && I && R && te !== void 0 && R(te);
471
525
  }, [
472
- ee,
526
+ te,
473
527
  u,
474
- L,
475
- de
528
+ I,
529
+ R
476
530
  ]), H(() => {
477
- if (!oe) return;
531
+ if (!se) return;
478
532
  let e = h(o.dateRange);
479
533
  e && (_(e.rangeType), e.numberValue !== void 0 && b(e.numberValue));
480
- }, [o.dateRange, oe]);
534
+ }, [o.dateRange, se]);
481
535
  let fe = V((e) => {
482
536
  s({
483
537
  member: o.member,
@@ -486,7 +540,7 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
486
540
  }), l(!1);
487
541
  }, [o.member]), pe = V((e, t) => {
488
542
  let n = t?.shiftKey ?? !1, r = o.values || [];
489
- F?.supportsMultipleValues ? (r.includes(e) ? s({
543
+ P?.supportsMultipleValues ? (r.includes(e) ? s({
490
544
  ...o,
491
545
  values: r.filter((t) => t !== e)
492
546
  }) : s({
@@ -496,27 +550,27 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
496
550
  ...o,
497
551
  values: [e]
498
552
  }), d(!1)), w(""), k(-1);
499
- }, [o, F?.supportsMultipleValues]), me = V((e) => {
553
+ }, [o, P?.supportsMultipleValues]), me = V((e) => {
500
554
  let t = (o.values || []).filter((t) => t !== e);
501
555
  s({
502
556
  ...o,
503
557
  values: t
504
558
  });
505
559
  }, [o]), he = V((e) => {
506
- let t = De(e.key, u, R.length, O);
560
+ let t = Ne(e.key, u, L.length, O);
507
561
  if (t.type !== "none") {
508
562
  if (e.preventDefault(), t.type === "highlight") return k(t.index);
509
- if (t.type === "select") return pe(R[t.index], { shiftKey: e.shiftKey });
563
+ if (t.type === "select") return pe(L[t.index], { shiftKey: e.shiftKey });
510
564
  d(!1), k(-1);
511
565
  }
512
566
  }, [
513
567
  u,
514
- R,
568
+ L,
515
569
  O,
516
570
  pe
517
571
  ]), ge = V((e) => {
518
572
  let t = e.target.value;
519
- if (F?.valueType === "number") {
573
+ if (P?.valueType === "number") {
520
574
  let e = parseFloat(t);
521
575
  isNaN(e) ? (t === "" || t === "-") && s({
522
576
  ...o,
@@ -529,7 +583,7 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
529
583
  ...o,
530
584
  values: t ? [t] : []
531
585
  });
532
- }, [o, F?.valueType]), B = V((e) => {
586
+ }, [o, P?.valueType]), B = V((e) => {
533
587
  let t = parseFloat(e.target.value), n = [isNaN(t) ? "" : t, (o.values?.length >= 2 ? o.values : ["", ""])[1]].filter((e) => e !== "");
534
588
  s({
535
589
  ...o,
@@ -553,20 +607,20 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
553
607
  if (e === "custom") {
554
608
  let e = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
555
609
  t = [e, e];
556
- } else t = M(e) ? I(e, v) : I(e);
610
+ } else t = j(e) ? F(e, v) : F(e);
557
611
  s({
558
612
  ...o,
559
613
  dateRange: t
560
614
  });
561
- }, [o, v]), be = V((e) => {
562
- if (b(e), M(m)) {
563
- let t = I(m, e);
615
+ }, [o, v]), xe = V((e) => {
616
+ if (b(e), j(m)) {
617
+ let t = F(m, e);
564
618
  s({
565
619
  ...o,
566
620
  dateRange: t
567
621
  });
568
622
  }
569
- }, [o, m]), xe = V((e) => {
623
+ }, [o, m]), J = V((e) => {
570
624
  let t = e.target.value, n = (Array.isArray(o.dateRange) ? o.dateRange : [o.dateRange || "", ""])[1] || t;
571
625
  s({
572
626
  ...o,
@@ -578,11 +632,11 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
578
632
  ...o,
579
633
  dateRange: [n, t]
580
634
  });
581
- }, [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 = {
635
+ }, [o]), Ce = a(oe.find((e) => e.operator === o.operator)?.label || o.operator), we = a(C.find((e) => e.value === m)?.label || "filter.modal.selectRange"), Te = {
582
636
  filter: o,
583
- operatorMeta: F,
584
- shouldShowDateRange: oe,
585
- shouldShowComboBox: L
637
+ operatorMeta: P,
638
+ shouldShowDateRange: se,
639
+ shouldShowComboBox: I
586
640
  }, Ee = {
587
641
  rangeType: m,
588
642
  numberValue: v,
@@ -590,20 +644,20 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
590
644
  isOpen: f,
591
645
  onToggle: p,
592
646
  onRangeTypeChange: ye,
593
- onNumberValueChange: be,
594
- onCustomStartDate: xe,
647
+ onNumberValueChange: xe,
648
+ onCustomStartDate: J,
595
649
  onCustomEndDate: Se,
596
650
  onOpen: V(() => {
597
651
  l(!1), d(!1);
598
652
  }, [])
599
- }, Y = {
653
+ }, De = {
600
654
  isOpen: u,
601
- options: R,
602
- loading: se,
603
- error: ue,
655
+ options: L,
656
+ loading: ce,
657
+ error: de,
604
658
  searchText: S,
605
659
  highlightedIndex: O,
606
- listRef: j,
660
+ listRef: A,
607
661
  onSearchTextChange: w,
608
662
  onHighlightedIndexChange: k,
609
663
  onSelect: pe,
@@ -622,12 +676,12 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
622
676
  _e,
623
677
  ve,
624
678
  ge
625
- ]), ke = P ? Le : ne ? Re : Ie;
626
- return /* @__PURE__ */ q(K, { children: /* @__PURE__ */ q("div", {
679
+ ]), ke = N ? Ue : re ? We : He;
680
+ return /* @__PURE__ */ K(be, { children: /* @__PURE__ */ K("div", {
627
681
  className: `dc:fixed dc:inset-0 bg-dc-overlay dc:z-50 ${E ? "" : "dc:flex dc:items-center dc:justify-center dc:p-4"}`,
628
682
  onClick: r,
629
- children: /* @__PURE__ */ J("div", {
630
- ref: A,
683
+ children: /* @__PURE__ */ q("div", {
684
+ ref: ee,
631
685
  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",
632
686
  style: {
633
687
  ...E ? {
@@ -640,71 +694,71 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
640
694
  },
641
695
  onClick: (e) => e.stopPropagation(),
642
696
  children: [
643
- /* @__PURE__ */ J("div", {
697
+ /* @__PURE__ */ q("div", {
644
698
  className: "dc:flex dc:items-center dc:justify-between dc:p-4 dc:border-b border-dc-border",
645
- children: [/* @__PURE__ */ q("h2", {
699
+ children: [/* @__PURE__ */ K("h2", {
646
700
  className: "dc:text-lg dc:font-semibold text-dc-text",
647
701
  children: a("filter.modal.title")
648
- }), /* @__PURE__ */ q("button", {
702
+ }), /* @__PURE__ */ K("button", {
649
703
  onClick: r,
650
704
  className: "dc:p-1 text-dc-text-muted hover:text-dc-text dc:transition-colors",
651
- children: /* @__PURE__ */ q(Pe, { className: "dc:w-5 dc:h-5" })
705
+ children: /* @__PURE__ */ K(Be, { className: "dc:w-5 dc:h-5" })
652
706
  })]
653
707
  }),
654
- /* @__PURE__ */ J("div", {
708
+ /* @__PURE__ */ q("div", {
655
709
  className: "dc:p-4 dc:space-y-4",
656
710
  children: [
657
- /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
711
+ /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
658
712
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
659
713
  children: a("filter.modal.fieldLabel")
660
- }), /* @__PURE__ */ J("div", {
714
+ }), /* @__PURE__ */ q("div", {
661
715
  className: "dc:flex dc:items-center dc:gap-2 dc:p-3 bg-dc-surface-secondary dc:rounded-sm",
662
- children: [/* @__PURE__ */ q(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ q("span", {
716
+ children: [/* @__PURE__ */ K(ke, { className: "dc:w-5 dc:h-5 text-dc-filter-text" }), /* @__PURE__ */ K("span", {
663
717
  className: "dc:text-sm dc:font-medium text-dc-text",
664
- children: ie
718
+ children: ae
665
719
  })]
666
720
  })] }),
667
- /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
721
+ /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
668
722
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
669
723
  children: a("filter.modal.operatorLabel")
670
- }), /* @__PURE__ */ J("div", {
724
+ }), /* @__PURE__ */ q("div", {
671
725
  className: "dc:relative",
672
- children: [/* @__PURE__ */ J("button", {
726
+ children: [/* @__PURE__ */ q("button", {
673
727
  onClick: () => {
674
728
  d(!1), p(!1), l(!c);
675
729
  },
676
730
  className: "dc:w-full dc:flex dc:items-center dc:justify-between dc:text-left dc:text-sm dc:border border-dc-border dc:rounded-sm dc:px-3 dc:py-2 bg-dc-surface text-dc-text hover:bg-dc-surface-hover",
677
- children: [/* @__PURE__ */ q("span", {
731
+ children: [/* @__PURE__ */ K("span", {
678
732
  className: "dc:truncate",
679
733
  children: Ce
680
- }), /* @__PURE__ */ q(Fe, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
681
- }), c && /* @__PURE__ */ q("div", {
734
+ }), /* @__PURE__ */ K(Ve, { className: `dc:w-4 dc:h-4 text-dc-text-muted dc:shrink-0 dc:ml-2 dc:transition-transform ${c ? "dc:rotate-180" : ""}` })]
735
+ }), c && /* @__PURE__ */ K("div", {
682
736
  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",
683
- children: ae.map((e) => /* @__PURE__ */ q("button", {
737
+ children: oe.map((e) => /* @__PURE__ */ K("button", {
684
738
  onClick: () => fe(e.operator),
685
739
  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"}`,
686
740
  children: a(e.label)
687
741
  }, e.operator))
688
742
  })]
689
743
  })] }),
690
- /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("label", {
744
+ /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
691
745
  className: "dc:block dc:text-sm dc:font-medium text-dc-text-secondary dc:mb-2",
692
746
  children: a("filter.modal.valueLabel")
693
- }), /* @__PURE__ */ q(Ne, {
747
+ }), /* @__PURE__ */ K(ze, {
694
748
  field: Te,
695
749
  dateRange: Ee,
696
- combo: Y,
750
+ combo: De,
697
751
  inputs: Oe
698
752
  })] })
699
753
  ]
700
754
  }),
701
- /* @__PURE__ */ J("div", {
755
+ /* @__PURE__ */ q("div", {
702
756
  className: "dc:flex dc:items-center dc:justify-end dc:gap-2 dc:p-4 dc:border-t border-dc-border",
703
- children: [/* @__PURE__ */ q("button", {
757
+ children: [/* @__PURE__ */ K("button", {
704
758
  onClick: r,
705
759
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-text-secondary hover:text-dc-text dc:transition-colors",
706
760
  children: a("common.actions.cancel")
707
- }), /* @__PURE__ */ q("button", {
761
+ }), /* @__PURE__ */ K("button", {
708
762
  onClick: () => n(o),
709
763
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-primary-content bg-dc-primary hover:bg-dc-primary-hover dc:rounded-sm dc:transition-colors",
710
764
  children: a("common.actions.save")
@@ -716,47 +770,47 @@ function ze({ filter: e, schema: t, onSave: n, onCancel: r, anchorElement: i })
716
770
  }
717
771
  //#endregion
718
772
  //#region src/client/components/AnalysisBuilder/AnalysisFilterItem.tsx
719
- var Be = d("close"), Ve = d("dimension"), He = d("timeDimension"), Ue = d("measure");
720
- function We({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
721
- let { t: i } = z(), [a, o] = G(!1), s = W(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 = Ge(e, f, i), h = l ? He : u ? Ue : Ve;
722
- return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ J("div", {
773
+ var Ke = d("close"), qe = d("dimension"), Je = d("timeDimension"), Ye = d("measure");
774
+ function Xe({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
775
+ let { t: i } = z(), [a, o] = G(!1), s = W(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 = Ze(e, f, i), h = l ? Je : u ? Ye : qe;
776
+ return /* @__PURE__ */ q(be, { children: [/* @__PURE__ */ q("div", {
723
777
  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",
724
778
  children: [
725
- /* @__PURE__ */ q("span", {
779
+ /* @__PURE__ */ K("span", {
726
780
  className: `dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded-sm ${l ? "bg-dc-time-dimension" : u ? "bg-dc-measure" : "bg-dc-dimension"} ${l ? "text-dc-time-dimension-text" : u ? "text-dc-measure-text" : "text-dc-dimension-text"} dc:flex-shrink-0 dc:mt-0.5`,
727
- children: h && /* @__PURE__ */ q(h, { className: "dc:w-4 dc:h-4" })
781
+ children: h && /* @__PURE__ */ K(h, { className: "dc:w-4 dc:h-4" })
728
782
  }),
729
- /* @__PURE__ */ q("button", {
783
+ /* @__PURE__ */ K("button", {
730
784
  ref: s,
731
785
  onClick: () => o(!0),
732
786
  className: "dc:flex-1 dc:min-w-0 dc:text-left",
733
787
  title: `${d} ${p} ${m}`,
734
- children: /* @__PURE__ */ J("div", {
788
+ children: /* @__PURE__ */ q("div", {
735
789
  className: "dc:text-sm text-dc-text dc:break-words",
736
790
  children: [
737
- /* @__PURE__ */ q("span", {
791
+ /* @__PURE__ */ K("span", {
738
792
  className: "dc:font-medium",
739
793
  children: d
740
794
  }),
741
- /* @__PURE__ */ q("span", {
795
+ /* @__PURE__ */ K("span", {
742
796
  className: "text-dc-text-muted dc:mx-1",
743
797
  children: p
744
798
  }),
745
- /* @__PURE__ */ q("span", {
799
+ /* @__PURE__ */ K("span", {
746
800
  className: "text-dc-primary",
747
801
  children: m
748
802
  })
749
803
  ]
750
804
  })
751
805
  }),
752
- /* @__PURE__ */ q("button", {
806
+ /* @__PURE__ */ K("button", {
753
807
  onClick: n,
754
808
  className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:opacity-100 dc:sm:opacity-0 dc:sm:group-hover:opacity-100 dc:transition-opacity dc:flex-shrink-0 dc:mt-0.5",
755
809
  title: i("filter.removeButton.title"),
756
- children: Be && /* @__PURE__ */ q(Be, { className: "dc:w-4 dc:h-4" })
810
+ children: Ke && /* @__PURE__ */ K(Ke, { className: "dc:w-4 dc:h-4" })
757
811
  })
758
812
  ]
759
- }), a && /* @__PURE__ */ q(ze, {
813
+ }), a && /* @__PURE__ */ K(Ge, {
760
814
  filter: e,
761
815
  schema: t,
762
816
  onSave: (e) => {
@@ -766,7 +820,7 @@ function We({ filter: e, schema: t, onRemove: n, onUpdate: r }) {
766
820
  anchorElement: s.current
767
821
  })] });
768
822
  }
769
- function Ge(e, t, n) {
823
+ function Ze(e, t, n) {
770
824
  if (!t?.requiresValues) return "";
771
825
  if (e.dateRange) return Array.isArray(e.dateRange) ? `${e.dateRange[0]} to ${e.dateRange[1]}` : e.dateRange;
772
826
  let r = e.values || [];
@@ -774,8 +828,8 @@ function Ge(e, t, n) {
774
828
  }
775
829
  //#endregion
776
830
  //#region src/client/components/AnalysisBuilder/AnalysisFilterGroup.tsx
777
- var Ke = d("add"), qe = d("close");
778
- function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
831
+ var Qe = d("add"), $e = d("close");
832
+ function et({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, depth: a = 0, hideRemoveButton: o = !1 }) {
779
833
  let { t: s } = z(), [c, l] = G(!1), u = W(null);
780
834
  H(() => {
781
835
  let e = (e) => {
@@ -784,7 +838,7 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
784
838
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
785
839
  }, []);
786
840
  let d = V(() => {
787
- n(te(e));
841
+ n(ne(e));
788
842
  }, [e, n]), f = V((t, r) => {
789
843
  let i = [...e.filters];
790
844
  i[t] = r, n({
@@ -816,18 +870,18 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
816
870
  }, [i]), g = V((e) => (t = []) => {
817
871
  i([e, ...t]);
818
872
  }, [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");
819
- return /* @__PURE__ */ J("div", {
873
+ return /* @__PURE__ */ q("div", {
820
874
  className: `dc:border ${_()} dc:rounded-lg bg-dc-surface dc:w-full`,
821
- children: [/* @__PURE__ */ J("div", {
875
+ children: [/* @__PURE__ */ q("div", {
822
876
  className: `dc:flex dc:items-center dc:justify-between dc:px-2 dc:py-1.5 dc:border-b border-dc-border/50 dc:rounded-t-lg ${v()}`,
823
- children: [/* @__PURE__ */ J("div", {
877
+ children: [/* @__PURE__ */ q("div", {
824
878
  className: "dc:flex dc:items-center dc:gap-2",
825
- children: [/* @__PURE__ */ q("button", {
879
+ children: [/* @__PURE__ */ K("button", {
826
880
  onClick: d,
827
881
  className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-semibold dc:rounded-sm dc:transition-colors ${e.type === "and" ? "bg-dc-info-bg text-dc-info dc:hover:opacity-80" : "bg-dc-warning-bg text-dc-warning dc:hover:opacity-80"}`,
828
882
  title: `Click to switch to ${e.type === "and" ? "OR" : "AND"}`,
829
883
  children: e.type.toUpperCase()
830
- }), /* @__PURE__ */ J("span", {
884
+ }), /* @__PURE__ */ q("span", {
831
885
  className: "dc:text-xs text-dc-text-muted",
832
886
  children: [
833
887
  y,
@@ -835,61 +889,61 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
835
889
  b
836
890
  ]
837
891
  })]
838
- }), /* @__PURE__ */ J("div", {
892
+ }), /* @__PURE__ */ q("div", {
839
893
  className: "dc:flex dc:items-center dc:gap-1",
840
- children: [/* @__PURE__ */ J("div", {
894
+ children: [/* @__PURE__ */ q("div", {
841
895
  className: "dc:relative",
842
896
  ref: u,
843
- children: [/* @__PURE__ */ q("button", {
897
+ children: [/* @__PURE__ */ K("button", {
844
898
  onClick: () => l(!c),
845
899
  className: "dc:p-1 text-dc-text-secondary hover:text-dc-primary hover:bg-dc-surface-hover dc:rounded-sm dc:transition-colors",
846
900
  title: "Add condition",
847
- children: /* @__PURE__ */ q(Ke, { className: "dc:w-4 dc:h-4" })
848
- }), c && /* @__PURE__ */ J("div", {
901
+ children: /* @__PURE__ */ K(Qe, { className: "dc:w-4 dc:h-4" })
902
+ }), c && /* @__PURE__ */ q("div", {
849
903
  className: "dc:absolute dc:right-0 dc:mt-1 dc:z-40 bg-dc-surface dc:border border-dc-border dc:rounded-sm dc:shadow-lg dc:py-1 dc:min-w-[120px]",
850
904
  children: [
851
- /* @__PURE__ */ q("button", {
905
+ /* @__PURE__ */ K("button", {
852
906
  onClick: h,
853
907
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
854
908
  children: s("filter.group.addFilter")
855
909
  }),
856
- /* @__PURE__ */ q("button", {
910
+ /* @__PURE__ */ K("button", {
857
911
  onClick: () => m("and"),
858
912
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
859
913
  children: s("filter.group.addAndGroup")
860
914
  }),
861
- /* @__PURE__ */ q("button", {
915
+ /* @__PURE__ */ K("button", {
862
916
  onClick: () => m("or"),
863
917
  className: "dc:w-full dc:text-left dc:px-3 dc:py-1.5 dc:text-xs text-dc-text hover:bg-dc-surface-hover",
864
918
  children: s("filter.group.addOrGroup")
865
919
  })
866
920
  ]
867
921
  })]
868
- }), !o && /* @__PURE__ */ q("button", {
922
+ }), !o && /* @__PURE__ */ K("button", {
869
923
  onClick: r,
870
924
  className: "dc:p-1 text-dc-text-muted hover:text-dc-danger dc:transition-colors",
871
925
  title: s("filter.group.removeGroup"),
872
- children: /* @__PURE__ */ q(qe, { className: "dc:w-4 dc:h-4" })
926
+ children: /* @__PURE__ */ K($e, { className: "dc:w-4 dc:h-4" })
873
927
  })]
874
928
  })]
875
- }), /* @__PURE__ */ q("div", {
929
+ }), /* @__PURE__ */ K("div", {
876
930
  className: "dc:p-1.5 dc:flex dc:flex-wrap dc:gap-2",
877
- children: e.filters.length === 0 ? /* @__PURE__ */ J("div", {
931
+ children: e.filters.length === 0 ? /* @__PURE__ */ q("div", {
878
932
  className: "dc:text-center dc:py-3",
879
- children: [/* @__PURE__ */ q("p", {
933
+ children: [/* @__PURE__ */ K("p", {
880
934
  className: "dc:text-xs text-dc-text-muted dc:mb-1",
881
935
  children: s("filter.group.empty")
882
- }), /* @__PURE__ */ q("button", {
936
+ }), /* @__PURE__ */ K("button", {
883
937
  onClick: () => i([]),
884
938
  className: "dc:text-xs text-dc-primary dc:hover:underline",
885
939
  children: s("filter.group.addFilterLink")
886
940
  })]
887
- }) : e.filters.map((e, n) => ne(e) ? /* @__PURE__ */ q(We, {
941
+ }) : e.filters.map((e, n) => re(e) ? /* @__PURE__ */ K(Xe, {
888
942
  filter: e,
889
943
  schema: t,
890
944
  onUpdate: (e) => f(n, e),
891
945
  onRemove: () => p(n)
892
- }, `filter-${n}`) : P(e) ? /* @__PURE__ */ q(Je, {
946
+ }, `filter-${n}`) : N(e) ? /* @__PURE__ */ K(et, {
893
947
  group: e,
894
948
  schema: t,
895
949
  onUpdate: (e) => f(n, e),
@@ -902,9 +956,9 @@ function Je({ group: e, schema: t, onUpdate: n, onRemove: r, onAddFilter: i, dep
902
956
  }
903
957
  //#endregion
904
958
  //#region src/client/components/AnalysisBuilder/AnalysisFilterSection.tsx
905
- var Ye = d("add");
906
- function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
907
- let { t: a } = z(), [o, s] = G(!1), [c, l] = G(!1), u = W([]), d = R(e), f = V((e) => {
959
+ var tt = d("add");
960
+ function nt({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dimensionsOnly: i = !1 }) {
961
+ let { t: a } = z(), [o, s] = G(!1), [c, l] = G(!1), u = W([]), d = L(e), f = V((e) => {
908
962
  e.preventDefault(), e.stopPropagation(), l(!0);
909
963
  }, []), p = V((e) => {
910
964
  e.preventDefault(), e.stopPropagation(), l(!1);
@@ -914,18 +968,18 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
914
968
  let t = JSON.parse(e.dataTransfer.getData("text/plain"));
915
969
  t.field && r && r(t.field);
916
970
  } catch {}
917
- }, [r]), h = ee(e), g = V((t, r, i) => {
971
+ }, [r]), h = te(e), g = V((t, r, i) => {
918
972
  let a = t.type === "time", o = a ? "inDateRange" : "equals", c = {
919
973
  member: t.name,
920
974
  operator: o,
921
975
  values: []
922
976
  };
923
- a && o === "inDateRange" && (c.dateRange = I("this_month")), n(re(e, u.current, c)), s(!1), u.current = [];
977
+ a && o === "inDateRange" && (c.dateRange = F("this_month")), n(ie(e, u.current, c)), s(!1), u.current = [];
924
978
  }, [e, n]), _ = V((t, r) => {
925
979
  let i = [...e];
926
980
  i[t] = r, n(i);
927
981
  }, [e, n]), v = V((t) => {
928
- n(ie(e, t));
982
+ n(ae(e, t));
929
983
  }, [e, n]), y = V(() => {
930
984
  n([]);
931
985
  }, [n]), b = V(() => {
@@ -934,12 +988,12 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
934
988
  u.current = [...e, ...t], s(!0);
935
989
  }, []), S = (n, r, i = []) => {
936
990
  let a = [...i, r];
937
- return ne(n) ? /* @__PURE__ */ q(We, {
991
+ return re(n) ? /* @__PURE__ */ K(Xe, {
938
992
  filter: n,
939
993
  schema: t,
940
994
  onUpdate: (e) => _(r, e),
941
995
  onRemove: () => v(r)
942
- }, `filter-${a.join("-")}`) : P(n) ? /* @__PURE__ */ q(Je, {
996
+ }, `filter-${a.join("-")}`) : N(n) ? /* @__PURE__ */ K(et, {
943
997
  group: n,
944
998
  schema: t,
945
999
  onUpdate: (e) => _(r, e),
@@ -948,21 +1002,21 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
948
1002
  hideRemoveButton: e.length === 1
949
1003
  }, `group-${a.join("-")}`) : null;
950
1004
  };
951
- return /* @__PURE__ */ J("div", { children: [
952
- /* @__PURE__ */ J("button", {
1005
+ return /* @__PURE__ */ q("div", { children: [
1006
+ /* @__PURE__ */ q("button", {
953
1007
  onClick: b,
954
1008
  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",
955
1009
  title: "Add filter",
956
- children: [/* @__PURE__ */ J(ge, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ J("span", {
1010
+ children: [/* @__PURE__ */ q(ge, { children: [a("analysis.sections.filters"), d > 0 && /* @__PURE__ */ q("span", {
957
1011
  className: "dc:ml-1.5 dc:text-xs dc:font-normal text-dc-text-muted dc:normal-case dc:tracking-normal",
958
1012
  children: [
959
1013
  "(",
960
1014
  d,
961
1015
  ")"
962
1016
  ]
963
- })] }), /* @__PURE__ */ J("div", {
1017
+ })] }), /* @__PURE__ */ q("div", {
964
1018
  className: "dc:flex dc:items-center dc:gap-2",
965
- children: [d > 0 && /* @__PURE__ */ q("span", {
1019
+ children: [d > 0 && /* @__PURE__ */ K("span", {
966
1020
  role: "button",
967
1021
  tabIndex: 0,
968
1022
  onClick: (e) => {
@@ -973,23 +1027,23 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
973
1027
  },
974
1028
  className: "dc:text-xs text-dc-text-muted hover:text-dc-error dc:underline dc:cursor-pointer",
975
1029
  children: a("filter.section.clearAll")
976
- }), /* @__PURE__ */ q(Ye, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
1030
+ }), /* @__PURE__ */ K(tt, { className: "dc:w-5 dc:h-5 text-dc-text-secondary group-hover:text-dc-primary dc:transition-colors" })]
977
1031
  })]
978
1032
  }),
979
- /* @__PURE__ */ q("div", {
1033
+ /* @__PURE__ */ K("div", {
980
1034
  onDragOver: r ? f : void 0,
981
1035
  onDragLeave: r ? p : void 0,
982
1036
  onDrop: r ? m : void 0,
983
1037
  className: `dc:p-2 dc:-mx-2 dc:rounded-lg dc:border-2 dc:border-dashed dc:transition-all ${c ? "border-dc-primary bg-dc-primary/5" : "border-transparent"}`,
984
- children: e.length === 0 ? /* @__PURE__ */ q("p", {
1038
+ children: e.length === 0 ? /* @__PURE__ */ K("p", {
985
1039
  className: `dc:text-sm ${c ? "text-dc-primary dc:font-medium" : "text-dc-text-muted"}`,
986
1040
  children: a(c ? "filter.section.dropHint" : "filter.section.empty")
987
- }) : /* @__PURE__ */ q("div", {
1041
+ }) : /* @__PURE__ */ K("div", {
988
1042
  className: "dc:flex dc:flex-wrap dc:gap-2",
989
1043
  children: e.map((e, t) => S(e, t))
990
1044
  })
991
1045
  }),
992
- /* @__PURE__ */ q(E, {
1046
+ /* @__PURE__ */ K(E, {
993
1047
  isOpen: o,
994
1048
  onClose: () => {
995
1049
  s(!1), u.current = [];
@@ -1003,33 +1057,33 @@ function Xe({ filters: e, schema: t, onFiltersChange: n, onFieldDropped: r, dime
1003
1057
  }
1004
1058
  //#endregion
1005
1059
  //#region src/client/components/AnalysisBuilder/ExplainAIPanel.tsx
1006
- function Ze(e) {
1060
+ function rt(e) {
1007
1061
  return typeof e == "string" ? e : typeof e == "object" && e ? JSON.stringify(e) : String(e ?? "");
1008
1062
  }
1009
- var Qe = {
1063
+ var it = {
1010
1064
  good: "bg-dc-success-bg text-dc-success border-dc-success",
1011
1065
  warning: "bg-dc-warning-bg text-dc-warning border-dc-warning",
1012
1066
  critical: "bg-dc-danger-bg text-dc-error border-dc-error"
1013
- }, $e = {
1067
+ }, at = {
1014
1068
  critical: "bg-dc-danger-bg text-dc-error",
1015
1069
  warning: "bg-dc-warning-bg text-dc-warning",
1016
1070
  suggestion: "bg-dc-accent-bg text-dc-accent"
1017
- }, et = {
1071
+ }, ot = {
1018
1072
  high: "text-dc-error",
1019
1073
  medium: "text-dc-warning",
1020
1074
  low: "text-dc-text-muted"
1021
1075
  };
1022
- function tt({ assessment: e, reason: t }) {
1076
+ function st({ assessment: e, reason: t }) {
1023
1077
  let { t: n } = z(), r = {
1024
1078
  good: n("explainAI.assessment.good"),
1025
1079
  warning: n("explainAI.assessment.warning"),
1026
1080
  critical: n("explainAI.assessment.critical")
1027
1081
  };
1028
- return /* @__PURE__ */ J("div", {
1029
- className: `dc:p-4 dc:rounded-lg dc:border ${Qe[e]}`,
1030
- children: [/* @__PURE__ */ q("div", {
1082
+ return /* @__PURE__ */ q("div", {
1083
+ className: `dc:p-4 dc:rounded-lg dc:border ${it[e]}`,
1084
+ children: [/* @__PURE__ */ K("div", {
1031
1085
  className: "dc:flex dc:items-center dc:gap-2 dc:mb-1",
1032
- children: /* @__PURE__ */ J("span", {
1086
+ children: /* @__PURE__ */ q("span", {
1033
1087
  className: "dc:font-semibold dc:uppercase dc:text-base",
1034
1088
  children: [
1035
1089
  e === "good" && "✓ ",
@@ -1038,33 +1092,33 @@ function tt({ assessment: e, reason: t }) {
1038
1092
  r[e]
1039
1093
  ]
1040
1094
  })
1041
- }), /* @__PURE__ */ q("p", {
1095
+ }), /* @__PURE__ */ K("p", {
1042
1096
  className: "dc:text-sm",
1043
- children: Ze(t)
1097
+ children: rt(t)
1044
1098
  })]
1045
1099
  });
1046
1100
  }
1047
- function nt({ issue: e }) {
1048
- return /* @__PURE__ */ J("div", {
1101
+ function ct({ issue: e }) {
1102
+ return /* @__PURE__ */ q("div", {
1049
1103
  className: "dc:flex dc:items-start dc:gap-2 dc:py-2",
1050
- children: [/* @__PURE__ */ J("span", {
1051
- className: `dc:text-sm ${et[e.severity]}`,
1104
+ children: [/* @__PURE__ */ q("span", {
1105
+ className: `dc:text-sm ${ot[e.severity]}`,
1052
1106
  children: [
1053
1107
  e.severity === "high" && "●",
1054
1108
  e.severity === "medium" && "○",
1055
1109
  e.severity === "low" && "○"
1056
1110
  ]
1057
- }), /* @__PURE__ */ q("span", {
1111
+ }), /* @__PURE__ */ K("span", {
1058
1112
  className: "dc:text-sm text-dc-text-secondary",
1059
- children: Ze(e.description)
1113
+ children: rt(e.description)
1060
1114
  })]
1061
1115
  });
1062
1116
  }
1063
- function rt({ text: e }) {
1117
+ function lt({ text: e }) {
1064
1118
  let { t } = z(), [n, r] = B.useState(!1), i = B.useRef(null);
1065
1119
  return B.useEffect(() => () => {
1066
1120
  i.current && clearTimeout(i.current);
1067
- }, []), /* @__PURE__ */ q("button", {
1121
+ }, []), /* @__PURE__ */ K("button", {
1068
1122
  onClick: async () => {
1069
1123
  try {
1070
1124
  await navigator.clipboard.writeText(e), r(!0), i.current && clearTimeout(i.current), i.current = setTimeout(() => r(!1), 2e3);
@@ -1077,66 +1131,66 @@ function rt({ text: e }) {
1077
1131
  children: t(n ? "explainAI.copied" : "explainAI.copy")
1078
1132
  });
1079
1133
  }
1080
- function it({ rec: e }) {
1134
+ function ut({ rec: e }) {
1081
1135
  let { t } = z(), n = {
1082
1136
  index: t("explainAI.type.index"),
1083
1137
  table: t("explainAI.type.table"),
1084
1138
  cube: t("explainAI.type.cube"),
1085
1139
  general: t("explainAI.type.general")
1086
1140
  };
1087
- return /* @__PURE__ */ J("div", {
1141
+ return /* @__PURE__ */ q("div", {
1088
1142
  className: "dc:p-4 dc:border border-dc-border dc:rounded-lg bg-dc-surface",
1089
1143
  children: [
1090
- /* @__PURE__ */ J("div", {
1144
+ /* @__PURE__ */ q("div", {
1091
1145
  className: "dc:flex dc:items-center dc:gap-2 dc:mb-2",
1092
- children: [/* @__PURE__ */ q("span", {
1093
- className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${$e[e.severity]}`,
1146
+ children: [/* @__PURE__ */ K("span", {
1147
+ className: `dc:px-2 dc:py-0.5 dc:text-xs dc:font-medium dc:rounded-sm ${at[e.severity]}`,
1094
1148
  children: n[e.type]
1095
- }), /* @__PURE__ */ q("h5", {
1149
+ }), /* @__PURE__ */ K("h5", {
1096
1150
  className: "dc:font-medium text-dc-text",
1097
- children: Ze(e.title)
1151
+ children: rt(e.title)
1098
1152
  })]
1099
1153
  }),
1100
- /* @__PURE__ */ q("p", {
1154
+ /* @__PURE__ */ K("p", {
1101
1155
  className: "dc:text-sm text-dc-text-secondary dc:mb-3",
1102
- children: Ze(e.description)
1156
+ children: rt(e.description)
1103
1157
  }),
1104
- e.sql && /* @__PURE__ */ q("div", {
1158
+ e.sql && /* @__PURE__ */ K("div", {
1105
1159
  className: "dc:mt-2",
1106
- children: /* @__PURE__ */ q(m, {
1160
+ children: /* @__PURE__ */ K(m, {
1107
1161
  code: e.sql,
1108
1162
  language: "sql",
1109
- headerRight: /* @__PURE__ */ q(rt, { text: e.sql })
1163
+ headerRight: /* @__PURE__ */ K(lt, { text: e.sql })
1110
1164
  })
1111
1165
  }),
1112
- e.cubeCode && /* @__PURE__ */ J("div", {
1166
+ e.cubeCode && /* @__PURE__ */ q("div", {
1113
1167
  className: "dc:mt-2",
1114
- children: [e.cubeName && /* @__PURE__ */ q("p", {
1168
+ children: [e.cubeName && /* @__PURE__ */ K("p", {
1115
1169
  className: "dc:text-xs text-dc-text-muted dc:mb-1",
1116
1170
  children: t("explainAI.addToCube", { cubeName: e.cubeName })
1117
- }), /* @__PURE__ */ J("div", {
1171
+ }), /* @__PURE__ */ q("div", {
1118
1172
  className: "dc:relative",
1119
- children: [/* @__PURE__ */ q("pre", {
1173
+ children: [/* @__PURE__ */ K("pre", {
1120
1174
  className: "dc:p-3 dc:text-xs bg-dc-surface-secondary dc:rounded-sm dc:overflow-x-auto dc:font-mono text-dc-text",
1121
1175
  children: e.cubeCode
1122
- }), /* @__PURE__ */ q("div", {
1176
+ }), /* @__PURE__ */ K("div", {
1123
1177
  className: "dc:absolute dc:top-1 dc:right-1",
1124
- children: /* @__PURE__ */ q(rt, { text: e.cubeCode })
1178
+ children: /* @__PURE__ */ K(lt, { text: e.cubeCode })
1125
1179
  })]
1126
1180
  })]
1127
1181
  }),
1128
- e.estimatedImpact && /* @__PURE__ */ J("p", {
1182
+ e.estimatedImpact && /* @__PURE__ */ q("p", {
1129
1183
  className: "dc:text-xs text-dc-text-muted dc:mt-2",
1130
1184
  children: [
1131
- /* @__PURE__ */ q("strong", { children: t("explainAI.expectedImpact") }),
1185
+ /* @__PURE__ */ K("strong", { children: t("explainAI.expectedImpact") }),
1132
1186
  " ",
1133
- Ze(e.estimatedImpact)
1187
+ rt(e.estimatedImpact)
1134
1188
  ]
1135
1189
  })
1136
1190
  ]
1137
1191
  });
1138
1192
  }
1139
- function at({ analysis: e, onClose: t, onClear: n }) {
1193
+ function dt({ analysis: e, onClose: t, onClear: n }) {
1140
1194
  let { t: r } = z(), i = t || n;
1141
1195
  return B.useEffect(() => {
1142
1196
  let e = (e) => {
@@ -1145,36 +1199,36 @@ function at({ analysis: e, onClose: t, onClear: n }) {
1145
1199
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
1146
1200
  }, [i]), B.useEffect(() => (document.body.style.overflow = "hidden", () => {
1147
1201
  document.body.style.overflow = "";
1148
- }), []), /* @__PURE__ */ J("div", {
1202
+ }), []), /* @__PURE__ */ q("div", {
1149
1203
  className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center dc:p-4 bg-black/50",
1150
- children: [/* @__PURE__ */ q("div", {
1204
+ children: [/* @__PURE__ */ K("div", {
1151
1205
  className: "dc:absolute dc:inset-0",
1152
1206
  onClick: i,
1153
1207
  "aria-hidden": "true"
1154
- }), /* @__PURE__ */ J("div", {
1208
+ }), /* @__PURE__ */ q("div", {
1155
1209
  className: "dc:relative dc:w-full dc:max-w-4xl dc:max-h-[90vh] bg-dc-surface dc:rounded-lg dc:shadow-xl dc:flex dc:flex-col",
1156
1210
  children: [
1157
- /* @__PURE__ */ J("div", {
1211
+ /* @__PURE__ */ q("div", {
1158
1212
  className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-4 dc:border-b border-dc-border dc:flex-shrink-0",
1159
- children: [/* @__PURE__ */ J("div", {
1213
+ children: [/* @__PURE__ */ q("div", {
1160
1214
  className: "dc:flex dc:items-center dc:gap-3",
1161
- children: [/* @__PURE__ */ q("span", {
1215
+ children: [/* @__PURE__ */ K("span", {
1162
1216
  className: "dc:text-lg",
1163
1217
  children: "✨"
1164
- }), /* @__PURE__ */ q("h3", {
1218
+ }), /* @__PURE__ */ K("h3", {
1165
1219
  className: "dc:text-lg dc:font-semibold text-dc-text",
1166
1220
  children: r("explainAI.title")
1167
1221
  })]
1168
- }), /* @__PURE__ */ q("button", {
1222
+ }), /* @__PURE__ */ K("button", {
1169
1223
  onClick: i,
1170
1224
  className: "dc:p-2 dc:rounded-lg hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors",
1171
1225
  "aria-label": "Close",
1172
- children: /* @__PURE__ */ q("svg", {
1226
+ children: /* @__PURE__ */ K("svg", {
1173
1227
  className: "dc:w-5 dc:h-5",
1174
1228
  fill: "none",
1175
1229
  stroke: "currentColor",
1176
1230
  viewBox: "0 0 24 24",
1177
- children: /* @__PURE__ */ q("path", {
1231
+ children: /* @__PURE__ */ K("path", {
1178
1232
  strokeLinecap: "round",
1179
1233
  strokeLinejoin: "round",
1180
1234
  strokeWidth: 2,
@@ -1183,50 +1237,50 @@ function at({ analysis: e, onClose: t, onClear: n }) {
1183
1237
  })
1184
1238
  })]
1185
1239
  }),
1186
- /* @__PURE__ */ J("div", {
1240
+ /* @__PURE__ */ q("div", {
1187
1241
  className: "dc:flex-1 dc:overflow-y-auto dc:px-6 dc:py-4 dc:space-y-6",
1188
1242
  children: [
1189
- /* @__PURE__ */ q(tt, {
1243
+ /* @__PURE__ */ K(st, {
1190
1244
  assessment: e.assessment,
1191
1245
  reason: e.assessmentReason
1192
1246
  }),
1193
- /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
1247
+ /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
1194
1248
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1195
1249
  children: r("explainAI.summary")
1196
- }), /* @__PURE__ */ q("p", {
1250
+ }), /* @__PURE__ */ K("p", {
1197
1251
  className: "text-dc-text",
1198
- children: Ze(e.summary)
1252
+ children: rt(e.summary)
1199
1253
  })] }),
1200
- e.queryUnderstanding && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
1254
+ e.queryUnderstanding && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
1201
1255
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1202
1256
  children: r("explainAI.queryAnalysis")
1203
- }), /* @__PURE__ */ q("p", {
1257
+ }), /* @__PURE__ */ K("p", {
1204
1258
  className: "text-dc-text-secondary",
1205
- children: Ze(e.queryUnderstanding)
1259
+ children: rt(e.queryUnderstanding)
1206
1260
  })] }),
1207
- e.issues && e.issues.length > 0 && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
1261
+ e.issues && e.issues.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
1208
1262
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-2",
1209
1263
  children: r("explainAI.issuesFound", { count: e.issues.length })
1210
- }), /* @__PURE__ */ q("div", {
1264
+ }), /* @__PURE__ */ K("div", {
1211
1265
  className: "dc:space-y-1 bg-dc-surface-secondary dc:rounded-lg dc:p-3",
1212
- children: e.issues.map((e, t) => /* @__PURE__ */ q(nt, { issue: e }, t))
1266
+ children: e.issues.map((e, t) => /* @__PURE__ */ K(ct, { issue: e }, t))
1213
1267
  })] }),
1214
- e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ J("div", { children: [/* @__PURE__ */ q("h4", {
1268
+ e.recommendations && e.recommendations.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h4", {
1215
1269
  className: "dc:text-sm dc:font-semibold text-dc-text-muted dc:uppercase dc:mb-3",
1216
1270
  children: r("explainAI.recommendations", { count: e.recommendations.length })
1217
- }), /* @__PURE__ */ q("div", {
1271
+ }), /* @__PURE__ */ K("div", {
1218
1272
  className: "dc:space-y-4",
1219
- children: e.recommendations.map((e, t) => /* @__PURE__ */ q(it, { rec: e }, t))
1273
+ children: e.recommendations.map((e, t) => /* @__PURE__ */ K(ut, { rec: e }, t))
1220
1274
  })] }),
1221
- (!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ q("div", {
1275
+ (!e.recommendations || e.recommendations.length === 0) && /* @__PURE__ */ K("div", {
1222
1276
  className: "text-dc-text-muted dc:italic dc:p-4 bg-dc-surface-secondary dc:rounded-lg",
1223
1277
  children: r("explainAI.noRecommendations")
1224
1278
  })
1225
1279
  ]
1226
1280
  }),
1227
- /* @__PURE__ */ J("div", {
1281
+ /* @__PURE__ */ q("div", {
1228
1282
  className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-3 dc:border-t border-dc-border dc:flex-shrink-0 bg-dc-surface-secondary",
1229
- children: [e._meta && /* @__PURE__ */ J("div", {
1283
+ children: [e._meta && /* @__PURE__ */ q("div", {
1230
1284
  className: "dc:text-xs text-dc-text-muted",
1231
1285
  children: [
1232
1286
  r("explainAI.modelLabel"),
@@ -1234,7 +1288,7 @@ function at({ analysis: e, onClose: t, onClear: n }) {
1234
1288
  e._meta.model,
1235
1289
  e._meta.usingUserKey && ` ${r("explainAI.usingUserKey")}`
1236
1290
  ]
1237
- }), /* @__PURE__ */ q("button", {
1291
+ }), /* @__PURE__ */ K("button", {
1238
1292
  onClick: i,
1239
1293
  className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-lg bg-dc-primary text-white hover:bg-dc-primary-hover dc:transition-colors",
1240
1294
  children: r("common.actions.close")
@@ -1246,31 +1300,31 @@ function at({ analysis: e, onClose: t, onClear: n }) {
1246
1300
  }
1247
1301
  //#endregion
1248
1302
  //#region src/client/shared/chartConfigBuilders.ts
1249
- var ot = (e) => e.map((e) => e.field), st = (e) => e.length > 0 ? [e[0].field] : [];
1250
- function ct(e) {
1303
+ var ft = (e) => e.map((e) => e.field), pt = (e) => e.length > 0 ? [e[0].field] : [];
1304
+ function mt(e) {
1251
1305
  let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
1252
1306
  return {
1253
1307
  xAxis: n ? [n.field] : r ? [r.field] : [],
1254
- yAxis: ot(t),
1308
+ yAxis: ft(t),
1255
1309
  series: i.length > 1 ? [i[1].field] : r && n ? [r.field] : []
1256
1310
  };
1257
1311
  }
1258
- function lt(e) {
1312
+ function ht(e) {
1259
1313
  let { metrics: t, timeDimension: n, dimension: r, dimensions: i } = e;
1260
1314
  return {
1261
1315
  xAxis: r ? [r.field] : n ? [n.field] : [],
1262
- yAxis: ot(t),
1316
+ yAxis: ft(t),
1263
1317
  series: i.length > 1 ? [i[1].field] : n && r ? [n.field] : []
1264
1318
  };
1265
1319
  }
1266
- function ut(e) {
1320
+ function gt(e) {
1267
1321
  let { metrics: t, dimension: n } = e;
1268
1322
  return {
1269
1323
  xAxis: n ? [n.field] : [],
1270
- yAxis: st(t)
1324
+ yAxis: pt(t)
1271
1325
  };
1272
1326
  }
1273
- function dt(e) {
1327
+ function _t(e) {
1274
1328
  let { metrics: t, breakdowns: n, dimension: r, dimensions: i } = e;
1275
1329
  return t.length >= 2 ? {
1276
1330
  xAxis: [t[0].field],
@@ -1278,11 +1332,11 @@ function dt(e) {
1278
1332
  series: r ? [r.field] : []
1279
1333
  } : {
1280
1334
  xAxis: n.length > 0 ? [n[0].field] : [],
1281
- yAxis: st(t),
1335
+ yAxis: pt(t),
1282
1336
  series: i.length > 1 ? [i[1].field] : []
1283
1337
  };
1284
1338
  }
1285
- function ft(e) {
1339
+ function vt(e) {
1286
1340
  let { metrics: t, timeDimension: n, dimension: r } = e;
1287
1341
  return {
1288
1342
  xAxis: t.length > 0 ? [t[0].field] : [],
@@ -1291,216 +1345,216 @@ function ft(e) {
1291
1345
  series: r ? [r.field] : n ? [n.field] : []
1292
1346
  };
1293
1347
  }
1294
- function pt(e) {
1348
+ function yt(e) {
1295
1349
  let { metrics: t, dimension: n } = e;
1296
1350
  return {
1297
1351
  xAxis: n ? [n.field] : [],
1298
- yAxis: st(t)
1352
+ yAxis: pt(t)
1299
1353
  };
1300
1354
  }
1301
- function mt(e) {
1355
+ function bt(e) {
1302
1356
  let { metrics: t, timeDimension: n } = e;
1303
1357
  return {
1304
1358
  dateField: n ? [n.field] : [],
1305
- valueField: st(t)
1359
+ valueField: pt(t)
1306
1360
  };
1307
1361
  }
1308
- function ht(e) {
1309
- return { yAxis: st(e.metrics) };
1362
+ function xt(e) {
1363
+ return { yAxis: pt(e.metrics) };
1310
1364
  }
1311
- function gt(e) {
1365
+ function St(e) {
1312
1366
  let { metrics: t, breakdowns: n } = e;
1313
1367
  return { xAxis: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
1314
1368
  }
1315
- function _t(e) {
1369
+ function Ct(e) {
1316
1370
  let { metrics: t, breakdowns: n } = e;
1317
1371
  return { columns: [...n.map((e) => e.field), ...t.map((e) => e.field)] };
1318
1372
  }
1319
- function vt() {
1373
+ function wt() {
1320
1374
  return {};
1321
1375
  }
1322
- function yt(e) {
1376
+ function Tt(e) {
1323
1377
  let { metrics: t, breakdowns: n } = e;
1324
1378
  return {
1325
1379
  xAxis: n.length > 0 ? [n[0].field] : [],
1326
- yAxis: ot(t)
1380
+ yAxis: ft(t)
1327
1381
  };
1328
1382
  }
1329
- var bt = {
1330
- line: ct,
1331
- area: ct,
1332
- bar: lt,
1333
- pie: ut,
1334
- scatter: dt,
1335
- bubble: ft,
1336
- radar: pt,
1337
- radialBar: pt,
1338
- treemap: pt,
1339
- proportionBar: ut,
1340
- activityGrid: mt,
1341
- kpiNumber: ht,
1342
- kpiDelta: ht,
1343
- kpiText: ht,
1344
- table: gt,
1345
- recordsTable: _t,
1346
- markdown: vt
1383
+ var Et = {
1384
+ line: mt,
1385
+ area: mt,
1386
+ bar: ht,
1387
+ pie: gt,
1388
+ scatter: _t,
1389
+ bubble: vt,
1390
+ radar: yt,
1391
+ radialBar: yt,
1392
+ treemap: yt,
1393
+ proportionBar: gt,
1394
+ activityGrid: bt,
1395
+ kpiNumber: xt,
1396
+ kpiDelta: xt,
1397
+ kpiText: xt,
1398
+ table: St,
1399
+ recordsTable: Ct,
1400
+ markdown: wt
1347
1401
  };
1348
- function xt(e) {
1349
- return bt[e] || yt;
1402
+ function Dt(e) {
1403
+ return Et[e] || Tt;
1350
1404
  }
1351
1405
  //#endregion
1352
1406
  //#region src/client/shared/chartDefaults.ts
1353
- function St(e) {
1407
+ function Ot(e) {
1354
1408
  return e.isTimeDimension;
1355
1409
  }
1356
- function Ct(e) {
1357
- return e.find(St);
1410
+ function kt(e) {
1411
+ return e.find(Ot);
1358
1412
  }
1359
- function wt(e) {
1413
+ function At(e) {
1360
1414
  return e.find((e) => !e.isTimeDimension);
1361
1415
  }
1362
- function Tt(e) {
1416
+ function jt(e) {
1363
1417
  return e.filter((e) => !e.isTimeDimension);
1364
1418
  }
1365
- function Et(e) {
1366
- return e.filter(St);
1419
+ function Mt(e) {
1420
+ return e.filter(Ot);
1367
1421
  }
1368
- function Dt(e, t) {
1422
+ function Nt(e, t) {
1369
1423
  return {
1370
1424
  measureCount: e.length,
1371
1425
  dimensionCount: t.length,
1372
- timeDimensionCount: Et(t).length
1426
+ timeDimensionCount: Mt(t).length
1373
1427
  };
1374
1428
  }
1375
- function Ot(e, t, n) {
1429
+ function Pt(e, t, n) {
1376
1430
  let r = u[e];
1377
- return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(Dt(t, n));
1431
+ return !r || !r.isAvailable ? { available: !0 } : r.isAvailable(Nt(t, n));
1378
1432
  }
1379
- function kt(e, t) {
1433
+ function Ft(e, t) {
1380
1434
  let n = Object.keys(u), r = {};
1381
- for (let i of n) r[i] = Ot(i, e, t);
1435
+ for (let i of n) r[i] = Pt(i, e, t);
1382
1436
  return r;
1383
1437
  }
1384
- function At(e, t, n) {
1385
- if (Ot(n, e, t).available || e.length === 0 && t.length === 0) return n;
1386
- let r = Et(t).length > 0, i = Tt(t).length > 0, a = e.length > 0;
1438
+ function It(e, t, n) {
1439
+ if (Pt(n, e, t).available || e.length === 0 && t.length === 0) return n;
1440
+ let r = Mt(t).length > 0, i = jt(t).length > 0, a = e.length > 0;
1387
1441
  return r && a ? "line" : i && a ? "bar" : a && !i && !r ? "kpiNumber" : "table";
1388
1442
  }
1389
- function jt(e, t, n) {
1390
- let r = At(e, t, n);
1443
+ function Lt(e, t, n) {
1444
+ let r = It(e, t, n);
1391
1445
  return {
1392
1446
  chartType: r,
1393
- chartConfig: Mt(r, e, t)
1447
+ chartConfig: Rt(r, e, t)
1394
1448
  };
1395
1449
  }
1396
- function Mt(e, t, n) {
1397
- return xt(e)({
1450
+ function Rt(e, t, n) {
1451
+ return Dt(e)({
1398
1452
  metrics: t,
1399
1453
  breakdowns: n,
1400
- timeDimension: Ct(n),
1401
- dimension: wt(n),
1402
- dimensions: Tt(n)
1454
+ timeDimension: kt(n),
1455
+ dimension: At(n),
1456
+ dimensions: jt(n)
1403
1457
  });
1404
1458
  }
1405
- function Nt(e, t, n, r) {
1406
- if (r && Ot(n, e, t).available) return null;
1407
- let i = At(e, t, n);
1459
+ function zt(e, t, n, r) {
1460
+ if (r && Pt(n, e, t).available) return null;
1461
+ let i = It(e, t, n);
1408
1462
  return i === n ? null : i;
1409
1463
  }
1410
1464
  //#endregion
1411
1465
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanelParts.tsx
1412
- function Pt({ title: e, height: t, className: n, children: r }) {
1413
- return /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q("h4", {
1466
+ function Bt({ title: e, height: t, className: n, children: r }) {
1467
+ return /* @__PURE__ */ q(be, { children: [/* @__PURE__ */ K("h4", {
1414
1468
  className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
1415
1469
  children: e
1416
- }), /* @__PURE__ */ q("div", {
1470
+ }), /* @__PURE__ */ K("div", {
1417
1471
  className: n,
1418
1472
  style: { height: t },
1419
1473
  children: r
1420
1474
  })] });
1421
1475
  }
1422
- function Ft({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
1476
+ function Vt({ sql: e, sqlLoading: t, sqlError: n, sqlPlaceholder: r, formattedSql: i, title: a, height: o, headerRight: s }) {
1423
1477
  let { t: c } = z();
1424
- return t ? /* @__PURE__ */ q(Pt, {
1478
+ return t ? /* @__PURE__ */ K(Bt, {
1425
1479
  title: a,
1426
1480
  height: o,
1427
1481
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
1428
1482
  children: c("results.debug.loadingSql")
1429
- }) : n ? /* @__PURE__ */ q(Pt, {
1483
+ }) : n ? /* @__PURE__ */ K(Bt, {
1430
1484
  title: a,
1431
1485
  height: o,
1432
1486
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
1433
1487
  children: n.message
1434
- }) : e ? /* @__PURE__ */ q(m, {
1488
+ }) : e ? /* @__PURE__ */ K(m, {
1435
1489
  code: i,
1436
1490
  language: "sql",
1437
1491
  title: a,
1438
1492
  height: o,
1439
1493
  headerRight: s
1440
- }) : /* @__PURE__ */ q(Pt, {
1494
+ }) : /* @__PURE__ */ K(Bt, {
1441
1495
  title: a,
1442
1496
  height: o,
1443
1497
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm",
1444
1498
  children: r
1445
1499
  });
1446
1500
  }
1447
- function It({ summary: e }) {
1501
+ function Ht({ summary: e }) {
1448
1502
  let { t } = z();
1449
- return /* @__PURE__ */ J("div", {
1503
+ return /* @__PURE__ */ q("div", {
1450
1504
  className: "dc:flex dc:flex-wrap dc:items-center dc:gap-2",
1451
1505
  children: [
1452
- /* @__PURE__ */ q("span", {
1506
+ /* @__PURE__ */ K("span", {
1453
1507
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-accent text-white dc:rounded-sm",
1454
1508
  children: e.database.toUpperCase()
1455
1509
  }),
1456
- e.hasSequentialScans && /* @__PURE__ */ q("span", {
1510
+ e.hasSequentialScans && /* @__PURE__ */ K("span", {
1457
1511
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-warning-bg text-dc-warning dc:border border-dc-warning dc:rounded-sm",
1458
1512
  children: t("debug.sequentialScans")
1459
1513
  }),
1460
- e.usedIndexes.length > 0 && /* @__PURE__ */ q("span", {
1514
+ e.usedIndexes.length > 0 && /* @__PURE__ */ K("span", {
1461
1515
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-success-bg text-dc-success dc:border border-dc-success dc:rounded-sm",
1462
1516
  children: t(e.usedIndexes.length === 1 ? "debug.indexesUsed" : "debug.indexesUsedPlural", { count: e.usedIndexes.length })
1463
1517
  }),
1464
- e.executionTime !== void 0 && /* @__PURE__ */ q("span", {
1518
+ e.executionTime !== void 0 && /* @__PURE__ */ K("span", {
1465
1519
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
1466
1520
  children: t("debug.executionTime", { time: e.executionTime.toFixed(2) })
1467
1521
  }),
1468
- e.planningTime !== void 0 && /* @__PURE__ */ q("span", {
1522
+ e.planningTime !== void 0 && /* @__PURE__ */ K("span", {
1469
1523
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
1470
1524
  children: t("debug.planningTime", { time: e.planningTime.toFixed(2) })
1471
1525
  }),
1472
- e.totalCost !== void 0 && /* @__PURE__ */ q("span", {
1526
+ e.totalCost !== void 0 && /* @__PURE__ */ K("span", {
1473
1527
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium bg-dc-surface-secondary text-dc-text-secondary dc:border border-dc-border dc:rounded-sm",
1474
1528
  children: t("debug.cost", { cost: e.totalCost.toFixed(2) })
1475
1529
  })
1476
1530
  ]
1477
1531
  });
1478
1532
  }
1479
- function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
1533
+ function Ut({ explainLoading: e, explainError: t, explainResult: n, useAnalyze: r, aiButton: i }) {
1480
1534
  let { t: a } = z();
1481
- return e ? /* @__PURE__ */ q("div", {
1535
+ return e ? /* @__PURE__ */ K("div", {
1482
1536
  className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded-sm dc:p-3 text-dc-text-muted dc:text-sm dc:animate-pulse",
1483
1537
  children: a(r ? "debug.explainRunningAnalyze" : "debug.explainRunningBasic")
1484
- }) : t ? /* @__PURE__ */ J("div", {
1538
+ }) : t ? /* @__PURE__ */ q("div", {
1485
1539
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
1486
1540
  children: [
1487
- /* @__PURE__ */ q("strong", { children: a("debug.explainError") }),
1541
+ /* @__PURE__ */ K("strong", { children: a("debug.explainError") }),
1488
1542
  " ",
1489
1543
  t.message
1490
1544
  ]
1491
- }) : n ? /* @__PURE__ */ J("div", {
1545
+ }) : n ? /* @__PURE__ */ q("div", {
1492
1546
  className: "dc:space-y-3",
1493
1547
  children: [
1494
- /* @__PURE__ */ q(It, { summary: n.summary }),
1495
- n.summary.usedIndexes.length > 0 && /* @__PURE__ */ J("div", {
1548
+ /* @__PURE__ */ K(Ht, { summary: n.summary }),
1549
+ n.summary.usedIndexes.length > 0 && /* @__PURE__ */ q("div", {
1496
1550
  className: "dc:text-xs text-dc-text-muted",
1497
1551
  children: [
1498
- /* @__PURE__ */ q("strong", { children: a("debug.indexes") }),
1552
+ /* @__PURE__ */ K("strong", { children: a("debug.indexes") }),
1499
1553
  " ",
1500
1554
  n.summary.usedIndexes.join(", ")
1501
1555
  ]
1502
1556
  }),
1503
- /* @__PURE__ */ q(m, {
1557
+ /* @__PURE__ */ K(m, {
1504
1558
  code: n.raw,
1505
1559
  language: "sql",
1506
1560
  title: a("debug.executionPlanTitle", { database: n.summary.database }),
@@ -1512,24 +1566,24 @@ function Lt({ explainLoading: e, explainError: t, explainResult: n, useAnalyze:
1512
1566
  }
1513
1567
  //#endregion
1514
1568
  //#region src/client/components/AnalysisBuilder/ExecutionPlanPanel.tsx
1515
- var Rt = ve(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" }) {
1569
+ var Wt = ve(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" }) {
1516
1570
  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 = () => {
1517
1571
  f && i && h && (f(i, h), S(!0));
1518
1572
  }, T = () => {
1519
1573
  S(!1);
1520
- }, E = m && i ? /* @__PURE__ */ q("button", {
1574
+ }, E = m && i ? /* @__PURE__ */ K("button", {
1521
1575
  onClick: w,
1522
1576
  disabled: u,
1523
1577
  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",
1524
- children: u ? /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ q("span", {
1578
+ children: u ? /* @__PURE__ */ q(be, { children: [/* @__PURE__ */ K("span", {
1525
1579
  className: "dc:animate-spin",
1526
1580
  children: "⟳"
1527
- }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ q(K, { children: `✨ ${v("debug.aiAnalysis")}` })
1581
+ }), v("debug.aiAnalyzing")] }) : /* @__PURE__ */ K(be, { children: `✨ ${v("debug.aiAnalysis")}` })
1528
1582
  }) : null;
1529
- return /* @__PURE__ */ J("div", {
1583
+ return /* @__PURE__ */ q("div", {
1530
1584
  className: "dc:space-y-3",
1531
1585
  children: [
1532
- /* @__PURE__ */ q(Ft, {
1586
+ /* @__PURE__ */ K(Vt, {
1533
1587
  sql: e,
1534
1588
  sqlLoading: t,
1535
1589
  sqlError: n,
@@ -1537,37 +1591,37 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
1537
1591
  formattedSql: C,
1538
1592
  title: g,
1539
1593
  height: _,
1540
- headerRight: /* @__PURE__ */ J(K, { children: [/* @__PURE__ */ J("label", {
1594
+ headerRight: /* @__PURE__ */ q(be, { children: [/* @__PURE__ */ q("label", {
1541
1595
  className: "dc:flex dc:items-center dc:gap-1 dc:text-xs text-dc-text-secondary dc:cursor-pointer",
1542
- children: [/* @__PURE__ */ q("input", {
1596
+ children: [/* @__PURE__ */ K("input", {
1543
1597
  type: "checkbox",
1544
1598
  checked: y,
1545
1599
  onChange: (e) => b(e.target.checked),
1546
1600
  className: "dc:w-3 dc:h-3 dc:rounded-sm border-dc-border text-dc-accent focus:ring-dc-accent"
1547
1601
  }), v("debug.explainIncludeTiming")]
1548
- }), /* @__PURE__ */ q("button", {
1602
+ }), /* @__PURE__ */ K("button", {
1549
1603
  onClick: () => c({ analyze: y }),
1550
1604
  disabled: a,
1551
1605
  className: "dc:px-2 dc:py-1 dc:text-xs dc:font-medium dc:rounded-sm dc:border border-dc-border bg-dc-surface hover:bg-dc-surface-hover text-dc-text-secondary hover:text-dc-text dc:transition-colors dc:disabled:opacity-50 dc:disabled:cursor-not-allowed",
1552
1606
  children: v(a ? "debug.explainRunning" : "debug.explainPlan")
1553
1607
  })] })
1554
1608
  }),
1555
- o && /* @__PURE__ */ q("div", { children: /* @__PURE__ */ q(Lt, {
1609
+ o && /* @__PURE__ */ K("div", { children: /* @__PURE__ */ K(Ut, {
1556
1610
  explainLoading: a,
1557
1611
  explainError: s,
1558
1612
  explainResult: i,
1559
1613
  useAnalyze: y,
1560
1614
  aiButton: E
1561
1615
  }) }),
1562
- d && /* @__PURE__ */ J("div", {
1616
+ d && /* @__PURE__ */ q("div", {
1563
1617
  className: "text-dc-error dc:text-sm bg-dc-danger-bg dc:p-3 dc:rounded-sm dc:border border-dc-error",
1564
1618
  children: [
1565
- /* @__PURE__ */ q("strong", { children: v("debug.aiAnalysisError") }),
1619
+ /* @__PURE__ */ K("strong", { children: v("debug.aiAnalysisError") }),
1566
1620
  " ",
1567
1621
  d.message
1568
1622
  ]
1569
1623
  }),
1570
- x && l && /* @__PURE__ */ q(at, {
1624
+ x && l && /* @__PURE__ */ K(dt, {
1571
1625
  analysis: l,
1572
1626
  onClose: T
1573
1627
  })
@@ -1576,7 +1630,7 @@ var Rt = ve(function({ sql: e, sqlLoading: t = !1, sqlError: n, sqlPlaceholder:
1576
1630
  });
1577
1631
  //#endregion
1578
1632
  //#region src/client/adapters/queryModeAdapter.ts
1579
- function zt() {
1633
+ function Gt() {
1580
1634
  return {
1581
1635
  metrics: [],
1582
1636
  breakdowns: [],
@@ -1587,10 +1641,10 @@ function zt() {
1587
1641
  validationError: null
1588
1642
  };
1589
1643
  }
1590
- function Bt(e) {
1644
+ function Kt(e) {
1591
1645
  return e.map((e) => e.field);
1592
1646
  }
1593
- function Vt(e, t) {
1647
+ function qt(e, t) {
1594
1648
  let n = [], r = [];
1595
1649
  for (let i of e) if (i.isTimeDimension) {
1596
1650
  let e = {
@@ -1598,7 +1652,7 @@ function Vt(e, t) {
1598
1652
  granularity: i.granularity || "day"
1599
1653
  };
1600
1654
  if (i.enableComparison) {
1601
- let n = we(i.field, t);
1655
+ let n = Ae(i.field, t);
1602
1656
  n && (e.compareDateRange = n);
1603
1657
  }
1604
1658
  r.push(e);
@@ -1608,21 +1662,21 @@ function Vt(e, t) {
1608
1662
  timeDimensions: r
1609
1663
  };
1610
1664
  }
1611
- function Ht(e) {
1612
- let { dimensions: t, timeDimensions: n } = Vt(e.breakdowns, e.filters), r = {
1613
- measures: Bt(e.metrics),
1665
+ function Jt(e) {
1666
+ let { dimensions: t, timeDimensions: n } = qt(e.breakdowns, e.filters), r = {
1667
+ measures: Kt(e.metrics),
1614
1668
  dimensions: t
1615
1669
  };
1616
1670
  return n.length > 0 && (r.timeDimensions = n), e.filters.length > 0 && (r.filters = e.filters), e.order && Object.keys(e.order).length > 0 && (r.order = e.order), e.limit != null && (r.limit = e.limit), r;
1617
1671
  }
1618
- function Ut(e) {
1672
+ function Yt(e) {
1619
1673
  return e.map((e, t) => ({
1620
1674
  id: f(),
1621
1675
  field: e,
1622
1676
  label: w(t)
1623
1677
  }));
1624
1678
  }
1625
- function Wt(e) {
1679
+ function Xt(e) {
1626
1680
  let t = [];
1627
1681
  if (e.dimensions) for (let n of e.dimensions) t.push({
1628
1682
  id: f(),
@@ -1641,10 +1695,10 @@ function Wt(e) {
1641
1695
  }
1642
1696
  return t;
1643
1697
  }
1644
- function Gt(e) {
1698
+ function Zt(e) {
1645
1699
  return {
1646
- metrics: Ut(e.measures || []),
1647
- breakdowns: Wt(e),
1700
+ metrics: Yt(e.measures || []),
1701
+ breakdowns: Xt(e),
1648
1702
  filters: e.filters || [],
1649
1703
  order: e.order,
1650
1704
  limit: e.limit,
@@ -1652,14 +1706,14 @@ function Gt(e) {
1652
1706
  validationError: null
1653
1707
  };
1654
1708
  }
1655
- function Kt(e) {
1709
+ function Qt(e) {
1656
1710
  return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
1657
1711
  }
1658
1712
  var X = {
1659
1713
  type: "query",
1660
1714
  createInitial() {
1661
1715
  return {
1662
- queryStates: [zt()],
1716
+ queryStates: [Gt()],
1663
1717
  activeQueryIndex: 0,
1664
1718
  mergeStrategy: "concat"
1665
1719
  };
@@ -1679,22 +1733,22 @@ var X = {
1679
1733
  load(e) {
1680
1734
  if (e.analysisType !== "query") throw Error(`Cannot load ${e.analysisType} config with query adapter`);
1681
1735
  let t = e;
1682
- if (Kt(t.query)) {
1683
- let e = t.query, n = e.queries.map(Gt);
1684
- return n.length === 0 && n.push(zt()), {
1736
+ if (Qt(t.query)) {
1737
+ let e = t.query, n = e.queries.map(Zt);
1738
+ return n.length === 0 && n.push(Gt()), {
1685
1739
  queryStates: n,
1686
1740
  activeQueryIndex: 0,
1687
1741
  mergeStrategy: e.mergeStrategy || "concat"
1688
1742
  };
1689
1743
  }
1690
1744
  return {
1691
- queryStates: [Gt(t.query)],
1745
+ queryStates: [Zt(t.query)],
1692
1746
  activeQueryIndex: 0,
1693
1747
  mergeStrategy: "concat"
1694
1748
  };
1695
1749
  },
1696
1750
  save(e, t, n) {
1697
- let r = e.queryStates.map(Ht), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
1751
+ let r = e.queryStates.map(Jt), i = r.length === 1 && e.mergeStrategy === "concat" ? r[0] : {
1698
1752
  queries: r,
1699
1753
  mergeStrategy: e.mergeStrategy
1700
1754
  };
@@ -1735,30 +1789,30 @@ var X = {
1735
1789
  }
1736
1790
  };
1737
1791
  }
1738
- }, Z = /* @__PURE__ */ new Map(), qt = !1;
1739
- function Jt() {
1740
- qt ||= (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);
1792
+ }, Z = /* @__PURE__ */ new Map(), $t = !1;
1793
+ function en() {
1794
+ $t ||= (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);
1741
1795
  }
1742
1796
  var Q = {
1743
1797
  register(e) {
1744
1798
  Z.has(e.type) && console.warn(`[adapterRegistry] Overwriting existing adapter for type: ${e.type}`), Z.set(e.type, e);
1745
1799
  },
1746
1800
  get(e) {
1747
- Jt();
1801
+ en();
1748
1802
  let t = Z.get(e);
1749
1803
  if (!t) throw Error(`[adapterRegistry] No adapter registered for type: ${e}. Available types: ${Array.from(Z.keys()).join(", ") || "none"}`);
1750
1804
  return t;
1751
1805
  },
1752
1806
  has(e) {
1753
- return Jt(), Z.has(e);
1807
+ return en(), Z.has(e);
1754
1808
  },
1755
1809
  getRegisteredTypes() {
1756
- return Jt(), Array.from(Z.keys());
1810
+ return en(), Array.from(Z.keys());
1757
1811
  },
1758
1812
  clear() {
1759
- Z.clear(), qt = !1;
1813
+ Z.clear(), $t = !1;
1760
1814
  }
1761
- }, Yt = () => ({
1815
+ }, tn = () => ({
1762
1816
  analysisType: "query",
1763
1817
  charts: {
1764
1818
  query: X.getDefaultChartConfig(),
@@ -1774,8 +1828,8 @@ var Q = {
1774
1828
  },
1775
1829
  userManuallySelectedChart: !1,
1776
1830
  localPaletteName: "default"
1777
- }), Xt = (e, t, n) => ({
1778
- ...Yt(),
1831
+ }), nn = (e, t, n) => ({
1832
+ ...tn(),
1779
1833
  setAnalysisType: (t) => {
1780
1834
  e((e) => {
1781
1835
  let n = { ...e.charts };
@@ -1988,12 +2042,12 @@ var Q = {
1988
2042
  ...u
1989
2043
  });
1990
2044
  }
1991
- }), Zt = () => ({
2045
+ }), rn = () => ({
1992
2046
  queryStates: [Y()],
1993
2047
  activeQueryIndex: 0,
1994
2048
  mergeStrategy: "concat"
1995
- }), Qt = (e, t, n) => ({
1996
- ...Zt(),
2049
+ }), an = (e, t, n) => ({
2050
+ ...rn(),
1997
2051
  setQueryStates: (t) => e({ queryStates: t }),
1998
2052
  updateQueryState: (t, n) => e((e) => {
1999
2053
  let r = [...e.queryStates];
@@ -2145,7 +2199,7 @@ var Q = {
2145
2199
  member: l.field,
2146
2200
  operator: "inDateRange",
2147
2201
  values: [],
2148
- dateRange: I("last_n_months", 3)
2202
+ dateRange: F("last_n_months", 3)
2149
2203
  };
2150
2204
  s[c] = {
2151
2205
  ...s[c],
@@ -2234,11 +2288,11 @@ var Q = {
2234
2288
  },
2235
2289
  buildCurrentQuery: () => {
2236
2290
  let e = t(), n = e.queryStates[e.activeQueryIndex] || Y(), r = l(e.charts[e.analysisType]?.chartType ?? "");
2237
- return Ee(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r);
2291
+ return Me(n.metrics, n.breakdowns, n.filters, n.order, !1, n.limit, r);
2238
2292
  },
2239
2293
  buildAllQueries: () => {
2240
2294
  let e = t(), n = e.queryStates[0]?.breakdowns || [], r = l(e.charts[e.analysisType]?.chartType ?? "");
2241
- return e.queryStates.map((t, i) => Ee(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r));
2295
+ return e.queryStates.map((t, i) => Me(t.metrics, e.mergeStrategy === "merge" && i > 0 ? n : t.breakdowns, t.filters, t.order, !1, t.limit, r));
2242
2296
  },
2243
2297
  buildMultiQueryConfig: () => {
2244
2298
  let e = t();
@@ -2251,15 +2305,15 @@ var Q = {
2251
2305
  queryLabels: n.map((e, t) => `Q${t + 1}`)
2252
2306
  };
2253
2307
  }
2254
- }), $t = () => ({
2308
+ }), on = () => ({
2255
2309
  funnelCube: null,
2256
2310
  funnelSteps: [],
2257
2311
  activeFunnelStepIndex: 0,
2258
2312
  funnelTimeDimension: null,
2259
2313
  funnelBindingKey: null,
2260
2314
  stepTimeToConvert: []
2261
- }), en = (e, t, n) => ({
2262
- ...$t(),
2315
+ }), sn = (e, t, n) => ({
2316
+ ...on(),
2263
2317
  addFunnelStep: () => e((e) => {
2264
2318
  let t = e.funnelSteps[e.funnelSteps.length - 1], n = {
2265
2319
  id: f(),
@@ -2327,7 +2381,7 @@ var Q = {
2327
2381
  let e = t();
2328
2382
  return e.analysisType !== "funnel" || !e.funnelBindingKey || !e.funnelTimeDimension || e.funnelSteps.length < 2 ? !1 : e.funnelSteps.filter((e) => e.cube && e.name).length >= 2;
2329
2383
  }
2330
- }), tn = () => ({
2384
+ }), cn = () => ({
2331
2385
  flowCube: null,
2332
2386
  flowBindingKey: null,
2333
2387
  flowTimeDimension: null,
@@ -2339,8 +2393,8 @@ var Q = {
2339
2393
  stepsAfter: 3,
2340
2394
  eventDimension: null,
2341
2395
  joinStrategy: "auto"
2342
- }), nn = (e, t, n) => ({
2343
- ...tn(),
2396
+ }), ln = (e, t, n) => ({
2397
+ ...cn(),
2344
2398
  setFlowCube: (t) => e(() => ({
2345
2399
  flowCube: t,
2346
2400
  flowBindingKey: null,
@@ -2410,8 +2464,8 @@ var Q = {
2410
2464
  joinStrategy: e.joinStrategy
2411
2465
  } };
2412
2466
  }
2413
- }), rn = () => ({ ...D }), an = (e, t, n) => ({
2414
- ...rn(),
2467
+ }), un = () => ({ ...D }), dn = (e, t, n) => ({
2468
+ ...un(),
2415
2469
  setRetentionCube: (t) => e(() => ({
2416
2470
  retentionCube: t,
2417
2471
  retentionTimeDimension: null,
@@ -2486,22 +2540,22 @@ var Q = {
2486
2540
  warnings: r
2487
2541
  };
2488
2542
  }
2489
- }), on = {
2543
+ }), fn = {
2490
2544
  isOpen: !1,
2491
2545
  userPrompt: "",
2492
2546
  isGenerating: !1,
2493
2547
  error: null,
2494
2548
  hasGeneratedQuery: !1,
2495
2549
  previousState: null
2496
- }, sn = () => ({
2550
+ }, pn = () => ({
2497
2551
  activeTab: "query",
2498
2552
  activeView: "chart",
2499
2553
  displayLimit: 100,
2500
2554
  showFieldModal: !1,
2501
2555
  fieldModalMode: "metrics",
2502
- aiState: on
2503
- }), cn = (e, t, n) => ({
2504
- ...sn(),
2556
+ aiState: fn
2557
+ }), mn = (e, t, n) => ({
2558
+ ...pn(),
2505
2559
  setActiveTab: (t) => e({ activeTab: t }),
2506
2560
  setActiveView: (t) => e((e) => ({
2507
2561
  activeView: t,
@@ -2585,13 +2639,13 @@ var Q = {
2585
2639
  displayConfig: t.displayConfig
2586
2640
  }
2587
2641
  },
2588
- aiState: { ...on }
2642
+ aiState: { ...fn }
2589
2643
  };
2590
2644
  })
2591
2645
  });
2592
2646
  //#endregion
2593
2647
  //#region src/client/stores/optionsToAnalysisConfig.ts
2594
- function ln(e) {
2648
+ function hn(e) {
2595
2649
  let t = e.filters ? [...e.filters] : [], n = e.timeDimensions || [], r = [...(e.dimensions || []).map((e) => ({
2596
2650
  id: f(),
2597
2651
  field: e,
@@ -2634,10 +2688,10 @@ function ln(e) {
2634
2688
  order: e.order
2635
2689
  };
2636
2690
  }
2637
- function un(e) {
2691
+ function gn(e) {
2638
2692
  return "queries" in e && Array.isArray(e.queries);
2639
2693
  }
2640
- function dn(e, t) {
2694
+ function _n(e, t) {
2641
2695
  let n = e.getDefaultChartConfig();
2642
2696
  return {
2643
2697
  chartType: t?.chartType || n.chartType,
@@ -2645,21 +2699,21 @@ function dn(e, t) {
2645
2699
  displayConfig: t?.displayConfig || n.displayConfig
2646
2700
  };
2647
2701
  }
2648
- function fn(e) {
2702
+ function vn(e) {
2649
2703
  return e.initialActiveView || "chart";
2650
2704
  }
2651
- function pn(e) {
2652
- let t = dn(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
2705
+ function yn(e) {
2706
+ let t = _n(v, e.initialChartConfig), n = e.initialFunnelState ?? {};
2653
2707
  return v.save({
2654
2708
  funnelCube: n.funnelCube ?? null,
2655
2709
  funnelSteps: n.funnelSteps || [],
2656
2710
  activeFunnelStepIndex: 0,
2657
2711
  funnelTimeDimension: n.funnelTimeDimension ?? null,
2658
2712
  funnelBindingKey: n.funnelBindingKey ?? null
2659
- }, { funnel: t }, fn(e));
2713
+ }, { funnel: t }, vn(e));
2660
2714
  }
2661
- function mn(e) {
2662
- let t = dn(_, e.initialChartConfig), n = e.initialFlowState ?? {};
2715
+ function bn(e) {
2716
+ let t = _n(_, e.initialChartConfig), n = e.initialFlowState ?? {};
2663
2717
  return _.save({
2664
2718
  flowCube: n.flowCube ?? null,
2665
2719
  flowBindingKey: n.flowBindingKey ?? null,
@@ -2672,10 +2726,10 @@ function mn(e) {
2672
2726
  stepsAfter: n.stepsAfter ?? 3,
2673
2727
  eventDimension: n.eventDimension ?? null,
2674
2728
  joinStrategy: n.joinStrategy ?? "auto"
2675
- }, { flow: t }, fn(e));
2729
+ }, { flow: t }, vn(e));
2676
2730
  }
2677
- function hn(e) {
2678
- let t = dn(S, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = O(k);
2731
+ function xn(e) {
2732
+ let t = _n(S, e.initialChartConfig), n = e.initialRetentionState ?? {}, r = O(k);
2679
2733
  return S.save({
2680
2734
  retentionCube: n.retentionCube ?? null,
2681
2735
  retentionBindingKey: n.retentionBindingKey ?? null,
@@ -2687,47 +2741,47 @@ function hn(e) {
2687
2741
  retentionViewGranularity: n.retentionViewGranularity ?? "week",
2688
2742
  retentionPeriods: n.retentionPeriods ?? 12,
2689
2743
  retentionType: n.retentionType ?? "classic"
2690
- }, { retention: t }, fn(e));
2744
+ }, { retention: t }, vn(e));
2691
2745
  }
2692
- function gn(e, t) {
2746
+ function Sn(e, t) {
2693
2747
  let n, r = "concat";
2694
- un(t) ? (n = t.queries.map(ln), t.mergeStrategy && (r = t.mergeStrategy)) : n = [ln(t)];
2695
- let i = dn(X, e.initialChartConfig);
2748
+ gn(t) ? (n = t.queries.map(hn), t.mergeStrategy && (r = t.mergeStrategy)) : n = [hn(t)];
2749
+ let i = _n(X, e.initialChartConfig);
2696
2750
  return X.save({
2697
2751
  queryStates: n,
2698
2752
  activeQueryIndex: 0,
2699
2753
  mergeStrategy: r
2700
- }, { query: i }, fn(e));
2754
+ }, { query: i }, vn(e));
2701
2755
  }
2702
- function _n(e) {
2703
- let t = dn(X, e.initialChartConfig);
2756
+ function Cn(e) {
2757
+ let t = _n(X, e.initialChartConfig);
2704
2758
  return X.save({
2705
2759
  queryStates: [Y()],
2706
2760
  activeQueryIndex: 0,
2707
2761
  mergeStrategy: "concat"
2708
- }, { query: t }, fn(e));
2762
+ }, { query: t }, vn(e));
2709
2763
  }
2710
- function vn(e) {
2764
+ function wn(e) {
2711
2765
  return X.save({
2712
2766
  queryStates: [Y()],
2713
2767
  activeQueryIndex: 0,
2714
2768
  mergeStrategy: "concat"
2715
2769
  }, { query: X.getDefaultChartConfig() }, e.initialActiveView);
2716
2770
  }
2717
- function yn(e) {
2718
- return e.initialAnalysisType === "funnel" && e.initialFunnelState ? pn(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? mn(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? hn(e) : e.initialQuery ? gn(e, e.initialQuery) : e.initialChartConfig ? _n(e) : e.initialActiveView ? vn(e) : null;
2771
+ function Tn(e) {
2772
+ return e.initialAnalysisType === "funnel" && e.initialFunnelState ? yn(e) : e.initialAnalysisType === "flow" && e.initialFlowState ? bn(e) : e.initialAnalysisType === "retention" && e.initialRetentionState ? xn(e) : e.initialQuery ? Sn(e, e.initialQuery) : e.initialChartConfig ? Cn(e) : e.initialActiveView ? wn(e) : null;
2719
2773
  }
2720
2774
  //#endregion
2721
2775
  //#region src/client/stores/analysisBuilderStore.tsx
2722
- function bn(e, t) {
2776
+ function En(e, t) {
2723
2777
  return {
2724
2778
  reset: () => {
2725
2779
  e({
2726
- ...Yt(),
2727
- ...Zt(),
2728
- ...$t(),
2729
2780
  ...tn(),
2730
2781
  ...rn(),
2782
+ ...on(),
2783
+ ...cn(),
2784
+ ...un(),
2731
2785
  charts: {
2732
2786
  query: X.getDefaultChartConfig(),
2733
2787
  funnel: v.getDefaultChartConfig(),
@@ -2745,28 +2799,28 @@ function bn(e, t) {
2745
2799
  clearCurrentMode: () => e((e) => {
2746
2800
  switch (e.analysisType) {
2747
2801
  case "funnel": return {
2748
- ...$t(),
2802
+ ...on(),
2749
2803
  charts: {
2750
2804
  ...e.charts,
2751
2805
  funnel: v.getDefaultChartConfig()
2752
2806
  }
2753
2807
  };
2754
2808
  case "flow": return {
2755
- ...tn(),
2809
+ ...cn(),
2756
2810
  charts: {
2757
2811
  ...e.charts,
2758
2812
  flow: _.getDefaultChartConfig()
2759
2813
  }
2760
2814
  };
2761
2815
  case "retention": return {
2762
- ...rn(),
2816
+ ...un(),
2763
2817
  charts: {
2764
2818
  ...e.charts,
2765
2819
  retention: S.getDefaultChartConfig()
2766
2820
  }
2767
2821
  };
2768
2822
  default: return {
2769
- ...Zt(),
2823
+ ...rn(),
2770
2824
  userManuallySelectedChart: !1,
2771
2825
  charts: {
2772
2826
  ...e.charts,
@@ -2792,15 +2846,15 @@ function bn(e, t) {
2792
2846
  }
2793
2847
  };
2794
2848
  }
2795
- function xn(n = {}) {
2796
- let r = yn(n), o = (e, t, n) => ({
2797
- ...Xt(e, t, n),
2798
- ...Qt(e, t, n),
2799
- ...en(e, t, n),
2849
+ function Dn(n = {}) {
2850
+ let r = Tn(n), o = (e, t, n) => ({
2800
2851
  ...nn(e, t, n),
2801
2852
  ...an(e, t, n),
2802
- ...cn(e, t, n),
2803
- ...bn(e, t)
2853
+ ...sn(e, t, n),
2854
+ ...ln(e, t, n),
2855
+ ...dn(e, t, n),
2856
+ ...mn(e, t, n),
2857
+ ...En(e, t)
2804
2858
  });
2805
2859
  if (n.disableLocalStorage) {
2806
2860
  let t = a()(i(e(o), { name: "AnalysisBuilderStore (no-persist)" }));
@@ -2809,10 +2863,10 @@ function xn(n = {}) {
2809
2863
  return a()(i(e(t(o, {
2810
2864
  name: n.storageKey || "drizzle-cube-analysis-builder-v3",
2811
2865
  partialize: (e) => e.saveWorkspace(),
2812
- merge: (e, t) => e && j(e) ? {
2866
+ merge: (e, t) => e && A(e) ? {
2813
2867
  ...t,
2814
2868
  _persistedWorkspace: e
2815
- } : e && A(e) ? {
2869
+ } : e && ee(e) ? {
2816
2870
  ...t,
2817
2871
  _persistedConfig: e
2818
2872
  } : r ? {
@@ -2835,10 +2889,10 @@ function xn(n = {}) {
2835
2889
  }
2836
2890
  })), { name: "AnalysisBuilderStore" }));
2837
2891
  }
2838
- var Sn = _e(null);
2839
- function Cn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
2892
+ var On = _e(null);
2893
+ function kn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalStorage: r, storageKey: i, initialAnalysisType: a, initialFunnelState: o, initialFlowState: s, initialRetentionState: c, initialActiveView: l }) {
2840
2894
  let u = W(null);
2841
- return u.current ||= xn({
2895
+ return u.current ||= Dn({
2842
2896
  initialQuery: t,
2843
2897
  initialChartConfig: n,
2844
2898
  disableLocalStorage: r,
@@ -2848,22 +2902,22 @@ function Cn({ children: e, initialQuery: t, initialChartConfig: n, disableLocalS
2848
2902
  initialFlowState: s,
2849
2903
  initialRetentionState: c,
2850
2904
  initialActiveView: l
2851
- }), /* @__PURE__ */ q(Sn.Provider, {
2905
+ }), /* @__PURE__ */ K(On.Provider, {
2852
2906
  value: u.current,
2853
2907
  children: e
2854
2908
  });
2855
2909
  }
2856
2910
  function $(e) {
2857
- let t = ye(Sn);
2911
+ let t = ye(On);
2858
2912
  if (!t) throw Error("useAnalysisBuilderStore must be used within AnalysisBuilderStoreProvider");
2859
2913
  return r(t, e);
2860
2914
  }
2861
- function wn() {
2862
- let e = ye(Sn);
2915
+ function An() {
2916
+ let e = ye(On);
2863
2917
  if (!e) throw Error("useAnalysisBuilderStoreApi must be used within AnalysisBuilderStoreProvider");
2864
2918
  return e;
2865
2919
  }
2866
- var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metrics, Dn = (e) => Tn(e).breakdowns, On = (e) => Tn(e).filters, kn = (e) => {
2920
+ var jn = (e) => e.queryStates[e.activeQueryIndex] || Y(), Mn = (e) => jn(e).metrics, Nn = (e) => jn(e).breakdowns, Pn = (e) => jn(e).filters, Fn = (e) => {
2867
2921
  let t = e.charts[e.analysisType];
2868
2922
  return t ? {
2869
2923
  chartType: t.chartType,
@@ -2878,18 +2932,18 @@ var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metr
2878
2932
  showTooltip: !0
2879
2933
  }
2880
2934
  };
2881
- }, An = (e) => ({
2935
+ }, In = (e) => ({
2882
2936
  activeTab: e.activeTab,
2883
2937
  activeView: e.activeView,
2884
2938
  displayLimit: e.displayLimit,
2885
2939
  showFieldModal: e.showFieldModal,
2886
2940
  fieldModalMode: e.fieldModalMode
2887
- }), jn = (e) => ({
2941
+ }), Ln = (e) => ({
2888
2942
  queryStates: e.queryStates,
2889
2943
  activeQueryIndex: e.activeQueryIndex,
2890
2944
  mergeStrategy: e.mergeStrategy,
2891
2945
  isMultiQueryMode: e.analysisType === "query" && e.queryStates.length > 1
2892
- }), Mn = (e) => ({
2946
+ }), Rn = (e) => ({
2893
2947
  funnelCube: e.funnelCube,
2894
2948
  funnelSteps: e.funnelSteps,
2895
2949
  activeFunnelStepIndex: e.activeFunnelStepIndex,
@@ -2900,16 +2954,16 @@ var Tn = (e) => e.queryStates[e.activeQueryIndex] || Y(), En = (e) => Tn(e).metr
2900
2954
  });
2901
2955
  //#endregion
2902
2956
  //#region src/client/utils/multiQueryValidation.ts
2903
- function Nn(e) {
2957
+ function zn(e) {
2904
2958
  return e.timeDimensions || [];
2905
2959
  }
2906
- function Pn(e) {
2960
+ function Bn(e) {
2907
2961
  let t = [];
2908
2962
  if (e.length < 2) return t;
2909
- let n = Nn(e[0]);
2963
+ let n = zn(e[0]);
2910
2964
  if (n.length === 0) return t;
2911
2965
  for (let r = 1; r < e.length; r++) {
2912
- let i = Nn(e[r]);
2966
+ let i = zn(e[r]);
2913
2967
  if (i.length === 0 && n.length > 0) {
2914
2968
  t.push({
2915
2969
  type: "missing_time_dimension",
@@ -2935,7 +2989,7 @@ function Pn(e) {
2935
2989
  }
2936
2990
  return t;
2937
2991
  }
2938
- function Fn(e, t) {
2992
+ function Vn(e, t) {
2939
2993
  let n = [];
2940
2994
  if (e.length < 2 || t.length === 0) return n;
2941
2995
  for (let r = 0; r < e.length; r++) {
@@ -2949,7 +3003,7 @@ function Fn(e, t) {
2949
3003
  }
2950
3004
  return n;
2951
3005
  }
2952
- function In(e) {
3006
+ function Hn(e) {
2953
3007
  let t = [];
2954
3008
  if (e.length < 2) return t;
2955
3009
  let n = /* @__PURE__ */ new Map();
@@ -2968,7 +3022,7 @@ function In(e) {
2968
3022
  affectedMeasures: r
2969
3023
  }), t;
2970
3024
  }
2971
- function Ln(e) {
3025
+ function Un(e) {
2972
3026
  let t = [];
2973
3027
  if (e.length < 2) return t;
2974
3028
  let n = e.map((e) => e.timeDimensions?.[0]?.dateRange);
@@ -2978,38 +3032,38 @@ function Ln(e) {
2978
3032
  message: "Queries have different date ranges - some data points may be missing in merged results"
2979
3033
  }), t;
2980
3034
  }
2981
- function Rn(e, t, n = []) {
3035
+ function Wn(e, t, n = []) {
2982
3036
  let r = [], i = [];
2983
3037
  return e.length < 2 ? {
2984
3038
  isValid: !0,
2985
3039
  errors: r,
2986
3040
  warnings: i
2987
- } : (i.push(...In(e)), i.push(...Ln(e)), t === "merge" && (r.push(...Pn(e)), n.length > 0 && r.push(...Fn(e, n))), {
3041
+ } : (i.push(...Hn(e)), i.push(...Un(e)), t === "merge" && (r.push(...Bn(e)), n.length > 0 && r.push(...Vn(e, n))), {
2988
3042
  isValid: r.length === 0,
2989
3043
  errors: r,
2990
3044
  warnings: i
2991
3045
  });
2992
3046
  }
2993
- function zn(e) {
3047
+ function Gn(e) {
2994
3048
  return (e.measures?.length || 0) + (e.dimensions?.length || 0) + (e.timeDimensions?.length || 0);
2995
3049
  }
2996
- function Bn(e) {
2997
- return e.filter((e) => zn(e) > 0).length >= 2;
3050
+ function Kn(e) {
3051
+ return e.filter((e) => Gn(e) > 0).length >= 2;
2998
3052
  }
2999
- function Vn(e, t) {
3053
+ function qn(e, t) {
3000
3054
  return `${e} ${t}${e === 1 ? "" : "s"}`;
3001
3055
  }
3002
- function Hn(e) {
3056
+ function Jn(e) {
3003
3057
  if (e.isValid && e.warnings.length === 0) return "Configuration is valid";
3004
3058
  let t = [];
3005
- return e.errors.length > 0 && t.push(Vn(e.errors.length, "error")), e.warnings.length > 0 && t.push(Vn(e.warnings.length, "warning")), t.join(", ");
3059
+ return e.errors.length > 0 && t.push(qn(e.errors.length, "error")), e.warnings.length > 0 && t.push(qn(e.warnings.length, "warning")), t.join(", ");
3006
3060
  }
3007
3061
  //#endregion
3008
3062
  //#region src/client/hooks/useAnalysisState.ts
3009
- function Un(e = {}) {
3010
- let { externalColorPalette: t } = e, r = wn(), 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 = U(() => {
3063
+ function Yn(e = {}) {
3064
+ let { externalColorPalette: t } = e, r = An(), 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 = U(() => {
3011
3065
  let e = i[a] || g;
3012
- return Ee(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
3066
+ return Me(e.metrics, e.breakdowns, e.filters, e.order, !1, e.limit, y);
3013
3067
  }, [
3014
3068
  i,
3015
3069
  a,
@@ -3017,7 +3071,7 @@ function Un(e = {}) {
3017
3071
  y
3018
3072
  ]), x = U(() => {
3019
3073
  let e = i[0]?.breakdowns || [];
3020
- return i.map((t, n) => Ee(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
3074
+ return i.map((t, n) => Me(t.metrics, o === "merge" && n > 0 ? e : t.breakdowns, t.filters, t.order, !1, t.limit, y));
3021
3075
  }, [
3022
3076
  i,
3023
3077
  o,
@@ -3036,7 +3090,7 @@ function Un(e = {}) {
3036
3090
  i.length,
3037
3091
  o,
3038
3092
  v
3039
- ]), C = U(() => _ ? Rn(x, o, v || []) : null, [
3093
+ ]), C = U(() => _ ? Wn(x, o, v || []) : null, [
3040
3094
  _,
3041
3095
  x,
3042
3096
  o,
@@ -3073,51 +3127,51 @@ function Un(e = {}) {
3073
3127
  a,
3074
3128
  i,
3075
3129
  g.breakdowns
3076
- ]), 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 = U(() => O !== "funnel" || !k?.dimension || !M || !j || j.length < 2 ? !1 : j.every((e) => e.filters.length > 0), [
3130
+ ]), 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), [
3077
3131
  O,
3078
3132
  k,
3079
- M,
3080
- j
3081
- ]), te = $((e) => e.charts.funnel?.chartType) || "funnel", P = $((e) => e.charts.funnel?.chartConfig), ne = U(() => P || {}, [P]), re = $((e) => e.charts.funnel?.displayConfig), ie = U(() => re || {
3133
+ j,
3134
+ A
3135
+ ]), ne = $((e) => e.charts.funnel?.chartType) || "funnel", N = $((e) => e.charts.funnel?.chartConfig), re = U(() => N || {}, [N]), ie = $((e) => e.charts.funnel?.displayConfig), ae = U(() => ie || {
3082
3136
  showLegend: !0,
3083
3137
  showGrid: !0,
3084
3138
  showTooltip: !0
3085
- }, [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 = U(() => le || {
3139
+ }, [ie]), P = $((e) => e.flowCube), F = $((e) => e.flowBindingKey), oe = $((e) => e.flowTimeDimension), se = $((e) => e.eventDimension), I = $((e) => e.startingStep), L = $((e) => e.stepsBefore), ce = $((e) => e.stepsAfter), le = $((e) => e.joinStrategy), ue = $((e) => e.charts.flow?.displayConfig), de = U(() => ue || {
3086
3140
  showLegend: !0,
3087
3141
  showGrid: !0,
3088
3142
  showTooltip: !0
3089
- }, [le]), de = $((e) => e.charts.flow?.chartType) || "sankey", z = $((e) => e.buildFunnelQueryFromSteps), fe = U(() => O === "funnel" ? z() : null, [
3143
+ }, [ue]), R = $((e) => e.charts.flow?.chartType) || "sankey", z = $((e) => e.buildFunnelQueryFromSteps), fe = U(() => O === "funnel" ? z() : null, [
3090
3144
  O,
3091
3145
  z,
3092
- j
3146
+ A
3093
3147
  ]), pe = $((e) => e.buildFlowQuery), me = U(() => O === "flow" ? pe() : null, [
3094
3148
  O,
3095
3149
  pe,
3150
+ P,
3096
3151
  F,
3097
- I,
3098
- ae,
3099
3152
  oe,
3153
+ se,
3154
+ I,
3100
3155
  L,
3156
+ ce,
3101
3157
  R,
3102
- se,
3103
- de,
3104
- ce
3105
- ]), he = $((e) => e.retentionCube), ge = $((e) => e.retentionBindingKey), B = $((e) => e.retentionTimeDimension), _e = $((e) => e.retentionDateRange), ve = $((e) => e.retentionCohortFilters), ye = $((e) => e.retentionActivityFilters), H = $((e) => e.retentionBreakdowns), W = $((e) => e.retentionViewGranularity), K = $((e) => e.retentionPeriods), q = $((e) => e.retentionType), J = $((e) => e.buildRetentionQuery), be = $((e) => e.getRetentionValidation), xe = $((e) => e.charts.retention?.displayConfig), Se = U(() => O === "retention" ? J() : null, [
3158
+ le
3159
+ ]), he = $((e) => e.retentionCube), ge = $((e) => e.retentionBindingKey), B = $((e) => e.retentionTimeDimension), _e = $((e) => e.retentionDateRange), ve = $((e) => e.retentionCohortFilters), ye = $((e) => e.retentionActivityFilters), H = $((e) => e.retentionBreakdowns), W = $((e) => e.retentionViewGranularity), be = $((e) => e.retentionPeriods), K = $((e) => e.retentionType), q = $((e) => e.buildRetentionQuery), xe = $((e) => e.getRetentionValidation), J = $((e) => e.charts.retention?.displayConfig), Se = U(() => O === "retention" ? q() : null, [
3106
3160
  O,
3107
- J,
3161
+ q,
3108
3162
  he,
3109
3163
  ge,
3110
3164
  B,
3111
3165
  _e,
3112
3166
  H,
3113
3167
  W,
3168
+ be,
3114
3169
  K,
3115
- q,
3116
3170
  ve,
3117
3171
  ye
3118
- ]), Ce = U(() => O === "retention" ? be() : null, [
3172
+ ]), Ce = U(() => O === "retention" ? xe() : null, [
3119
3173
  O,
3120
- be,
3174
+ xe,
3121
3175
  he,
3122
3176
  ge,
3123
3177
  B,
@@ -3128,11 +3182,11 @@ function Un(e = {}) {
3128
3182
  me,
3129
3183
  fe,
3130
3184
  w
3131
- ]), { chartType: Te, chartConfig: Y, displayConfig: De } = $(n(kn)), 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) => {
3185
+ ]), { chartType: Te, chartConfig: Ee, displayConfig: De } = $(n(Fn)), Oe = $((e) => e.userManuallySelectedChart), ke = $((e) => e.localPaletteName), Ae = $((e) => e.setChartTypeManual), je = $((e) => e.setChartConfig), Y = $((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) => {
3132
3186
  if (O === "funnel") Ne(e);
3133
3187
  else {
3134
3188
  Ae(e);
3135
- let { chartConfig: t } = jt(T, E, e);
3189
+ let { chartConfig: t } = Lt(T, E, e);
3136
3190
  je(t);
3137
3191
  }
3138
3192
  }, [
@@ -3149,12 +3203,12 @@ function Un(e = {}) {
3149
3203
  Pe,
3150
3204
  je
3151
3205
  ]), Be = V((e) => {
3152
- O === "funnel" ? Fe(e) : Me(e);
3206
+ O === "funnel" ? Fe(e) : Y(e);
3153
3207
  }, [
3154
3208
  O,
3155
3209
  Fe,
3156
- Me
3157
- ]), Ve = U(() => kt(T, E), [T, E]), He = U(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3210
+ Y
3211
+ ]), Ve = U(() => Ft(T, E), [T, E]), He = U(() => t ? Array.isArray(t) && typeof t[0] == "string" ? {
3158
3212
  name: "custom",
3159
3213
  label: "Custom",
3160
3214
  colors: t,
@@ -3183,33 +3237,33 @@ function Un(e = {}) {
3183
3237
  displayConfig: e
3184
3238
  }
3185
3239
  } }));
3186
- }, [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), Ot = $((e) => e.setFunnelTimeDimension), At = $((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), Kt = $((e) => e.setRetentionBreakdowns), X = $((e) => e.addRetentionBreakdown), Z = $((e) => e.removeRetentionBreakdown), qt = $((e) => e.setRetentionViewGranularity), Jt = $((e) => e.setRetentionPeriods), Q = $((e) => e.setRetentionType), Yt = $((e) => e.getValidation), Xt = U(() => Yt(), [
3187
- Yt,
3240
+ }, [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), Ot = $((e) => e.setFunnelTimeDimension), kt = $((e) => e.setFlowCube), At = $((e) => e.setFlowBindingKey), jt = $((e) => e.setFlowTimeDimension), Mt = $((e) => e.setEventDimension), Nt = $((e) => e.setStartingStepName), Pt = $((e) => e.setStartingStepFilters), It = $((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), Kt = $((e) => e.setRetentionBreakdowns), qt = $((e) => e.addRetentionBreakdown), Jt = $((e) => e.removeRetentionBreakdown), Yt = $((e) => e.setRetentionViewGranularity), Xt = $((e) => e.setRetentionPeriods), Zt = $((e) => e.setRetentionType), Qt = $((e) => e.getValidation), X = U(() => Qt(), [
3241
+ Qt,
3188
3242
  i,
3189
3243
  O,
3190
- j,
3244
+ A,
3191
3245
  k,
3192
- M,
3246
+ j,
3247
+ P,
3193
3248
  F,
3194
- I,
3195
- ae,
3196
3249
  oe,
3197
- L,
3198
- R,
3199
3250
  se,
3200
- ce
3201
- ]), Zt = V((e, t) => {
3202
- O === "retention" && t === "dimension" ? X({ field: e.name }) : ut(e.name, t === "timeDimension");
3251
+ I,
3252
+ L,
3253
+ ce,
3254
+ le
3255
+ ]), Z = V((e, t) => {
3256
+ O === "retention" && t === "dimension" ? qt({ field: e.name }) : ut(e.name, t === "timeDimension");
3203
3257
  }, [
3204
3258
  O,
3205
- X,
3259
+ qt,
3206
3260
  ut
3207
- ]), Qt = V((e, t, n, r) => {
3208
- Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Zt(e, t), r || $e();
3261
+ ]), $t = V((e, t, n, r) => {
3262
+ Ye === "metrics" && t === "measure" ? at(e.name) : Ye === "breakdown" && Z(e, t), r || $e();
3209
3263
  }, [
3210
3264
  Ye,
3211
3265
  at,
3212
- Zt,
3266
+ Z,
3213
3267
  $e
3214
3268
  ]);
3215
3269
  return {
@@ -3231,24 +3285,24 @@ function Un(e = {}) {
3231
3285
  effectiveBreakdowns: D,
3232
3286
  analysisType: O,
3233
3287
  funnelBindingKey: k,
3234
- isFunnelModeEnabled: N,
3235
- funnelCube: A,
3236
- funnelSteps: j,
3237
- activeFunnelStepIndex: ee,
3238
- funnelTimeDimension: M,
3239
- funnelChartType: te,
3240
- funnelChartConfig: ne,
3241
- funnelDisplayConfig: ie,
3288
+ isFunnelModeEnabled: M,
3289
+ funnelCube: ee,
3290
+ funnelSteps: A,
3291
+ activeFunnelStepIndex: te,
3292
+ funnelTimeDimension: j,
3293
+ funnelChartType: ne,
3294
+ funnelChartConfig: re,
3295
+ funnelDisplayConfig: ae,
3242
3296
  serverFunnelQuery: fe,
3243
- flowCube: F,
3244
- flowBindingKey: I,
3245
- flowTimeDimension: ae,
3246
- eventDimension: oe,
3247
- startingStep: L,
3248
- stepsBefore: R,
3249
- stepsAfter: se,
3250
- joinStrategy: ce,
3251
- flowDisplayConfig: ue,
3297
+ flowCube: P,
3298
+ flowBindingKey: F,
3299
+ flowTimeDimension: oe,
3300
+ eventDimension: se,
3301
+ startingStep: I,
3302
+ stepsBefore: L,
3303
+ stepsAfter: ce,
3304
+ joinStrategy: le,
3305
+ flowDisplayConfig: de,
3252
3306
  serverFlowQuery: me,
3253
3307
  retentionCube: he,
3254
3308
  retentionBindingKey: ge,
@@ -3258,13 +3312,13 @@ function Un(e = {}) {
3258
3312
  retentionActivityFilters: ye,
3259
3313
  retentionBreakdowns: H,
3260
3314
  retentionViewGranularity: W,
3261
- retentionPeriods: K,
3262
- retentionType: q,
3263
- retentionDisplayConfig: xe,
3315
+ retentionPeriods: be,
3316
+ retentionType: K,
3317
+ retentionDisplayConfig: J,
3264
3318
  serverRetentionQuery: Se,
3265
3319
  retentionValidation: Ce,
3266
3320
  chartType: Te,
3267
- chartConfig: Y,
3321
+ chartConfig: Ee,
3268
3322
  displayConfig: De,
3269
3323
  colorPalette: He,
3270
3324
  localPaletteName: ke,
@@ -3276,7 +3330,7 @@ function Un(e = {}) {
3276
3330
  showFieldModal: Je,
3277
3331
  fieldModalMode: Ye,
3278
3332
  activeTableIndex: et,
3279
- adapterValidation: Xt,
3333
+ adapterValidation: X,
3280
3334
  getQueryConfig: V(() => {
3281
3335
  let e = r.getState();
3282
3336
  return e.analysisType === "funnel" ? e.buildFunnelQueryFromSteps() || e.buildCurrentQuery() : e.queryStates.length > 1 ? {
@@ -3296,13 +3350,13 @@ function Un(e = {}) {
3296
3350
  displayConfig: t.displayConfig
3297
3351
  } : {
3298
3352
  chartType: Te,
3299
- chartConfig: Y,
3353
+ chartConfig: Ee,
3300
3354
  displayConfig: De
3301
3355
  };
3302
3356
  }, [
3303
3357
  r,
3304
3358
  Te,
3305
- Y,
3359
+ Ee,
3306
3360
  De
3307
3361
  ]),
3308
3362
  getAnalysisType: V(() => r.getState().analysisType, [r]),
@@ -3337,13 +3391,13 @@ function Un(e = {}) {
3337
3391
  reorderFunnelSteps: Dt,
3338
3392
  setFunnelTimeDimension: Ot,
3339
3393
  setFunnelDisplayConfig: Fe,
3340
- setFlowCube: At,
3341
- setFlowBindingKey: Mt,
3342
- setFlowTimeDimension: Nt,
3343
- setEventDimension: Pt,
3344
- setStartingStepName: Ft,
3345
- setStartingStepFilters: It,
3346
- setStepsBefore: Lt,
3394
+ setFlowCube: kt,
3395
+ setFlowBindingKey: At,
3396
+ setFlowTimeDimension: jt,
3397
+ setEventDimension: Mt,
3398
+ setStartingStepName: Nt,
3399
+ setStartingStepFilters: Pt,
3400
+ setStepsBefore: It,
3347
3401
  setStepsAfter: Rt,
3348
3402
  setJoinStrategy: zt,
3349
3403
  setFlowDisplayConfig: Ue,
@@ -3354,11 +3408,11 @@ function Un(e = {}) {
3354
3408
  setRetentionCohortFilters: Wt,
3355
3409
  setRetentionActivityFilters: Gt,
3356
3410
  setRetentionBreakdowns: Kt,
3357
- addRetentionBreakdown: X,
3358
- removeRetentionBreakdown: Z,
3359
- setRetentionViewGranularity: qt,
3360
- setRetentionPeriods: Jt,
3361
- setRetentionType: Q,
3411
+ addRetentionBreakdown: qt,
3412
+ removeRetentionBreakdown: Jt,
3413
+ setRetentionViewGranularity: Yt,
3414
+ setRetentionPeriods: Xt,
3415
+ setRetentionType: Zt,
3362
3416
  setRetentionDisplayConfig: We,
3363
3417
  setChartType: Re,
3364
3418
  setChartConfig: ze,
@@ -3372,19 +3426,19 @@ function Un(e = {}) {
3372
3426
  setActiveTableIndex: tt,
3373
3427
  clearQuery: vt,
3374
3428
  clearCurrentMode: yt,
3375
- handleFieldSelected: Qt
3429
+ handleFieldSelected: $t
3376
3430
  }
3377
3431
  };
3378
3432
  }
3379
3433
  //#endregion
3380
3434
  //#region src/client/hooks/analysisQueryExecutionModes.ts
3381
- function Wn(e) {
3435
+ function Xn(e) {
3382
3436
  return e.isRetentionMode ? "retention" : e.isFlowMode ? "flow" : e.isFunnelMode ? "funnel" : e.isMultiMode ? "multi" : "single";
3383
3437
  }
3384
- function Gn(e, t) {
3438
+ function Zn(e, t) {
3385
3439
  return t[e];
3386
3440
  }
3387
- function Kn(e) {
3441
+ function Qn(e) {
3388
3442
  return {
3389
3443
  funnelExecutedQueries: e.isFunnelMode && e.funnelExecutedQueries && e.funnelExecutedQueries.length > 0 ? e.funnelExecutedQueries : null,
3390
3444
  funnelServerQuery: e.isFunnelMode ? e.funnelServerQuery : null,
@@ -3397,7 +3451,7 @@ function Kn(e) {
3397
3451
  retentionDebugData: e.isRetentionMode ? e.retentionDebugData : null
3398
3452
  };
3399
3453
  }
3400
- function qn(e) {
3454
+ function $n(e) {
3401
3455
  return {
3402
3456
  single: !e.isValidQuery || !e.isSingleMode,
3403
3457
  multi: !e.hasMultiQueryConfig || !e.isMultiMode,
@@ -3407,11 +3461,11 @@ function qn(e) {
3407
3461
  dryRun: !!(!e.isValidQuery || e.isFunnelMode || e.isFlowMode || e.isRetentionMode)
3408
3462
  };
3409
3463
  }
3410
- function Jn(e) {
3464
+ function er(e) {
3411
3465
  let { hasResults: t, initialData: n, isValidQuery: r, isLoading: i, isFetching: a, error: o } = e;
3412
3466
  return n && n.length > 0 && !t ? "success" : r ? i && !t ? "loading" : a && t ? "refreshing" : o ? "error" : t ? "success" : "idle" : "idle";
3413
3467
  }
3414
- function Yn(e) {
3468
+ function tr(e) {
3415
3469
  return e.isRetentionMode && e.retentionChartData ? e.retentionChartData.rows.map((e) => ({
3416
3470
  "Retention.period": `P${e.period}`,
3417
3471
  "Retention.rate": e.retentionRate,
@@ -3422,8 +3476,8 @@ function Yn(e) {
3422
3476
  }
3423
3477
  //#endregion
3424
3478
  //#region src/client/hooks/useAnalysisQuery.ts
3425
- function Xn(e) {
3426
- 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 } = de(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Wn({
3479
+ function nr(e) {
3480
+ 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 } = R(), g = u === "funnel" || l, _ = u === "flow", v = u === "retention", y = u === "query" && i, b = u === "query" && !i, x = u === "funnel" && !!d, S = Xn({
3427
3481
  isRetentionMode: v,
3428
3482
  isFlowMode: _,
3429
3483
  isFunnelMode: g,
@@ -3433,7 +3487,7 @@ function Xn(e) {
3433
3487
  g,
3434
3488
  c,
3435
3489
  n
3436
- ]), w = qn({
3490
+ ]), w = $n({
3437
3491
  isValidQuery: a,
3438
3492
  isSingleMode: b,
3439
3493
  isMultiMode: y,
@@ -3445,46 +3499,46 @@ function Xn(e) {
3445
3499
  hasServerFunnelQuery: !!d,
3446
3500
  hasServerFlowQuery: !!f,
3447
3501
  hasServerRetentionQuery: !!p
3448
- }), T = F(t, {
3502
+ }), T = P(t, {
3449
3503
  skip: w.single,
3450
3504
  debounceMs: 300
3451
- }), E = oe(r, {
3505
+ }), E = se(r, {
3452
3506
  skip: w.multi,
3453
3507
  debounceMs: 300
3454
- }), D = se(C, {
3508
+ }), D = ce(C, {
3455
3509
  skip: w.funnel,
3456
3510
  debounceMs: 300,
3457
3511
  prebuiltServerQuery: x ? d : void 0
3458
- }), O = ue(f ?? null, {
3512
+ }), O = de(f ?? null, {
3459
3513
  skip: w.flow,
3460
3514
  debounceMs: 300
3461
- }), k = ae(p ?? null, {
3515
+ }), k = oe(p ?? null, {
3462
3516
  skip: w.retention,
3463
3517
  debounceMs: 300,
3464
3518
  getFieldLabel: h
3465
- }), A = pe({
3519
+ }), ee = pe({
3466
3520
  queries: i ? n : [t],
3467
3521
  isMultiQueryMode: i,
3468
3522
  skip: w.dryRun
3469
- }), j = fe(D.serverQuery, { skip: !g || !D.serverQuery }), ee = fe(O.serverQuery, { skip: !_ || !O.serverQuery }), M = fe(p, { skip: !v || !p }), N = Gn(S, {
3523
+ }), A = fe(D.serverQuery, { skip: !g || !D.serverQuery }), te = fe(O.serverQuery, { skip: !_ || !O.serverQuery }), j = fe(p, { skip: !v || !p }), M = Zn(S, {
3470
3524
  retention: k.isLoading || k.isDebouncing,
3471
3525
  flow: O.isLoading || O.isDebouncing,
3472
3526
  funnel: D.isExecuting || D.isDebouncing,
3473
3527
  multi: E.isLoading,
3474
3528
  single: T.isLoading
3475
- }), te = Gn(S, {
3529
+ }), ne = Zn(S, {
3476
3530
  retention: k.isFetching,
3477
3531
  flow: O.isFetching,
3478
3532
  funnel: D.isExecuting,
3479
3533
  multi: E.isFetching,
3480
3534
  single: T.isFetching
3481
- }), P = Gn(S, {
3535
+ }), N = Zn(S, {
3482
3536
  retention: k.error,
3483
3537
  flow: O.error,
3484
3538
  funnel: D.error,
3485
3539
  multi: E.error,
3486
3540
  single: T.error
3487
- }), ne = !(!T.debouncedQuery && !E.debouncedConfig && D.isDebouncing && O.isDebouncing && k.isDebouncing), re = V((e) => {
3541
+ }), re = !(!T.debouncedQuery && !E.debouncedConfig && D.isDebouncing && O.isDebouncing && k.isDebouncing), ie = V((e) => {
3488
3542
  switch (S) {
3489
3543
  case "retention":
3490
3544
  k.execute(e);
@@ -3507,8 +3561,8 @@ function Xn(e) {
3507
3561
  D,
3508
3562
  E,
3509
3563
  T
3510
- ]), ie = U(() => Jn({
3511
- hasResults: Gn(S, {
3564
+ ]), ae = U(() => er({
3565
+ hasResults: Zn(S, {
3512
3566
  retention: k.chartData,
3513
3567
  flow: O.data,
3514
3568
  funnel: D.chartData,
@@ -3517,14 +3571,14 @@ function Xn(e) {
3517
3571
  }),
3518
3572
  initialData: o,
3519
3573
  isValidQuery: a,
3520
- isLoading: N,
3521
- isFetching: te,
3522
- error: P
3574
+ isLoading: M,
3575
+ isFetching: ne,
3576
+ error: N
3523
3577
  }), [
3524
3578
  a,
3579
+ M,
3580
+ ne,
3525
3581
  N,
3526
- te,
3527
- P,
3528
3582
  T.rawData,
3529
3583
  E.data,
3530
3584
  D.chartData,
@@ -3532,7 +3586,7 @@ function Xn(e) {
3532
3586
  k.chartData,
3533
3587
  o,
3534
3588
  S
3535
- ]), I = U(() => Yn({
3589
+ ]), F = U(() => tr({
3536
3590
  isRetentionMode: v,
3537
3591
  isFlowMode: _,
3538
3592
  isFunnelMode: g,
@@ -3554,25 +3608,25 @@ function Xn(e) {
3554
3608
  g,
3555
3609
  _,
3556
3610
  v
3557
- ]), L = U(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
3611
+ ]), I = U(() => g && D.stepResults ? D.stepResults.map((e) => e.data) : !y || !E.perQueryData ? null : E.perQueryData, [
3558
3612
  y,
3559
3613
  g,
3560
3614
  E.perQueryData,
3561
3615
  D.stepResults
3562
- ]), { funnelExecutedQueries: R, funnelServerQuery: ce, funnelDebugData: le, flowServerQuery: z, flowChartData: he, flowDebugData: ge, retentionServerQuery: B, retentionChartData: _e, retentionDebugData: ve } = Kn({
3616
+ ]), { funnelExecutedQueries: L, funnelServerQuery: le, funnelDebugData: ue, flowServerQuery: z, flowChartData: he, flowDebugData: ge, retentionServerQuery: B, retentionChartData: _e, retentionDebugData: ve } = Qn({
3563
3617
  isFunnelMode: g,
3564
3618
  isFlowMode: _,
3565
3619
  isRetentionMode: v,
3566
3620
  funnelExecutedQueries: D.executedQueries,
3567
3621
  funnelServerQuery: D.serverQuery,
3568
- funnelDebugData: j.debugData,
3622
+ funnelDebugData: A.debugData,
3569
3623
  flowServerQuery: O.serverQuery,
3570
3624
  flowData: O.data,
3571
- flowDebugData: ee.debugData,
3625
+ flowDebugData: te.debugData,
3572
3626
  retentionServerQuery: p ?? null,
3573
3627
  retentionChartData: k.chartData,
3574
- retentionDebugData: M.debugData
3575
- }), ye = U(() => Gn(S, {
3628
+ retentionDebugData: j.debugData
3629
+ }), ye = U(() => Zn(S, {
3576
3630
  retention: k.needsRefresh,
3577
3631
  flow: O.needsRefresh,
3578
3632
  funnel: D.needsRefresh,
@@ -3588,18 +3642,18 @@ function Xn(e) {
3588
3642
  if (b && T.warnings) return T.warnings;
3589
3643
  }, [b, T.warnings]);
3590
3644
  return {
3591
- executionStatus: ie,
3592
- executionResults: I,
3593
- perQueryResults: L,
3594
- isLoading: N,
3595
- isFetching: te,
3596
- error: P,
3597
- debugDataPerQuery: A.debugDataPerQuery,
3598
- hasDebounced: ne,
3599
- refetch: re,
3600
- funnelExecutedQueries: R,
3601
- funnelServerQuery: ce,
3602
- funnelDebugData: le,
3645
+ executionStatus: ae,
3646
+ executionResults: F,
3647
+ perQueryResults: I,
3648
+ isLoading: M,
3649
+ isFetching: ne,
3650
+ error: N,
3651
+ debugDataPerQuery: ee.debugDataPerQuery,
3652
+ hasDebounced: re,
3653
+ refetch: ie,
3654
+ funnelExecutedQueries: L,
3655
+ funnelServerQuery: le,
3656
+ funnelDebugData: ue,
3603
3657
  flowServerQuery: z,
3604
3658
  flowChartData: he,
3605
3659
  flowDebugData: ge,
@@ -3613,43 +3667,43 @@ function Xn(e) {
3613
3667
  }
3614
3668
  //#endregion
3615
3669
  //#region src/client/utils/shareUtils.ts
3616
- var Zn = o(), Qn = 1800, $n = "share=";
3617
- function er(e) {
3670
+ var rr = o(), ir = 1800, ar = "share=";
3671
+ function or(e) {
3618
3672
  let t = JSON.stringify(e);
3619
- return (0, Zn.compressToEncodedURIComponent)(t);
3673
+ return (0, rr.compressToEncodedURIComponent)(t);
3620
3674
  }
3621
- function tr(e) {
3675
+ function sr(e) {
3622
3676
  try {
3623
- let t = (0, Zn.decompressFromEncodedURIComponent)(e);
3677
+ let t = (0, rr.decompressFromEncodedURIComponent)(e);
3624
3678
  if (!t) return null;
3625
3679
  let n = JSON.parse(t);
3626
- return A(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3680
+ return ee(n) ? n : (console.warn("[shareUtils] Invalid AnalysisConfig in share URL"), null);
3627
3681
  } catch {
3628
3682
  return null;
3629
3683
  }
3630
3684
  }
3631
- function nr(e) {
3632
- let t = er(e);
3685
+ function cr(e) {
3686
+ let t = or(e);
3633
3687
  return {
3634
- ok: t.length <= Qn,
3688
+ ok: t.length <= ir,
3635
3689
  size: t.length,
3636
- maxSize: Qn
3690
+ maxSize: ir
3637
3691
  };
3638
3692
  }
3639
- function rr(e) {
3640
- let t = er(e);
3641
- if (t.length <= Qn) return {
3693
+ function lr(e) {
3694
+ let t = or(e);
3695
+ if (t.length <= ir) return {
3642
3696
  encoded: t,
3643
3697
  queryOnly: !1
3644
3698
  };
3645
- let n = er({
3699
+ let n = or({
3646
3700
  version: e.version,
3647
3701
  analysisType: e.analysisType,
3648
3702
  activeView: e.activeView,
3649
3703
  charts: {},
3650
3704
  query: e.query
3651
3705
  });
3652
- return n.length <= Qn ? {
3706
+ return n.length <= ir ? {
3653
3707
  encoded: n,
3654
3708
  queryOnly: !0
3655
3709
  } : {
@@ -3657,27 +3711,27 @@ function rr(e) {
3657
3711
  queryOnly: !0
3658
3712
  };
3659
3713
  }
3660
- function ir(e) {
3661
- let { encoded: t } = rr(e);
3662
- return t ? `${window.location.origin}${window.location.pathname}#${$n}${t}` : null;
3714
+ function ur(e) {
3715
+ let { encoded: t } = lr(e);
3716
+ return t ? `${window.location.origin}${window.location.pathname}#${ar}${t}` : null;
3663
3717
  }
3664
- function ar() {
3718
+ function dr() {
3665
3719
  if (typeof window > "u") return null;
3666
3720
  let e = window.location.hash;
3667
- return !e || !e.startsWith(`#${$n}`) ? null : e.slice(7);
3721
+ return !e || !e.startsWith(`#${ar}`) ? null : e.slice(7);
3668
3722
  }
3669
- function or() {
3723
+ function fr() {
3670
3724
  if (typeof window > "u") return;
3671
3725
  let e = new URL(window.location.href);
3672
3726
  e.hash = "", window.history.replaceState(null, "", e.toString());
3673
3727
  }
3674
- function sr() {
3675
- let e = ar();
3676
- return e ? tr(e) : null;
3728
+ function pr() {
3729
+ let e = dr();
3730
+ return e ? sr(e) : null;
3677
3731
  }
3678
3732
  //#endregion
3679
3733
  //#region src/client/components/AIAssistant/utils.ts
3680
- async function cr(e, t, n = "/api/ai/generate", r) {
3734
+ async function mr(e, t, n = "/api/ai/generate", r) {
3681
3735
  let i = { text: t }, a = {
3682
3736
  "Content-Type": "application/json",
3683
3737
  ...r
@@ -3707,21 +3761,21 @@ async function cr(e, t, n = "/api/ai/generate", r) {
3707
3761
  let s = await o.json();
3708
3762
  return console.log("✅ Client: Successfully generated content"), s;
3709
3763
  }
3710
- function lr(e) {
3764
+ function hr(e) {
3711
3765
  return (e.query || "").replace(/```json\s*/g, "").replace(/```\s*/g, "").replace(/^\s*```.*\n/gm, "").trim();
3712
3766
  }
3713
3767
  //#endregion
3714
3768
  //#region src/client/hooks/useAnalysisEffects.ts
3715
- function ur(e) {
3769
+ function gr(e) {
3716
3770
  return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
3717
3771
  }
3718
- function dr(e) {
3772
+ function _r(e) {
3719
3773
  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);
3720
3774
  H(() => {
3721
3775
  if (u.current) return;
3722
3776
  u.current = !0;
3723
- let e = sr();
3724
- e && (o.getState().load(e), or());
3777
+ let e = pr();
3778
+ e && (o.getState().load(e), fr());
3725
3779
  }, [o]), H(() => {
3726
3780
  i && t.isValidQuery && i(t.currentQuery);
3727
3781
  }, [
@@ -3752,9 +3806,9 @@ function dr(e) {
3752
3806
  });
3753
3807
  if (e === b.current) return;
3754
3808
  b.current = e;
3755
- let t = Nt(d, p, m, g);
3809
+ let t = zt(d, p, m, g);
3756
3810
  if (t) {
3757
- let { chartConfig: e } = jt(d, p, t);
3811
+ let { chartConfig: e } = Lt(d, p, t);
3758
3812
  v(t), y(e), s.setUserManuallySelectedChart(!1);
3759
3813
  } else if (d.length > 0 || p.length > 0) {
3760
3814
  if (m === "table" || m === "recordsTable") {
@@ -3764,7 +3818,7 @@ function dr(e) {
3764
3818
  [e]: [...n, ...i]
3765
3819
  });
3766
3820
  } else if (!h.xAxis?.length && !h.yAxis?.length && !h.series?.length) {
3767
- let { chartConfig: e } = jt(d, p, m);
3821
+ let { chartConfig: e } = Lt(d, p, m);
3768
3822
  y(e);
3769
3823
  }
3770
3824
  }
@@ -3861,8 +3915,8 @@ function dr(e) {
3861
3915
  error: null
3862
3916
  }));
3863
3917
  try {
3864
- let e = lr(await cr("", 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;
3865
- if (ur(i)) {
3918
+ let e = hr(await mr("", 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;
3919
+ if (gr(i)) {
3866
3920
  s.setAnalysisType("funnel"), T(i), s.setChartType("funnel"), o && s.setChartConfig(o), s.setActiveView("chart"), S((e) => ({
3867
3921
  ...e,
3868
3922
  isGenerating: !1,
@@ -3912,7 +3966,7 @@ function dr(e) {
3912
3966
  T,
3913
3967
  t.analysisType,
3914
3968
  s
3915
- ]), A = V(() => {
3969
+ ]), ee = V(() => {
3916
3970
  S({
3917
3971
  isOpen: !1,
3918
3972
  userPrompt: "",
@@ -3922,7 +3976,7 @@ function dr(e) {
3922
3976
  previousState: null,
3923
3977
  previousConfig: null
3924
3978
  });
3925
- }, []), j = V(() => {
3979
+ }, []), A = V(() => {
3926
3980
  x.previousConfig ? o.getState().load(x.previousConfig) : x.previousState && (C((e) => ({
3927
3981
  ...e,
3928
3982
  metrics: x.previousState.metrics,
@@ -3943,19 +3997,19 @@ function dr(e) {
3943
3997
  o,
3944
3998
  C,
3945
3999
  s
3946
- ]), [ee, M] = G("idle"), N = t.effectiveIsValidQuery;
4000
+ ]), [te, j] = G("idle"), M = t.effectiveIsValidQuery;
3947
4001
  return {
3948
4002
  aiState: x,
3949
4003
  openAI: E,
3950
4004
  closeAI: D,
3951
4005
  setAIPrompt: O,
3952
4006
  generateAI: k,
3953
- acceptAI: A,
3954
- cancelAI: j,
3955
- shareButtonState: ee,
4007
+ acceptAI: ee,
4008
+ cancelAI: A,
4009
+ shareButtonState: te,
3956
4010
  share: V(async () => {
3957
- if (!N) return;
3958
- let { encoded: e, queryOnly: t } = rr(o.getState().save());
4011
+ if (!M) return;
4012
+ let { encoded: e, queryOnly: t } = lr(o.getState().save());
3959
4013
  if (!e) return;
3960
4014
  let n = `${window.location.origin}${window.location.pathname}#share=${e}`;
3961
4015
  try {
@@ -3964,17 +4018,17 @@ function dr(e) {
3964
4018
  let e = document.createElement("textarea");
3965
4019
  e.value = n, document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e);
3966
4020
  }
3967
- M(t ? "copied-no-chart" : "copied"), setTimeout(() => {
3968
- M("idle");
4021
+ j(t ? "copied-no-chart" : "copied"), setTimeout(() => {
4022
+ j("idle");
3969
4023
  }, 2e3);
3970
- }, [N, o]),
3971
- canShare: N
4024
+ }, [M, o]),
4025
+ canShare: M
3972
4026
  };
3973
4027
  }
3974
4028
  //#endregion
3975
4029
  //#region src/client/hooks/useAnalysisBuilderHook.ts
3976
- function fr(e = {}) {
3977
- let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = Un({ externalColorPalette: n }), c = Xn({
4030
+ function vr(e = {}) {
4031
+ let { initialData: t, externalColorPalette: n, onQueryChange: r, onChartConfigChange: i } = e, { features: a } = s(), o = Yn({ externalColorPalette: n }), c = nr({
3978
4032
  currentQuery: o.currentQuery,
3979
4033
  allQueries: o.allQueries,
3980
4034
  multiQueryConfig: o.multiQueryConfig,
@@ -3989,7 +4043,7 @@ function fr(e = {}) {
3989
4043
  serverFlowQuery: o.serverFlowQuery,
3990
4044
  serverRetentionQuery: o.serverRetentionQuery,
3991
4045
  retentionValidation: o.retentionValidation
3992
- }), l = dr({
4046
+ }), l = _r({
3993
4047
  state: o,
3994
4048
  query: c,
3995
4049
  aiEndpoint: a?.aiEndpoint,
@@ -4164,7 +4218,7 @@ function fr(e = {}) {
4164
4218
  }
4165
4219
  //#endregion
4166
4220
  //#region src/client/utils/funnelValidation.ts
4167
- function pr(e, t) {
4221
+ function yr(e, t) {
4168
4222
  let n = [];
4169
4223
  if (!t?.cubes) return n;
4170
4224
  if (typeof e.dimension == "string") {
@@ -4188,7 +4242,7 @@ function pr(e, t) {
4188
4242
  }
4189
4243
  return n;
4190
4244
  }
4191
- function mr(e) {
4245
+ function br(e) {
4192
4246
  let t = [];
4193
4247
  for (let n = 0; n < e.length; n++) {
4194
4248
  let r = e[n], i = r.query;
@@ -4200,16 +4254,16 @@ function mr(e) {
4200
4254
  }
4201
4255
  return t;
4202
4256
  }
4203
- function hr(e, t) {
4257
+ function xr(e, t) {
4204
4258
  if (typeof e.dimension == "string") return !0;
4205
4259
  let n = he(t);
4206
4260
  return n ? e.dimension.some((e) => e.cube === n) : !1;
4207
4261
  }
4208
- function gr(e, t) {
4262
+ function Sr(e, t) {
4209
4263
  let n = [];
4210
4264
  for (let r = 0; r < t.length; r++) {
4211
4265
  let i = t[r];
4212
- if (!hr(e, i.query)) {
4266
+ if (!xr(e, i.query)) {
4213
4267
  let e = he(i.query) || "unknown";
4214
4268
  n.push({
4215
4269
  type: "cross_cube",
@@ -4220,26 +4274,26 @@ function gr(e, t) {
4220
4274
  }
4221
4275
  return n;
4222
4276
  }
4223
- function _r(e) {
4277
+ function Cr(e) {
4224
4278
  return e ? /^P(?:\d+Y)?(?:\d+M)?(?:\d+W)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$/.test(e) ? null : {
4225
4279
  type: "time_window",
4226
4280
  message: `Invalid time window format "${e}". Expected ISO 8601 duration (e.g., P7D, PT1H)`
4227
4281
  } : null;
4228
4282
  }
4229
- function vr(e, t) {
4283
+ function wr(e, t) {
4230
4284
  let n = [], r = [];
4231
4285
  e.steps.length < 2 && n.push({
4232
4286
  type: "general",
4233
4287
  message: "Funnel requires at least 2 steps"
4234
- }), e.bindingKey?.dimension ? (n.push(...pr(e.bindingKey, t)), n.push(...gr(e.bindingKey, e.steps))) : n.push({
4288
+ }), e.bindingKey?.dimension ? (n.push(...yr(e.bindingKey, t)), n.push(...Sr(e.bindingKey, e.steps))) : n.push({
4235
4289
  type: "binding_key",
4236
4290
  message: "Binding key dimension is required"
4237
- }), n.push(...mr(e.steps));
4291
+ }), n.push(...br(e.steps));
4238
4292
  for (let t = 0; t < e.steps.length; t++) {
4239
- let r = e.steps[t], i = _r(r.timeToConvert);
4293
+ let r = e.steps[t], i = Cr(r.timeToConvert);
4240
4294
  i && (i.stepIndex = t, n.push(i));
4241
4295
  }
4242
- let i = _r(e.globalTimeWindow);
4296
+ let i = Cr(e.globalTimeWindow);
4243
4297
  return i && n.push(i), e.steps.length > 5 && r.push({
4244
4298
  type: "general",
4245
4299
  message: "Funnels with more than 5 steps may have reduced performance"
@@ -4249,7 +4303,7 @@ function vr(e, t) {
4249
4303
  warnings: r
4250
4304
  };
4251
4305
  }
4252
- function yr(e, t) {
4306
+ function Tr(e, t) {
4253
4307
  return t < 2 ? {
4254
4308
  isValid: !1,
4255
4309
  message: "Add at least 2 steps for funnel"
@@ -4258,7 +4312,7 @@ function yr(e, t) {
4258
4312
  message: "Select a binding key dimension"
4259
4313
  } : { isValid: !0 };
4260
4314
  }
4261
- function br(e) {
4315
+ function Er(e) {
4262
4316
  if (!e?.cubes) return [];
4263
4317
  let t = [];
4264
4318
  for (let n of e.cubes) if (n.dimensions) for (let e of n.dimensions) (e.type === "string" || e.type === "number") && t.push({
@@ -4268,7 +4322,7 @@ function br(e) {
4268
4322
  });
4269
4323
  return t;
4270
4324
  }
4271
- function xr(e) {
4325
+ function Dr(e) {
4272
4326
  if (!e?.dimension) return "Select binding key...";
4273
4327
  if (typeof e.dimension == "string") return e.dimension.split(".")[1] || e.dimension;
4274
4328
  if (e.dimension.length > 0) {
@@ -4278,6 +4332,6 @@ function xr(e) {
4278
4332
  return "Select binding key...";
4279
4333
  }
4280
4334
  //#endregion
4281
- export { An as A, Dn as C, Mn as D, On as E, Xe as F, wn as M, Rt as N, En as O, at as P, Cn as S, Tn as T, Hn as _, gr as a, Rn as b, fr as c, ir as d, nr as f, In as g, Ln as h, pr as i, $ as j, jn as k, er as l, sr as m, xr as n, vr as o, ar as p, yr as r, mr as s, br as t, tr as u, Bn as v, kn as w, Pn as x, Fn as y };
4335
+ export { In as A, Nn as C, Rn as D, Pn as E, nt as F, An as M, Wt as N, Mn as O, dt as P, kn as S, jn as T, Jn as _, Sr as a, Wn as b, vr as c, ur as d, cr as f, Hn as g, Un as h, yr as i, $ as j, Ln as k, or as l, pr as m, Dr as n, wr as o, dr as p, Tr as r, br as s, Er as t, sr as u, Kn as v, Fn as w, Bn as x, Vn as y };
4282
4336
 
4283
- //# sourceMappingURL=analysis-builder-shared-BSINKFr2.js.map
4337
+ //# sourceMappingURL=analysis-builder-shared--4LqPSum.js.map