drizzle-cube 0.4.29 → 0.4.30

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 (381) hide show
  1. package/dist/adapters/anthropic-BIva8k1r.cjs +1 -0
  2. package/dist/adapters/anthropic-B_rg0BhK.js +140 -0
  3. package/dist/adapters/dist-Boc63-1q.cjs +2 -0
  4. package/dist/adapters/dist-De5fzUEM.js +581 -0
  5. package/dist/adapters/express/index.cjs +2 -10
  6. package/dist/adapters/express/index.js +232 -342
  7. package/dist/adapters/fastify/index.cjs +2 -10
  8. package/dist/adapters/fastify/index.js +275 -424
  9. package/dist/adapters/google-CT4kgmBf.js +154 -0
  10. package/dist/adapters/google-Dgo9-Kb5.cjs +2 -0
  11. package/dist/adapters/handler-B8vuFQYP.cjs +25 -0
  12. package/dist/adapters/handler-D-2-6uLM.js +2951 -0
  13. package/dist/adapters/hono/index.cjs +2 -10
  14. package/dist/adapters/hono/index.js +307 -402
  15. package/dist/adapters/mcp-prompts-BAutSQYA.js +344 -0
  16. package/dist/adapters/mcp-prompts-DsAkafVn.cjs +5 -0
  17. package/dist/adapters/mcp-transport-CuugoG8t.js +7821 -0
  18. package/dist/adapters/mcp-transport-Dpp6hdZe.cjs +253 -0
  19. package/dist/adapters/nextjs/index.cjs +1 -9
  20. package/dist/adapters/nextjs/index.js +377 -600
  21. package/dist/adapters/openai-CjBvA6mK.js +4114 -0
  22. package/dist/adapters/openai-DhLE0A9Z.cjs +1 -0
  23. package/dist/adapters/openai-Zjw4Zo4R.js +153 -0
  24. package/dist/adapters/openai-eJBw3LfQ.cjs +16 -0
  25. package/dist/adapters/types.cjs +0 -1
  26. package/dist/adapters/types.js +0 -1
  27. package/dist/adapters/utils-ChhNGUOF.js +5396 -0
  28. package/dist/adapters/utils-CwJplXR5.cjs +15 -0
  29. package/dist/adapters/utils.cjs +1 -19
  30. package/dist/adapters/utils.js +2 -21333
  31. package/dist/client/charts.js +15 -186
  32. package/dist/client/chunks/DashboardEditModal-C076pscL.js +6678 -0
  33. package/dist/client/chunks/DashboardEditModal-C076pscL.js.map +1 -0
  34. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js +2631 -0
  35. package/dist/client/chunks/FieldSearchModal-C0DjSWk3.js.map +1 -0
  36. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js +270 -0
  37. package/dist/client/chunks/RetentionCombinedChart-DuGXc-AP.js.map +1 -0
  38. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js +56 -0
  39. package/dist/client/chunks/RetentionCombinedChart.config-DprbXd1N.js.map +1 -0
  40. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js +193 -0
  41. package/dist/client/chunks/RetentionHeatmap-BoGY6mlZ.js.map +1 -0
  42. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js +25 -0
  43. package/dist/client/chunks/RetentionHeatmap.config-cbaNExVy.js.map +1 -0
  44. package/dist/client/chunks/analysis-builder-DF0XntqC.js +6111 -0
  45. package/dist/client/chunks/analysis-builder-DF0XntqC.js.map +1 -0
  46. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js +3114 -0
  47. package/dist/client/chunks/analysis-builder-shared-2QhKYbs6.js.map +1 -0
  48. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js +803 -0
  49. package/dist/client/chunks/chart-activity-grid-CNES9VBk.js.map +1 -0
  50. package/dist/client/chunks/chart-area-CRJc3KOu.js +449 -0
  51. package/dist/client/chunks/chart-area-CRJc3KOu.js.map +1 -0
  52. package/dist/client/chunks/chart-bar-DD2PjJ5n.js +270 -0
  53. package/dist/client/chunks/chart-bar-DD2PjJ5n.js.map +1 -0
  54. package/dist/client/chunks/chart-box-plot-BcqleldJ.js +377 -0
  55. package/dist/client/chunks/chart-box-plot-BcqleldJ.js.map +1 -0
  56. package/dist/client/chunks/chart-bubble-BmQkVk4K.js +273 -0
  57. package/dist/client/chunks/chart-bubble-BmQkVk4K.js.map +1 -0
  58. package/dist/client/chunks/chart-candlestick-C3Rep469.js +306 -0
  59. package/dist/client/chunks/chart-candlestick-C3Rep469.js.map +1 -0
  60. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js +51 -0
  61. package/dist/client/chunks/chart-config-activity-grid-USo7JrPh.js.map +1 -0
  62. package/dist/client/chunks/chart-config-area-D_ZufYzg.js +93 -0
  63. package/dist/client/chunks/chart-config-area-D_ZufYzg.js.map +1 -0
  64. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js +87 -0
  65. package/dist/client/chunks/chart-config-bar-BCi2Wmd6.js.map +1 -0
  66. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js +35 -0
  67. package/dist/client/chunks/chart-config-box-plot-afKLzJSp.js.map +1 -0
  68. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js +82 -0
  69. package/dist/client/chunks/chart-config-bubble-CgbBjPv8.js.map +1 -0
  70. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js +72 -0
  71. package/dist/client/chunks/chart-config-candlestick-7boGjZ-A.js.map +1 -0
  72. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js +30 -0
  73. package/dist/client/chunks/chart-config-data-table-Cl7sBasW.js.map +1 -0
  74. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js +93 -0
  75. package/dist/client/chunks/chart-config-funnel-CXPYQtTl.js.map +1 -0
  76. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js +64 -0
  77. package/dist/client/chunks/chart-config-gauge-DUNEUCvh.js.map +1 -0
  78. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js +91 -0
  79. package/dist/client/chunks/chart-config-heat-map-BFf1tO11.js.map +1 -0
  80. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js +94 -0
  81. package/dist/client/chunks/chart-config-kpi-delta-C5k2waIJ.js.map +1 -0
  82. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js +75 -0
  83. package/dist/client/chunks/chart-config-kpi-number-DptOyhk0.js.map +1 -0
  84. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js +47 -0
  85. package/dist/client/chunks/chart-config-kpi-text-D9DdVWqd.js.map +1 -0
  86. package/dist/client/chunks/chart-config-line-B3NgLF7K.js +104 -0
  87. package/dist/client/chunks/chart-config-line-B3NgLF7K.js.map +1 -0
  88. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js +117 -0
  89. package/dist/client/chunks/chart-config-markdown-tlfivQTt.js.map +1 -0
  90. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js +82 -0
  91. package/dist/client/chunks/chart-config-measure-profile-D7XDwrU2.js.map +1 -0
  92. package/dist/client/chunks/chart-config-pie-wY0B52PC.js +68 -0
  93. package/dist/client/chunks/chart-config-pie-wY0B52PC.js.map +1 -0
  94. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js +49 -0
  95. package/dist/client/chunks/chart-config-radar-DRpJBy1M.js.map +1 -0
  96. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js +38 -0
  97. package/dist/client/chunks/chart-config-radial-bar-DCUpXv9G.js.map +1 -0
  98. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js +66 -0
  99. package/dist/client/chunks/chart-config-sankey-CdOhlm4h.js.map +1 -0
  100. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js +61 -0
  101. package/dist/client/chunks/chart-config-scatter-B2su_x8f.js.map +1 -0
  102. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js +45 -0
  103. package/dist/client/chunks/chart-config-sunburst-BPdjbk18.js.map +1 -0
  104. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js +51 -0
  105. package/dist/client/chunks/chart-config-tree-map-Cbsh2fe2.js.map +1 -0
  106. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js +59 -0
  107. package/dist/client/chunks/chart-config-waterfall-DGmuZfQF.js.map +1 -0
  108. package/dist/client/chunks/chart-data-table-DehW1C1G.js +4088 -0
  109. package/dist/client/chunks/chart-data-table-DehW1C1G.js.map +1 -0
  110. package/dist/client/chunks/chart-funnel-BjkpnG5g.js +447 -0
  111. package/dist/client/chunks/chart-funnel-BjkpnG5g.js.map +1 -0
  112. package/dist/client/chunks/chart-gauge-BWW_HEfg.js +424 -0
  113. package/dist/client/chunks/chart-gauge-BWW_HEfg.js.map +1 -0
  114. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js +236 -0
  115. package/dist/client/chunks/chart-heat-map-BWuOuDcm.js.map +1 -0
  116. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js +343 -0
  117. package/dist/client/chunks/chart-kpi-delta-D5OHtDJx.js.map +1 -0
  118. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js +326 -0
  119. package/dist/client/chunks/chart-kpi-number-C9zH-aKC.js.map +1 -0
  120. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js +149 -0
  121. package/dist/client/chunks/chart-kpi-text-ChVn3S7j.js.map +1 -0
  122. package/dist/client/chunks/chart-line-DOIMkP0b.js +431 -0
  123. package/dist/client/chunks/chart-line-DOIMkP0b.js.map +1 -0
  124. package/dist/client/chunks/chart-markdown-DXxc43w1.js +3457 -0
  125. package/dist/client/chunks/chart-markdown-DXxc43w1.js.map +1 -0
  126. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js +179 -0
  127. package/dist/client/chunks/chart-measure-profile-C6wrr9il.js.map +1 -0
  128. package/dist/client/chunks/chart-pie-BU_FgwDc.js +172 -0
  129. package/dist/client/chunks/chart-pie-BU_FgwDc.js.map +1 -0
  130. package/dist/client/chunks/chart-radar-DlufwnAX.js +154 -0
  131. package/dist/client/chunks/chart-radar-DlufwnAX.js.map +1 -0
  132. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js +148 -0
  133. package/dist/client/chunks/chart-radial-bar-B5vS_Aw5.js.map +1 -0
  134. package/dist/client/chunks/chart-sankey-FChb26UX.js +222 -0
  135. package/dist/client/chunks/chart-sankey-FChb26UX.js.map +1 -0
  136. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js +255 -0
  137. package/dist/client/chunks/chart-scatter-DW0cAZ2H.js.map +1 -0
  138. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js +221 -0
  139. package/dist/client/chunks/chart-sunburst-Clf-6WxW.js.map +1 -0
  140. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js +298 -0
  141. package/dist/client/chunks/chart-tree-map-p_VwUJPF.js.map +1 -0
  142. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js +237 -0
  143. package/dist/client/chunks/chart-waterfall-jt44IQ-w.js.map +1 -0
  144. package/dist/client/chunks/charts-core-CUVzf4cV.js +215 -0
  145. package/dist/client/chunks/charts-core-CUVzf4cV.js.map +1 -0
  146. package/dist/client/chunks/charts-loader-AGpph8_I.js +259 -0
  147. package/dist/client/chunks/charts-loader-AGpph8_I.js.map +1 -0
  148. package/dist/client/chunks/core-D1TOj17W.js +845 -0
  149. package/dist/client/chunks/core-D1TOj17W.js.map +1 -0
  150. package/dist/client/chunks/dist-DDBeV_JI.js +847 -0
  151. package/dist/client/chunks/dist-DDBeV_JI.js.map +1 -0
  152. package/dist/client/chunks/javascript-BBwTSo6e.js +438 -0
  153. package/dist/client/chunks/javascript-BBwTSo6e.js.map +1 -0
  154. package/dist/client/chunks/json-BpTrLZSh.js +38 -0
  155. package/dist/client/chunks/json-BpTrLZSh.js.map +1 -0
  156. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js +149 -0
  157. package/dist/client/chunks/lazyChartConfigRegistry-BjhxDaSf.js.map +1 -0
  158. package/dist/client/chunks/providers-DX3Vw5kc.js +7 -0
  159. package/dist/client/chunks/providers-DX3Vw5kc.js.map +1 -0
  160. package/dist/client/chunks/retention-UEXlSdZ-.js +132 -0
  161. package/dist/client/chunks/retention-UEXlSdZ-.js.map +1 -0
  162. package/dist/client/chunks/rolldown-runtime-lc2dmIiU.js +20 -0
  163. package/dist/client/chunks/schema-visualization-ZugB4Io9.js +1073 -0
  164. package/dist/client/chunks/schema-visualization-ZugB4Io9.js.map +1 -0
  165. package/dist/client/chunks/sql-B0chxcEK.js +120 -0
  166. package/dist/client/chunks/sql-B0chxcEK.js.map +1 -0
  167. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js +30 -0
  168. package/dist/client/chunks/syntaxHighlighting-87bOwTxj.js.map +1 -0
  169. package/dist/client/chunks/useDebounce-BQjNWndQ.js +1394 -0
  170. package/dist/client/chunks/useDebounce-BQjNWndQ.js.map +1 -0
  171. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js +66 -0
  172. package/dist/client/chunks/useDirtyStateTracking-CgKZWkel.js.map +1 -0
  173. package/dist/client/chunks/useExplainAI-c_bHxZe5.js +203 -0
  174. package/dist/client/chunks/useExplainAI-c_bHxZe5.js.map +1 -0
  175. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js +37 -0
  176. package/dist/client/chunks/useNotebookLayout-BFZ_33Kb.js.map +1 -0
  177. package/dist/client/chunks/utils-A54Ny29G.js +128 -0
  178. package/dist/client/chunks/utils-A54Ny29G.js.map +1 -0
  179. package/dist/client/chunks/vendor-CoPBRumI.js +828 -0
  180. package/dist/client/chunks/vendor-CoPBRumI.js.map +1 -0
  181. package/dist/client/components.js +4 -18
  182. package/dist/client/hooks.js +6 -58
  183. package/dist/client/icons.js +2 -15
  184. package/dist/client/index.js +1061 -1295
  185. package/dist/client/index.js.map +1 -1
  186. package/dist/client/providers.js +3 -9
  187. package/dist/client/styles.css +2 -1
  188. package/dist/client/types.d.ts +1 -0
  189. package/dist/client/utils.js +7 -74
  190. package/dist/client-bundle-stats.html +1 -1
  191. package/dist/server/anthropic-BsNspi1r.js +140 -0
  192. package/dist/server/anthropic-DsCEX6Fm.cjs +1 -0
  193. package/dist/server/dist-CMWZC51B.js +581 -0
  194. package/dist/server/dist-DxegvyZF.cjs +2 -0
  195. package/dist/server/google-BXwMolCu.js +154 -0
  196. package/dist/server/google-DzQWXFwF.cjs +2 -0
  197. package/dist/server/index.cjs +109 -129
  198. package/dist/server/index.js +15089 -34394
  199. package/dist/server/openai-BPhmb8mi.js +4114 -0
  200. package/dist/server/openai-CLsoLaue.cjs +1 -0
  201. package/dist/server/openai-D1kZ5sdM.js +153 -0
  202. package/dist/server/openai-DkOKbVLC.cjs +16 -0
  203. package/package.json +5 -5
  204. package/dist/adapters/anthropic-BTkjgFpT.cjs +0 -1
  205. package/dist/adapters/anthropic-CTu9E801.js +0 -126
  206. package/dist/adapters/google-BAK9pnQf.cjs +0 -2
  207. package/dist/adapters/google-DficVAsJ.js +0 -146
  208. package/dist/adapters/handler-BHguLZOY.js +0 -2713
  209. package/dist/adapters/handler-DOIyiFPg.cjs +0 -39
  210. package/dist/adapters/index-BgCeQBuN.cjs +0 -2
  211. package/dist/adapters/index-C3PskWTr.js +0 -5353
  212. package/dist/adapters/index-C45_meK_.js +0 -719
  213. package/dist/adapters/index-ht4NPca9.cjs +0 -23
  214. package/dist/adapters/mcp-transport-CWGqDQSI.cjs +0 -259
  215. package/dist/adapters/mcp-transport-CyeHMDPl.js +0 -11055
  216. package/dist/adapters/openai-BvA6eLs8.cjs +0 -1
  217. package/dist/adapters/openai-mcE24du8.js +0 -131
  218. package/dist/client/charts.js.map +0 -1
  219. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js +0 -256
  220. package/dist/client/chunks/RetentionCombinedChart--SnU4Y_I.js.map +0 -1
  221. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js +0 -48
  222. package/dist/client/chunks/RetentionCombinedChart.config-Bbp2ghim.js.map +0 -1
  223. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js +0 -178
  224. package/dist/client/chunks/RetentionHeatmap-BHYU8MXY.js.map +0 -1
  225. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js +0 -29
  226. package/dist/client/chunks/RetentionHeatmap.config-BWf_-vdj.js.map +0 -1
  227. package/dist/client/chunks/analysis-builder-DMFoAkjT.js +0 -6203
  228. package/dist/client/chunks/analysis-builder-DMFoAkjT.js.map +0 -1
  229. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js +0 -3140
  230. package/dist/client/chunks/analysis-builder-shared-CunrT3gi.js.map +0 -1
  231. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js +0 -347
  232. package/dist/client/chunks/chart-activity-grid-DCznpK6N.js.map +0 -1
  233. package/dist/client/chunks/chart-area-CqKRIUpj.js +0 -234
  234. package/dist/client/chunks/chart-area-CqKRIUpj.js.map +0 -1
  235. package/dist/client/chunks/chart-bar-Bl5jvrU_.js +0 -267
  236. package/dist/client/chunks/chart-bar-Bl5jvrU_.js.map +0 -1
  237. package/dist/client/chunks/chart-box-plot-CzMb00z_.js +0 -322
  238. package/dist/client/chunks/chart-box-plot-CzMb00z_.js.map +0 -1
  239. package/dist/client/chunks/chart-bubble-BF8Z52eW.js +0 -249
  240. package/dist/client/chunks/chart-bubble-BF8Z52eW.js.map +0 -1
  241. package/dist/client/chunks/chart-candlestick-ByWS945g.js +0 -269
  242. package/dist/client/chunks/chart-candlestick-ByWS945g.js.map +0 -1
  243. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js +0 -50
  244. package/dist/client/chunks/chart-config-activity-grid-CmOqDuOT.js.map +0 -1
  245. package/dist/client/chunks/chart-config-area-CK_GVApT.js +0 -77
  246. package/dist/client/chunks/chart-config-area-CK_GVApT.js.map +0 -1
  247. package/dist/client/chunks/chart-config-bar-C8uzktxl.js +0 -71
  248. package/dist/client/chunks/chart-config-bar-C8uzktxl.js.map +0 -1
  249. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js +0 -38
  250. package/dist/client/chunks/chart-config-box-plot-D_E_SSc2.js.map +0 -1
  251. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js +0 -71
  252. package/dist/client/chunks/chart-config-bubble-q3DoQX5F.js.map +0 -1
  253. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js +0 -70
  254. package/dist/client/chunks/chart-config-candlestick-CRCpD43-.js.map +0 -1
  255. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js +0 -28
  256. package/dist/client/chunks/chart-config-data-table-B20Y5JCm.js.map +0 -1
  257. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js +0 -92
  258. package/dist/client/chunks/chart-config-funnel-3eYnGg8M.js.map +0 -1
  259. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js +0 -64
  260. package/dist/client/chunks/chart-config-gauge-CQx9w3d4.js.map +0 -1
  261. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js +0 -77
  262. package/dist/client/chunks/chart-config-heat-map-_wEnTnRA.js.map +0 -1
  263. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js +0 -97
  264. package/dist/client/chunks/chart-config-kpi-delta-DLGZ2A3X.js.map +0 -1
  265. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js +0 -75
  266. package/dist/client/chunks/chart-config-kpi-number-K-wzviXF.js.map +0 -1
  267. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js +0 -47
  268. package/dist/client/chunks/chart-config-kpi-text-BjYqwqaJ.js.map +0 -1
  269. package/dist/client/chunks/chart-config-line-JNagi9tf.js +0 -88
  270. package/dist/client/chunks/chart-config-line-JNagi9tf.js.map +0 -1
  271. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js +0 -97
  272. package/dist/client/chunks/chart-config-markdown-BWQSjJpy.js.map +0 -1
  273. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js +0 -70
  274. package/dist/client/chunks/chart-config-measure-profile-ZYaMrtws.js.map +0 -1
  275. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js +0 -39
  276. package/dist/client/chunks/chart-config-pie-CNLXb-fr.js.map +0 -1
  277. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js +0 -44
  278. package/dist/client/chunks/chart-config-radar-oxHfRAa3.js.map +0 -1
  279. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js +0 -37
  280. package/dist/client/chunks/chart-config-radial-bar-_Aw3jAEm.js.map +0 -1
  281. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js +0 -61
  282. package/dist/client/chunks/chart-config-sankey-C8FX9hGF.js.map +0 -1
  283. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js +0 -53
  284. package/dist/client/chunks/chart-config-scatter-DFKM80eO.js.map +0 -1
  285. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js +0 -50
  286. package/dist/client/chunks/chart-config-sunburst-BmC0NLTU.js.map +0 -1
  287. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js +0 -47
  288. package/dist/client/chunks/chart-config-tree-map-DGMbNTaa.js.map +0 -1
  289. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js +0 -60
  290. package/dist/client/chunks/chart-config-waterfall-DTyXV_fo.js.map +0 -1
  291. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js +0 -293
  292. package/dist/client/chunks/chart-data-table-HwfF-Ujv.js.map +0 -1
  293. package/dist/client/chunks/chart-funnel-WmuoWlCq.js +0 -259
  294. package/dist/client/chunks/chart-funnel-WmuoWlCq.js.map +0 -1
  295. package/dist/client/chunks/chart-gauge-Cot4By-w.js +0 -374
  296. package/dist/client/chunks/chart-gauge-Cot4By-w.js.map +0 -1
  297. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js +0 -231
  298. package/dist/client/chunks/chart-heat-map-bGNtsZMr.js.map +0 -1
  299. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js +0 -351
  300. package/dist/client/chunks/chart-kpi-delta-DeyKMxgq.js.map +0 -1
  301. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js +0 -476
  302. package/dist/client/chunks/chart-kpi-number-D1z1gxXO.js.map +0 -1
  303. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js +0 -165
  304. package/dist/client/chunks/chart-kpi-text-b7q6KWc0.js.map +0 -1
  305. package/dist/client/chunks/chart-line-3Nf-EPqJ.js +0 -450
  306. package/dist/client/chunks/chart-line-3Nf-EPqJ.js.map +0 -1
  307. package/dist/client/chunks/chart-markdown-BT_-MBq1.js +0 -2721
  308. package/dist/client/chunks/chart-markdown-BT_-MBq1.js.map +0 -1
  309. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js +0 -114
  310. package/dist/client/chunks/chart-measure-profile-BVjUonqU.js.map +0 -1
  311. package/dist/client/chunks/chart-pie-DblG6w7g.js +0 -137
  312. package/dist/client/chunks/chart-pie-DblG6w7g.js.map +0 -1
  313. package/dist/client/chunks/chart-radar-BHZbeeTg.js +0 -129
  314. package/dist/client/chunks/chart-radar-BHZbeeTg.js.map +0 -1
  315. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js +0 -119
  316. package/dist/client/chunks/chart-radial-bar-AlEJC1Jo.js.map +0 -1
  317. package/dist/client/chunks/chart-sankey-E8vYKjQF.js +0 -189
  318. package/dist/client/chunks/chart-sankey-E8vYKjQF.js.map +0 -1
  319. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js +0 -202
  320. package/dist/client/chunks/chart-scatter-Bbxqi0iw.js.map +0 -1
  321. package/dist/client/chunks/chart-sunburst-BgnTKolT.js +0 -188
  322. package/dist/client/chunks/chart-sunburst-BgnTKolT.js.map +0 -1
  323. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js +0 -284
  324. package/dist/client/chunks/chart-tree-map-i9LGCLwl.js.map +0 -1
  325. package/dist/client/chunks/chart-waterfall-BeIhCm83.js +0 -191
  326. package/dist/client/chunks/chart-waterfall-BeIhCm83.js.map +0 -1
  327. package/dist/client/chunks/charts-core-BUUO36OM.js +0 -692
  328. package/dist/client/chunks/charts-core-BUUO36OM.js.map +0 -1
  329. package/dist/client/chunks/charts-loader-goTYnavu.js +0 -258
  330. package/dist/client/chunks/charts-loader-goTYnavu.js.map +0 -1
  331. package/dist/client/chunks/components-BFgYvFq6.js +0 -10066
  332. package/dist/client/chunks/components-BFgYvFq6.js.map +0 -1
  333. package/dist/client/chunks/core-Y9e-sNfb.js +0 -1068
  334. package/dist/client/chunks/core-Y9e-sNfb.js.map +0 -1
  335. package/dist/client/chunks/flow-utils-CjQZG5qq.js +0 -16
  336. package/dist/client/chunks/flow-utils-CjQZG5qq.js.map +0 -1
  337. package/dist/client/chunks/funnel-utils-CyonoNeC.js +0 -135
  338. package/dist/client/chunks/funnel-utils-CyonoNeC.js.map +0 -1
  339. package/dist/client/chunks/icons-CwvgmdIP.js +0 -1636
  340. package/dist/client/chunks/icons-CwvgmdIP.js.map +0 -1
  341. package/dist/client/chunks/index-CApFCBF9.js +0 -81
  342. package/dist/client/chunks/index-CApFCBF9.js.map +0 -1
  343. package/dist/client/chunks/index-_2PSgbkC.js +0 -1046
  344. package/dist/client/chunks/index-_2PSgbkC.js.map +0 -1
  345. package/dist/client/chunks/javascript-DII1YQGr.js +0 -659
  346. package/dist/client/chunks/javascript-DII1YQGr.js.map +0 -1
  347. package/dist/client/chunks/json-C_6Prymp.js +0 -39
  348. package/dist/client/chunks/json-C_6Prymp.js.map +0 -1
  349. package/dist/client/chunks/providers-Ds7DRmnO.js +0 -554
  350. package/dist/client/chunks/providers-Ds7DRmnO.js.map +0 -1
  351. package/dist/client/chunks/retention-CzCo8262.js +0 -120
  352. package/dist/client/chunks/retention-CzCo8262.js.map +0 -1
  353. package/dist/client/chunks/schema-visualization-B97a1Ybu.js +0 -772
  354. package/dist/client/chunks/schema-visualization-B97a1Ybu.js.map +0 -1
  355. package/dist/client/chunks/sql-IeKX8fQ8.js +0 -616
  356. package/dist/client/chunks/sql-IeKX8fQ8.js.map +0 -1
  357. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js +0 -34
  358. package/dist/client/chunks/syntaxHighlighting-DAMSW_A6.js.map +0 -1
  359. package/dist/client/chunks/theme-Dp3hFed1.js +0 -112
  360. package/dist/client/chunks/theme-Dp3hFed1.js.map +0 -1
  361. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js +0 -1231
  362. package/dist/client/chunks/useDirtyStateTracking-CyAXd07d.js.map +0 -1
  363. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js +0 -182
  364. package/dist/client/chunks/useExplainAI-CfQ_JmF1.js.map +0 -1
  365. package/dist/client/chunks/vendor-B2EH3V58.js +0 -2892
  366. package/dist/client/chunks/vendor-B2EH3V58.js.map +0 -1
  367. package/dist/client/components.js.map +0 -1
  368. package/dist/client/hooks.js.map +0 -1
  369. package/dist/client/icons.js.map +0 -1
  370. package/dist/client/providers.js.map +0 -1
  371. package/dist/client/utils.js.map +0 -1
  372. package/dist/server/anthropic-BTkjgFpT.cjs +0 -1
  373. package/dist/server/anthropic-CTu9E801.js +0 -126
  374. package/dist/server/google-BAK9pnQf.cjs +0 -2
  375. package/dist/server/google-DficVAsJ.js +0 -146
  376. package/dist/server/index-BgCeQBuN.cjs +0 -2
  377. package/dist/server/index-C3PskWTr.js +0 -5353
  378. package/dist/server/index-C45_meK_.js +0 -719
  379. package/dist/server/index-ht4NPca9.cjs +0 -23
  380. package/dist/server/openai-BvA6eLs8.cjs +0 -1
  381. package/dist/server/openai-mcE24du8.js +0 -131
@@ -0,0 +1,2631 @@
1
+ import { d as e, h as t, u as n } from "./chart-data-table-DehW1C1G.js";
2
+ import { c as r } from "./lazyChartConfigRegistry-BjhxDaSf.js";
3
+ import { a as i, l as a, s as o } from "./retention-UEXlSdZ-.js";
4
+ import { a as s, t as c } from "./syntaxHighlighting-87bOwTxj.js";
5
+ import { n as l, t as u } from "./charts-core-CUVzf4cV.js";
6
+ import d, { memo as f, useCallback as p, useEffect as m, useMemo as h, useRef as g, useState as _ } from "react";
7
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
8
+ //#region src/client/types/analysisConfig.ts
9
+ var x = (e) => e.analysisType === "query", S = (e) => e.analysisType === "funnel", C = (e) => e.analysisType === "flow", w = (e) => e.analysisType === "retention", T = (e) => "queries" in e.query && Array.isArray(e.query.queries), E = (e) => !T(e), D = (e) => {
10
+ if (!e || typeof e != "object") return !1;
11
+ let t = e;
12
+ return !(t.version !== 1 || t.analysisType !== "query" && t.analysisType !== "funnel" && t.analysisType !== "flow" && t.analysisType !== "retention" || !t.query || typeof t.query != "object" || t.activeView !== "table" && t.activeView !== "chart");
13
+ }, O = () => ({
14
+ version: 1,
15
+ analysisType: "query",
16
+ activeView: "chart",
17
+ charts: { query: {
18
+ chartType: "bar",
19
+ chartConfig: {},
20
+ displayConfig: {}
21
+ } },
22
+ query: {
23
+ measures: [],
24
+ dimensions: []
25
+ }
26
+ }), k = () => ({
27
+ version: 1,
28
+ analysisType: "funnel",
29
+ activeView: "chart",
30
+ charts: { funnel: {
31
+ chartType: "funnel",
32
+ chartConfig: {},
33
+ displayConfig: {}
34
+ } },
35
+ query: { funnel: {
36
+ bindingKey: "",
37
+ timeDimension: "",
38
+ steps: []
39
+ } }
40
+ }), A = () => ({
41
+ version: 1,
42
+ analysisType: "flow",
43
+ activeView: "chart",
44
+ charts: { flow: {
45
+ chartType: "sankey",
46
+ chartConfig: {},
47
+ displayConfig: {}
48
+ } },
49
+ query: { flow: {
50
+ bindingKey: "",
51
+ timeDimension: "",
52
+ eventDimension: "",
53
+ startingStep: {
54
+ name: "",
55
+ filter: void 0
56
+ },
57
+ stepsBefore: 3,
58
+ stepsAfter: 3,
59
+ joinStrategy: "auto"
60
+ } }
61
+ }), j = () => ({
62
+ version: 1,
63
+ analysisType: "retention",
64
+ activeView: "chart",
65
+ charts: { retention: {
66
+ chartType: "heatmap",
67
+ chartConfig: {},
68
+ displayConfig: {}
69
+ } },
70
+ query: { retention: {
71
+ timeDimension: "",
72
+ bindingKey: "",
73
+ dateRange: {
74
+ start: "",
75
+ end: ""
76
+ },
77
+ granularity: "week",
78
+ periods: 12,
79
+ retentionType: "classic"
80
+ } }
81
+ }), M = (e = "query") => {
82
+ switch (e) {
83
+ case "funnel": return k();
84
+ case "flow": return A();
85
+ case "retention": return j();
86
+ default: return O();
87
+ }
88
+ }, N = (e) => {
89
+ if (!e || typeof e != "object") return !1;
90
+ let t = e;
91
+ return !(t.version !== 1 || t.activeType !== "query" && t.activeType !== "funnel" && t.activeType !== "flow" && t.activeType !== "retention" || !t.modes || typeof t.modes != "object");
92
+ }, P = () => ({
93
+ version: 1,
94
+ activeType: "query",
95
+ modes: {
96
+ query: O(),
97
+ funnel: k(),
98
+ flow: A(),
99
+ retention: j()
100
+ }
101
+ });
102
+ //#endregion
103
+ //#region src/client/utils/configMigration.ts
104
+ function F(e) {
105
+ return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries);
106
+ }
107
+ function I(e) {
108
+ return typeof e == "object" && !!e && "queries" in e && Array.isArray(e.queries) && "mergeStrategy" in e && e.mergeStrategy === "funnel";
109
+ }
110
+ function L(e) {
111
+ return typeof e == "object" && !!e && "funnel" in e && typeof e.funnel == "object";
112
+ }
113
+ function R(e) {
114
+ return typeof e == "object" && !!e && "flow" in e && typeof e.flow == "object";
115
+ }
116
+ function z(e, t) {
117
+ return t === "funnel" ? {
118
+ chartType: e.funnelChartType || e.chartType || "funnel",
119
+ chartConfig: e.funnelChartConfig || e.chartConfig || {},
120
+ displayConfig: e.funnelDisplayConfig || e.displayConfig || {}
121
+ } : t === "flow" ? {
122
+ chartType: e.chartType || "sankey",
123
+ chartConfig: e.chartConfig || {},
124
+ displayConfig: e.displayConfig || {}
125
+ } : t === "retention" ? {
126
+ chartType: e.chartType || "retentionCombined",
127
+ chartConfig: e.chartConfig || {},
128
+ displayConfig: e.displayConfig || {}
129
+ } : {
130
+ chartType: e.chartType || "bar",
131
+ chartConfig: e.chartConfig || {},
132
+ displayConfig: e.displayConfig || {}
133
+ };
134
+ }
135
+ function B(e) {
136
+ try {
137
+ let t = JSON.parse(e.query);
138
+ if (a(t)) return {
139
+ version: 1,
140
+ analysisType: "retention",
141
+ activeView: "chart",
142
+ charts: { retention: z(e, "retention") },
143
+ query: t
144
+ };
145
+ if (R(t)) return {
146
+ version: 1,
147
+ analysisType: "flow",
148
+ activeView: "chart",
149
+ charts: { flow: z(e, "flow") },
150
+ query: t
151
+ };
152
+ if (L(t)) return {
153
+ version: 1,
154
+ analysisType: "funnel",
155
+ activeView: "chart",
156
+ charts: { funnel: z(e, "funnel") },
157
+ query: t
158
+ };
159
+ if (I(t)) return ee(t, e);
160
+ if (e.analysisType === "funnel") return {
161
+ version: 1,
162
+ analysisType: "funnel",
163
+ activeView: "chart",
164
+ charts: { funnel: z(e, "funnel") },
165
+ query: L(t) ? t : { funnel: {
166
+ bindingKey: "",
167
+ timeDimension: "",
168
+ steps: []
169
+ } }
170
+ };
171
+ let n = z(e, "query");
172
+ return F(t) ? {
173
+ version: 1,
174
+ analysisType: "query",
175
+ activeView: "chart",
176
+ charts: { query: n },
177
+ query: {
178
+ queries: t.queries,
179
+ mergeStrategy: t.mergeStrategy === "funnel" ? "concat" : t.mergeStrategy,
180
+ mergeKeys: t.mergeKeys,
181
+ queryLabels: t.queryLabels
182
+ }
183
+ } : {
184
+ version: 1,
185
+ analysisType: "query",
186
+ activeView: "chart",
187
+ charts: { query: n },
188
+ query: t
189
+ };
190
+ } catch (e) {
191
+ return console.warn("[configMigration] Failed to parse legacy portlet:", e), O();
192
+ }
193
+ }
194
+ function ee(e, t) {
195
+ let n = "";
196
+ e.funnelBindingKey?.dimension && (typeof e.funnelBindingKey.dimension == "string" ? n = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (n = e.funnelBindingKey.dimension.map((e) => ({
197
+ cube: e.cube,
198
+ dimension: e.dimension
199
+ }))));
200
+ let r = "";
201
+ e.queries.length > 0 && e.queries[0].timeDimensions?.length && (r = e.queries[0].timeDimensions[0].dimension);
202
+ let i = e.queries.map((t, n) => {
203
+ let r = { name: e.queryLabels?.[n] || `Step ${n + 1}` };
204
+ return t.filters && t.filters.length > 0 && (r.filter = t.filters.length === 1 ? t.filters[0] : { and: t.filters }), e.stepTimeToConvert && e.stepTimeToConvert[n] && (r.timeToConvert = e.stepTimeToConvert[n]), r;
205
+ });
206
+ return {
207
+ version: 1,
208
+ analysisType: "funnel",
209
+ activeView: "chart",
210
+ charts: { funnel: t ? z(t, "funnel") : {
211
+ chartType: "funnel",
212
+ chartConfig: {},
213
+ displayConfig: {}
214
+ } },
215
+ query: { funnel: {
216
+ bindingKey: n,
217
+ timeDimension: r,
218
+ steps: i,
219
+ includeTimeMetrics: !0
220
+ } }
221
+ };
222
+ }
223
+ function te(e) {
224
+ if (D(e)) return e;
225
+ if (e && typeof e == "object" && "query" in e && typeof e.query == "string") return B(e);
226
+ if (e && typeof e == "object") try {
227
+ return B({ query: JSON.stringify(e) });
228
+ } catch {}
229
+ return console.warn("[configMigration] Unknown config format, using defaults"), O();
230
+ }
231
+ function ne(e) {
232
+ return typeof e == "object" && !!e && "analysisConfig" in e && D(e.analysisConfig);
233
+ }
234
+ function V(e) {
235
+ if (ne(e)) return e;
236
+ let t = B({
237
+ query: e.query ?? "{}",
238
+ chartType: e.chartType,
239
+ chartConfig: e.chartConfig,
240
+ displayConfig: e.displayConfig,
241
+ analysisType: e.analysisType === "flow" || e.analysisType === "retention" ? void 0 : e.analysisType,
242
+ funnelChartType: e.funnelChartType,
243
+ funnelChartConfig: e.funnelChartConfig,
244
+ funnelDisplayConfig: e.funnelDisplayConfig
245
+ });
246
+ return {
247
+ ...e,
248
+ analysisConfig: t
249
+ };
250
+ }
251
+ //#endregion
252
+ //#region src/client/utils/filterUtils.ts
253
+ function H(e) {
254
+ if ("member" in e && "operator" in e) {
255
+ let t = e;
256
+ return [
257
+ "set",
258
+ "notSet",
259
+ "isEmpty",
260
+ "isNotEmpty"
261
+ ].includes(t.operator) || t.operator === "inDateRange" && t.dateRange ? !0 : !!(t.values && t.values.length > 0);
262
+ }
263
+ return "type" in e && "filters" in e ? e.filters.filter((e) => H(e)).length > 0 : !1;
264
+ }
265
+ function re(e, t) {
266
+ return !e || !e.length || !t || !t.length ? [] : e.filter((e) => t.includes(e.id)).filter((e) => H(e.filter)).map((e) => e.filter);
267
+ }
268
+ function U(e) {
269
+ if ("type" in e && "filters" in e) {
270
+ let t = e, n = t.filters.map(U);
271
+ return t.type === "and" ? { and: n } : { or: n };
272
+ }
273
+ return e;
274
+ }
275
+ function ie(e, t, n = "server") {
276
+ return !e || e.length === 0 ? t : !t || t.length === 0 ? [...e] : n === "server" ? [{ and: [...e, ...t].map(U) }] : [{
277
+ type: "and",
278
+ filters: [...e, ...t]
279
+ }];
280
+ }
281
+ function ae(e) {
282
+ let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
283
+ return e.portlets.forEach((e) => {
284
+ try {
285
+ let i = V(e).analysisConfig.query, a = (e) => {
286
+ e.measures && Array.isArray(e.measures) && e.measures.forEach((e) => t.add(e)), e.dimensions && Array.isArray(e.dimensions) && e.dimensions.forEach((e) => n.add(e)), e.timeDimensions && Array.isArray(e.timeDimensions) && e.timeDimensions.forEach((e) => {
287
+ e.dimension && r.add(e.dimension);
288
+ }), e.filters && W(e.filters).forEach((e) => {
289
+ n.add(e);
290
+ });
291
+ };
292
+ if ("funnel" in i) {
293
+ let e = i;
294
+ e.funnel?.timeDimension && r.add(e.funnel.timeDimension);
295
+ } else "queries" in i ? i.queries.forEach((e) => a(e)) : a(i);
296
+ } catch (t) {
297
+ console.warn("Failed to extract fields from portlet:", e.id, t);
298
+ }
299
+ }), {
300
+ measures: t,
301
+ dimensions: n,
302
+ timeDimensions: r
303
+ };
304
+ }
305
+ function W(e) {
306
+ let t = [];
307
+ return e.forEach((e) => {
308
+ "member" in e ? t.push(e.member) : "type" in e && "filters" in e && t.push(...W(e.filters));
309
+ }), [...new Set(t)];
310
+ }
311
+ function G(e) {
312
+ if (e.dateRange) return e.dateRange;
313
+ if (e.values && e.values.length > 0) return e.values.length === 1 ? e.values[0] : e.values;
314
+ }
315
+ function oe(e, t, n) {
316
+ if (!n || n.length === 0 || !t || t.length === 0) return n;
317
+ let r = e?.filter((e) => e.isUniversalTime && t.includes(e.id))?.filter((e) => {
318
+ if (!("member" in e.filter)) return !1;
319
+ let t = e.filter;
320
+ return G(t) !== void 0;
321
+ });
322
+ if (!r || r.length === 0) return n;
323
+ let i = r[0].filter, a = G(i);
324
+ return n.map((e) => ({
325
+ ...e,
326
+ dateRange: a
327
+ }));
328
+ }
329
+ //#endregion
330
+ //#region src/client/shared/components/CodeBlock.tsx
331
+ var se = ({ code: t, language: n, title: r, maxHeight: i = "16rem", height: a, className: o = "", headerRight: l }) => {
332
+ let [u, d] = _(!1), f = g(null), p = e("copy"), h = e("check");
333
+ return m(() => {
334
+ if (!f.current) return;
335
+ let e = f.current, r = !0;
336
+ return e.textContent = t, s().then(() => {
337
+ if (!r) return;
338
+ let i = c();
339
+ i && (e.innerHTML = i.highlight(t, { language: n }).value);
340
+ }).catch(() => {
341
+ r && (e.textContent = t);
342
+ }), () => {
343
+ r = !1;
344
+ };
345
+ }, [t, n]), /* @__PURE__ */ b("div", {
346
+ className: `dc:relative ${o}`,
347
+ children: [/* @__PURE__ */ b("div", {
348
+ className: "dc:flex dc:items-center dc:justify-between dc:mb-2 dc:gap-2",
349
+ children: [r && /* @__PURE__ */ y("h4", {
350
+ className: "dc:text-sm dc:font-semibold text-dc-text",
351
+ children: r
352
+ }), /* @__PURE__ */ b("div", {
353
+ className: "dc:flex dc:items-center dc:gap-2 dc:ml-auto",
354
+ children: [l, /* @__PURE__ */ y("button", {
355
+ onClick: async () => {
356
+ try {
357
+ await navigator.clipboard.writeText(t), d(!0), setTimeout(() => d(!1), 2e3);
358
+ } catch {
359
+ let e = document.createElement("textarea");
360
+ e.value = t, e.style.position = "fixed", e.style.left = "-999999px", document.body.appendChild(e), e.select(), document.execCommand("copy"), document.body.removeChild(e), d(!0), setTimeout(() => d(!1), 2e3);
361
+ }
362
+ },
363
+ className: "dc:px-2 dc:py-1 dc:text-xs dc:rounded hover:bg-dc-surface-secondary dc:border border-dc-border dc:transition-colors dc:flex dc:items-center dc:gap-1.5",
364
+ title: u ? "Copied!" : "Copy to clipboard",
365
+ children: u ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(h, { className: "dc:w-3.5 dc:h-3.5 text-dc-success" }), /* @__PURE__ */ y("span", {
366
+ className: "text-dc-success",
367
+ children: "Copied"
368
+ })] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(p, { className: "dc:w-3.5 dc:h-3.5 text-dc-text-secondary" }), /* @__PURE__ */ y("span", {
369
+ className: "text-dc-text-secondary",
370
+ children: "Copy"
371
+ })] })
372
+ })]
373
+ })]
374
+ }), /* @__PURE__ */ y("div", {
375
+ className: "bg-dc-surface-secondary dc:border border-dc-border dc:rounded dc:overflow-auto",
376
+ style: a ? {
377
+ height: a,
378
+ minHeight: a,
379
+ maxHeight: a
380
+ } : { maxHeight: i },
381
+ children: /* @__PURE__ */ y("pre", {
382
+ className: "dc:p-3 dc:text-xs dc:m-0",
383
+ children: /* @__PURE__ */ y("code", {
384
+ ref: f,
385
+ className: `hljs language-${n}`,
386
+ children: t
387
+ })
388
+ })
389
+ })]
390
+ });
391
+ }, K = [
392
+ {
393
+ name: "default",
394
+ label: "Default",
395
+ colors: [
396
+ "#3b82f6",
397
+ "#10b981",
398
+ "#f59e0b",
399
+ "#ef4444",
400
+ "#8b5cf6",
401
+ "#f97316",
402
+ "#06b6d4",
403
+ "#84cc16"
404
+ ],
405
+ gradient: [
406
+ "#fde725",
407
+ "#7ad151",
408
+ "#22a884",
409
+ "#2a788e",
410
+ "#414487",
411
+ "#440154"
412
+ ]
413
+ },
414
+ {
415
+ name: "ocean",
416
+ label: "Ocean",
417
+ colors: [
418
+ "#1e3a8a",
419
+ "#1e40af",
420
+ "#2563eb",
421
+ "#3b82f6",
422
+ "#06b6d4",
423
+ "#0891b2",
424
+ "#0e7490",
425
+ "#0f766e"
426
+ ],
427
+ gradient: [
428
+ "#38bdf8",
429
+ "#0ea5e9",
430
+ "#0284c7",
431
+ "#0369a1",
432
+ "#075985",
433
+ "#0c4a6e"
434
+ ]
435
+ },
436
+ {
437
+ name: "sunset",
438
+ label: "Sunset",
439
+ colors: [
440
+ "#dc2626",
441
+ "#ea580c",
442
+ "#f59e0b",
443
+ "#eab308",
444
+ "#d97706",
445
+ "#b45309",
446
+ "#92400e",
447
+ "#7c2d12"
448
+ ],
449
+ gradient: [
450
+ "#fbbf24",
451
+ "#f59e0b",
452
+ "#d97706",
453
+ "#b45309",
454
+ "#92400e",
455
+ "#7c2d12"
456
+ ]
457
+ },
458
+ {
459
+ name: "forest",
460
+ label: "Forest",
461
+ colors: [
462
+ "#166534",
463
+ "#15803d",
464
+ "#16a34a",
465
+ "#22c55e",
466
+ "#4ade80",
467
+ "#65a30d",
468
+ "#84cc16",
469
+ "#a3e635"
470
+ ],
471
+ gradient: [
472
+ "#4ade80",
473
+ "#22c55e",
474
+ "#16a34a",
475
+ "#15803d",
476
+ "#166534",
477
+ "#14532d"
478
+ ]
479
+ },
480
+ {
481
+ name: "purple",
482
+ label: "Purple",
483
+ colors: [
484
+ "#581c87",
485
+ "#7c3aed",
486
+ "#8b5cf6",
487
+ "#a855f7",
488
+ "#c084fc",
489
+ "#e879f9",
490
+ "#f0abfc",
491
+ "#fbbf24"
492
+ ],
493
+ gradient: [
494
+ "#a855f7",
495
+ "#8b5cf6",
496
+ "#7c3aed",
497
+ "#6d28d9",
498
+ "#581c87",
499
+ "#4c1d95"
500
+ ]
501
+ },
502
+ {
503
+ name: "monochrome",
504
+ label: "Monochrome",
505
+ colors: [
506
+ "#1f2937",
507
+ "#374151",
508
+ "#4b5563",
509
+ "#6b7280",
510
+ "#9ca3af",
511
+ "#d1d5db",
512
+ "#e5e7eb",
513
+ "#f3f4f6"
514
+ ],
515
+ gradient: [
516
+ "#9ca3af",
517
+ "#6b7280",
518
+ "#4b5563",
519
+ "#374151",
520
+ "#1f2937",
521
+ "#111827"
522
+ ]
523
+ },
524
+ {
525
+ name: "pastel",
526
+ label: "Pastel",
527
+ colors: [
528
+ "#93c5fd",
529
+ "#86efac",
530
+ "#fde047",
531
+ "#fca5a5",
532
+ "#c4b5fd",
533
+ "#fdba74",
534
+ "#67e8f9",
535
+ "#bef264"
536
+ ],
537
+ gradient: [
538
+ "#fed7aa",
539
+ "#ddd6fe",
540
+ "#fecaca",
541
+ "#fef08a",
542
+ "#a7f3d0",
543
+ "#bfdbfe"
544
+ ]
545
+ },
546
+ {
547
+ name: "vibrant",
548
+ label: "Vibrant",
549
+ colors: [
550
+ "#0000ff",
551
+ "#00ff00",
552
+ "#ffff00",
553
+ "#ff0000",
554
+ "#ff00ff",
555
+ "#ff8000",
556
+ "#00ffff",
557
+ "#8000ff"
558
+ ],
559
+ gradient: [
560
+ "#ffff00",
561
+ "#80ff00",
562
+ "#00ff80",
563
+ "#00ffff",
564
+ "#0080ff",
565
+ "#4000ff"
566
+ ]
567
+ },
568
+ {
569
+ name: "d3Category10",
570
+ label: "D3 Category 10",
571
+ colors: [
572
+ "#1f77b4",
573
+ "#ff7f0e",
574
+ "#2ca02c",
575
+ "#d62728",
576
+ "#9467bd",
577
+ "#8c564b",
578
+ "#e377c2",
579
+ "#7f7f7f",
580
+ "#bcbd22",
581
+ "#17becf"
582
+ ],
583
+ gradient: [
584
+ "#9467bd",
585
+ "#d62728",
586
+ "#ff7f0e",
587
+ "#bcbd22",
588
+ "#2ca02c",
589
+ "#1f77b4"
590
+ ]
591
+ },
592
+ {
593
+ name: "d3Tableau10",
594
+ label: "D3 Tableau 10",
595
+ colors: [
596
+ "#4e79a7",
597
+ "#f28e2c",
598
+ "#e15759",
599
+ "#76b7b2",
600
+ "#59a14f",
601
+ "#edc949",
602
+ "#af7aa1",
603
+ "#ff9da7",
604
+ "#9c755f",
605
+ "#bab0ab"
606
+ ],
607
+ gradient: [
608
+ "#e15759",
609
+ "#f28e2c",
610
+ "#edc949",
611
+ "#59a14f",
612
+ "#76b7b2",
613
+ "#4e79a7"
614
+ ]
615
+ },
616
+ {
617
+ name: "colorBrewerSet1",
618
+ label: "ColorBrewer Set 1",
619
+ colors: [
620
+ "#e41a1c",
621
+ "#377eb8",
622
+ "#4daf4a",
623
+ "#984ea3",
624
+ "#ff7f00",
625
+ "#ffff33",
626
+ "#a65628",
627
+ "#f781bf",
628
+ "#999999"
629
+ ],
630
+ gradient: [
631
+ "#984ea3",
632
+ "#e41a1c",
633
+ "#ff7f00",
634
+ "#ffff33",
635
+ "#4daf4a",
636
+ "#377eb8"
637
+ ]
638
+ },
639
+ {
640
+ name: "colorBrewerSet2",
641
+ label: "ColorBrewer Set 2",
642
+ colors: [
643
+ "#66c2a5",
644
+ "#fc8d62",
645
+ "#8da0cb",
646
+ "#e78ac3",
647
+ "#a6d854",
648
+ "#ffd92f",
649
+ "#e5c494",
650
+ "#b3b3b3"
651
+ ],
652
+ gradient: [
653
+ "#e78ac3",
654
+ "#fc8d62",
655
+ "#ffd92f",
656
+ "#a6d854",
657
+ "#66c2a5",
658
+ "#8da0cb"
659
+ ]
660
+ },
661
+ {
662
+ name: "colorBrewerDark2",
663
+ label: "ColorBrewer Dark 2",
664
+ colors: [
665
+ "#1b9e77",
666
+ "#d95f02",
667
+ "#7570b3",
668
+ "#e7298a",
669
+ "#66a61e",
670
+ "#e6ab02",
671
+ "#a6761d",
672
+ "#666666"
673
+ ],
674
+ gradient: [
675
+ "#e7298a",
676
+ "#d95f02",
677
+ "#e6ab02",
678
+ "#66a61e",
679
+ "#1b9e77",
680
+ "#7570b3"
681
+ ]
682
+ },
683
+ {
684
+ name: "colorBrewerPaired",
685
+ label: "ColorBrewer Paired",
686
+ colors: [
687
+ "#a6cee3",
688
+ "#1f78b4",
689
+ "#b2df8a",
690
+ "#33a02c",
691
+ "#fb9a99",
692
+ "#e31a1c",
693
+ "#fdbf6f",
694
+ "#ff7f00",
695
+ "#cab2d6",
696
+ "#6a3d9a",
697
+ "#ffff99",
698
+ "#b15928"
699
+ ],
700
+ gradient: [
701
+ "#6a3d9a",
702
+ "#e31a1c",
703
+ "#ff7f00",
704
+ "#ffff99",
705
+ "#33a02c",
706
+ "#1f78b4"
707
+ ]
708
+ },
709
+ {
710
+ name: "viridis",
711
+ label: "Viridis",
712
+ colors: [
713
+ "#440154",
714
+ "#482677",
715
+ "#3f4a8a",
716
+ "#31678e",
717
+ "#26838f",
718
+ "#1f9d8a",
719
+ "#6cce5a",
720
+ "#b6de2b"
721
+ ],
722
+ gradient: [
723
+ "#b6de2b",
724
+ "#6cce5a",
725
+ "#1f9d8a",
726
+ "#26838f",
727
+ "#31678e",
728
+ "#3f4a8a",
729
+ "#482677",
730
+ "#440154"
731
+ ]
732
+ },
733
+ {
734
+ name: "plasma",
735
+ label: "Plasma",
736
+ colors: [
737
+ "#0c0786",
738
+ "#5c01a6",
739
+ "#900da4",
740
+ "#bf3984",
741
+ "#e16462",
742
+ "#f99b45",
743
+ "#fcce25",
744
+ "#f0f921"
745
+ ],
746
+ gradient: [
747
+ "#f0f921",
748
+ "#fcce25",
749
+ "#f99b45",
750
+ "#e16462",
751
+ "#bf3984",
752
+ "#900da4",
753
+ "#5c01a6",
754
+ "#0c0786"
755
+ ]
756
+ },
757
+ {
758
+ name: "inferno",
759
+ label: "Inferno",
760
+ colors: [
761
+ "#000003",
762
+ "#1f0c47",
763
+ "#550f6d",
764
+ "#88226a",
765
+ "#a83655",
766
+ "#cc4f39",
767
+ "#e6862a",
768
+ "#fec228"
769
+ ],
770
+ gradient: [
771
+ "#fec228",
772
+ "#e6862a",
773
+ "#cc4f39",
774
+ "#a83655",
775
+ "#88226a",
776
+ "#550f6d",
777
+ "#1f0c47",
778
+ "#000003"
779
+ ]
780
+ },
781
+ {
782
+ name: "magma",
783
+ label: "Magma",
784
+ colors: [
785
+ "#000003",
786
+ "#140b34",
787
+ "#3b0f6f",
788
+ "#641a80",
789
+ "#8b2981",
790
+ "#b63679",
791
+ "#de4968",
792
+ "#fd9f6c"
793
+ ],
794
+ gradient: [
795
+ "#fd9f6c",
796
+ "#de4968",
797
+ "#b63679",
798
+ "#8b2981",
799
+ "#641a80",
800
+ "#3b0f6f",
801
+ "#140b34",
802
+ "#000003"
803
+ ]
804
+ },
805
+ {
806
+ name: "cividis",
807
+ label: "Cividis",
808
+ colors: [
809
+ "#00204c",
810
+ "#003f5c",
811
+ "#2c4b7a",
812
+ "#51576f",
813
+ "#7f6874",
814
+ "#a8786e",
815
+ "#d2906d",
816
+ "#ffb570"
817
+ ],
818
+ gradient: [
819
+ "#ffb570",
820
+ "#d2906d",
821
+ "#a8786e",
822
+ "#7f6874",
823
+ "#51576f",
824
+ "#2c4b7a",
825
+ "#003f5c",
826
+ "#00204c"
827
+ ]
828
+ },
829
+ {
830
+ name: "turbo",
831
+ label: "Turbo",
832
+ colors: [
833
+ "#30123b",
834
+ "#4454c4",
835
+ "#1dd3c0",
836
+ "#42f465",
837
+ "#b2df22",
838
+ "#faba39",
839
+ "#f66c19",
840
+ "#c42e02"
841
+ ],
842
+ gradient: [
843
+ "#c42e02",
844
+ "#f66c19",
845
+ "#faba39",
846
+ "#b2df22",
847
+ "#42f465",
848
+ "#1dd3c0",
849
+ "#4454c4",
850
+ "#30123b"
851
+ ]
852
+ },
853
+ {
854
+ name: "warm",
855
+ label: "Warm",
856
+ colors: [
857
+ "#8b0000",
858
+ "#b22222",
859
+ "#cd5c5c",
860
+ "#ff6347",
861
+ "#ff8c00",
862
+ "#ffa500",
863
+ "#ffd700",
864
+ "#ffff00"
865
+ ],
866
+ gradient: [
867
+ "#ffd700",
868
+ "#ffa500",
869
+ "#ff8c00",
870
+ "#ff6347",
871
+ "#b22222",
872
+ "#8b0000"
873
+ ]
874
+ },
875
+ {
876
+ name: "cool",
877
+ label: "Cool",
878
+ colors: [
879
+ "#000080",
880
+ "#0000ff",
881
+ "#4169e1",
882
+ "#00bfff",
883
+ "#00ffff",
884
+ "#40e0d0",
885
+ "#20b2aa",
886
+ "#008b8b"
887
+ ],
888
+ gradient: [
889
+ "#40e0d0",
890
+ "#00ffff",
891
+ "#00bfff",
892
+ "#4169e1",
893
+ "#0000ff",
894
+ "#000080"
895
+ ]
896
+ },
897
+ {
898
+ name: "earth",
899
+ label: "Earth",
900
+ colors: [
901
+ "#8b4513",
902
+ "#a0522d",
903
+ "#cd853f",
904
+ "#daa520",
905
+ "#d2691e",
906
+ "#bc8f8f",
907
+ "#f4a460",
908
+ "#deb887"
909
+ ],
910
+ gradient: [
911
+ "#f4a460",
912
+ "#d2691e",
913
+ "#daa520",
914
+ "#cd853f",
915
+ "#a0522d",
916
+ "#8b4513"
917
+ ]
918
+ },
919
+ {
920
+ name: "autumn",
921
+ label: "Autumn",
922
+ colors: [
923
+ "#8b0000",
924
+ "#a0522d",
925
+ "#cd853f",
926
+ "#daa520",
927
+ "#ff8c00",
928
+ "#ff4500",
929
+ "#dc143c",
930
+ "#b22222"
931
+ ],
932
+ gradient: [
933
+ "#ff4500",
934
+ "#ff8c00",
935
+ "#daa520",
936
+ "#cd853f",
937
+ "#a0522d",
938
+ "#8b0000"
939
+ ]
940
+ },
941
+ {
942
+ name: "spring",
943
+ label: "Spring",
944
+ colors: [
945
+ "#32cd32",
946
+ "#98fb98",
947
+ "#90ee90",
948
+ "#ffb6c1",
949
+ "#ffc0cb",
950
+ "#ffffe0",
951
+ "#f0fff0",
952
+ "#e0ffff"
953
+ ],
954
+ gradient: [
955
+ "#e0ffff",
956
+ "#ffc0cb",
957
+ "#ffb6c1",
958
+ "#ffffe0",
959
+ "#98fb98",
960
+ "#32cd32"
961
+ ]
962
+ },
963
+ {
964
+ name: "winter",
965
+ label: "Winter",
966
+ colors: [
967
+ "#191970",
968
+ "#4682b4",
969
+ "#87ceeb",
970
+ "#b0e0e6",
971
+ "#e0ffff",
972
+ "#f0f8ff",
973
+ "#c0c0c0",
974
+ "#708090"
975
+ ],
976
+ gradient: [
977
+ "#f0f8ff",
978
+ "#e0ffff",
979
+ "#b0e0e6",
980
+ "#87ceeb",
981
+ "#4682b4",
982
+ "#191970"
983
+ ]
984
+ },
985
+ {
986
+ name: "neon",
987
+ label: "Neon",
988
+ colors: [
989
+ "#ff0080",
990
+ "#00ff80",
991
+ "#8000ff",
992
+ "#ff8000",
993
+ "#0080ff",
994
+ "#80ff00",
995
+ "#ff0040",
996
+ "#40ff00"
997
+ ],
998
+ gradient: [
999
+ "#ff0080",
1000
+ "#ff8000",
1001
+ "#80ff00",
1002
+ "#00ff80",
1003
+ "#0080ff",
1004
+ "#8000ff"
1005
+ ]
1006
+ },
1007
+ {
1008
+ name: "retro",
1009
+ label: "Retro",
1010
+ colors: [
1011
+ "#ff69b4",
1012
+ "#ffd700",
1013
+ "#32cd32",
1014
+ "#00ced1",
1015
+ "#ff6347",
1016
+ "#9370db",
1017
+ "#ffa500",
1018
+ "#20b2aa"
1019
+ ],
1020
+ gradient: [
1021
+ "#00ced1",
1022
+ "#32cd32",
1023
+ "#ffd700",
1024
+ "#ff6347",
1025
+ "#ff69b4",
1026
+ "#9370db"
1027
+ ]
1028
+ },
1029
+ {
1030
+ name: "corporate",
1031
+ label: "Corporate",
1032
+ colors: [
1033
+ "#003366",
1034
+ "#0066cc",
1035
+ "#336699",
1036
+ "#6699cc",
1037
+ "#4d4d4d",
1038
+ "#808080",
1039
+ "#b3b3b3",
1040
+ "#cccccc"
1041
+ ],
1042
+ gradient: [
1043
+ "#b3b3b3",
1044
+ "#808080",
1045
+ "#6699cc",
1046
+ "#336699",
1047
+ "#0066cc",
1048
+ "#003366"
1049
+ ]
1050
+ },
1051
+ {
1052
+ name: "material",
1053
+ label: "Material Design",
1054
+ colors: [
1055
+ "#f44336",
1056
+ "#e91e63",
1057
+ "#9c27b0",
1058
+ "#673ab7",
1059
+ "#3f51b5",
1060
+ "#2196f3",
1061
+ "#03a9f4",
1062
+ "#00bcd4"
1063
+ ],
1064
+ gradient: [
1065
+ "#e91e63",
1066
+ "#03a9f4",
1067
+ "#00bcd4",
1068
+ "#2196f3",
1069
+ "#3f51b5",
1070
+ "#673ab7"
1071
+ ]
1072
+ }
1073
+ ];
1074
+ function q(e) {
1075
+ return e && K.find((t) => t.name === e) || K[0];
1076
+ }
1077
+ //#endregion
1078
+ //#region src/client/components/Modal.tsx
1079
+ var J = ({ isOpen: e, onClose: t, title: n, size: r = "md", closeOnBackdropClick: i = !0, closeOnEscape: a = !0, showCloseButton: o = !0, children: s, footer: c, noPadding: l = !1 }) => {
1080
+ let u = p((e) => {
1081
+ e.key === "Escape" && a && t();
1082
+ }, [a, t]);
1083
+ return m(() => (e ? (a && document.addEventListener("keydown", u), document.body.style.overflow = "hidden") : document.body.style.overflow = "unset", () => {
1084
+ document.removeEventListener("keydown", u), document.body.style.overflow = "unset";
1085
+ }), [
1086
+ e,
1087
+ a,
1088
+ u
1089
+ ]), e ? /* @__PURE__ */ y("div", {
1090
+ className: `dc:fixed dc:inset-0 dc:z-50 dc:backdrop-blur-md ${r === "fullscreen-mobile" ? "dc:flex dc:md:flex dc:md:items-center dc:md:justify-center" : "dc:flex dc:items-center dc:justify-center"}`,
1091
+ style: { backgroundColor: "var(--dc-overlay)" },
1092
+ onClick: i ? t : void 0,
1093
+ children: /* @__PURE__ */ b("div", {
1094
+ className: `dc:relative bg-dc-surface dc:border border-dc-border ${r === "fullscreen-mobile" ? "dc:rounded-none dc:md:rounded-lg" : "dc:rounded-lg"} ${r === "fullscreen" || r === "fullscreen-mobile" ? "" : "dc:mx-4"} ${(() => {
1095
+ switch (r) {
1096
+ case "sm": return "dc:max-w-md";
1097
+ case "md": return "dc:max-w-lg";
1098
+ case "lg": return "dc:max-w-2xl";
1099
+ case "xl": return "dc:max-w-6xl";
1100
+ case "xxl": return "dc:max-w-[1400px]";
1101
+ case "full": return "dc:max-w-7xl";
1102
+ case "fullscreen": return "dc:w-[90vw] dc:h-[90vh] dc:max-w-none";
1103
+ case "fullscreen-mobile": return "dc:w-full dc:h-full dc:md:w-[min(90vw,1400px)] dc:md:h-[90vh]";
1104
+ default: return "dc:max-w-lg";
1105
+ }
1106
+ })()} ${r === "fullscreen" || r === "fullscreen-mobile" ? "" : "dc:max-h-[90vh]"} dc:flex dc:flex-col`,
1107
+ style: { boxShadow: "var(--dc-shadow-2xl)" },
1108
+ onClick: (e) => e.stopPropagation(),
1109
+ role: "dialog",
1110
+ "aria-modal": "true",
1111
+ "aria-labelledby": n ? "modal-title" : void 0,
1112
+ children: [
1113
+ (n || o) && /* @__PURE__ */ b("div", {
1114
+ className: "dc:flex dc:items-center dc:justify-between dc:px-6 dc:py-4 dc:border-b border-dc-border",
1115
+ children: [n && /* @__PURE__ */ y("h2", {
1116
+ id: "modal-title",
1117
+ className: "dc:text-xl dc:font-semibold text-dc-text",
1118
+ children: n
1119
+ }), o && /* @__PURE__ */ y("button", {
1120
+ type: "button",
1121
+ onClick: t,
1122
+ className: "text-dc-text-muted hover:text-dc-text-secondary dc:transition-colors dc:p-2 dc:-mr-2",
1123
+ "aria-label": "Close modal",
1124
+ children: /* @__PURE__ */ y("svg", {
1125
+ width: "24",
1126
+ height: "24",
1127
+ fill: "none",
1128
+ viewBox: "0 0 24 24",
1129
+ stroke: "currentColor",
1130
+ children: /* @__PURE__ */ y("path", {
1131
+ strokeLinecap: "round",
1132
+ strokeLinejoin: "round",
1133
+ strokeWidth: 2,
1134
+ d: "M6 18L18 6M6 6l12 12"
1135
+ })
1136
+ })
1137
+ })]
1138
+ }),
1139
+ /* @__PURE__ */ y("div", {
1140
+ className: `dc:flex-1 dc:overflow-y-auto ${l ? "" : "dc:px-6 dc:py-4"}`,
1141
+ children: s
1142
+ }),
1143
+ c && /* @__PURE__ */ y("div", {
1144
+ className: "dc:flex dc:items-center dc:justify-end dc:space-x-3 dc:px-6 dc:py-4 dc:border-t border-dc-border bg-dc-surface-secondary",
1145
+ children: d.Children.toArray(c)
1146
+ })
1147
+ ]
1148
+ })
1149
+ }) : null;
1150
+ };
1151
+ //#endregion
1152
+ //#region src/client/components/AnalysisBuilder/utils/idUtils.ts
1153
+ function Y() {
1154
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
1155
+ }
1156
+ function ce(e) {
1157
+ let t = "", n = e;
1158
+ do
1159
+ t = String.fromCharCode(65 + n % 26) + t, n = Math.floor(n / 26) - 1;
1160
+ while (n >= 0);
1161
+ return t;
1162
+ }
1163
+ //#endregion
1164
+ //#region src/client/components/AnalysisBuilder/utils/fieldUtils.ts
1165
+ function X(e, t) {
1166
+ if (!t) return null;
1167
+ for (let n of t.cubes) {
1168
+ let t = n.measures.find((t) => t.name === e);
1169
+ if (t) return {
1170
+ field: t,
1171
+ cubeName: n.name,
1172
+ fieldType: "measure"
1173
+ };
1174
+ let r = n.dimensions.find((t) => t.name === e);
1175
+ if (r) return {
1176
+ field: r,
1177
+ cubeName: n.name,
1178
+ fieldType: r.type === "time" ? "timeDimension" : "dimension"
1179
+ };
1180
+ }
1181
+ return null;
1182
+ }
1183
+ function le(e, t) {
1184
+ let n = X(e, t);
1185
+ return n && (n.field.title || n.field.shortTitle) || e;
1186
+ }
1187
+ function Z(e, t) {
1188
+ if (!e) return [];
1189
+ let n = [];
1190
+ for (let r of e.cubes) if (t === "metrics") for (let e of r.measures) n.push({
1191
+ name: e.name,
1192
+ title: e.title || e.shortTitle || e.name,
1193
+ shortTitle: e.shortTitle || e.title || e.name,
1194
+ type: e.type,
1195
+ description: e.description,
1196
+ cubeName: r.name,
1197
+ fieldType: "measure"
1198
+ });
1199
+ else if (t === "breakdown" || t === "dimensionFilter") for (let e of r.dimensions) n.push({
1200
+ name: e.name,
1201
+ title: e.title || e.shortTitle || e.name,
1202
+ shortTitle: e.shortTitle || e.title || e.name,
1203
+ type: e.type,
1204
+ description: e.description,
1205
+ cubeName: r.name,
1206
+ fieldType: e.type === "time" ? "timeDimension" : "dimension"
1207
+ });
1208
+ else {
1209
+ for (let e of r.measures) n.push({
1210
+ name: e.name,
1211
+ title: e.title || e.shortTitle || e.name,
1212
+ shortTitle: e.shortTitle || e.title || e.name,
1213
+ type: e.type,
1214
+ description: e.description,
1215
+ cubeName: r.name,
1216
+ fieldType: "measure"
1217
+ });
1218
+ for (let e of r.dimensions) n.push({
1219
+ name: e.name,
1220
+ title: e.title || e.shortTitle || e.name,
1221
+ shortTitle: e.shortTitle || e.title || e.name,
1222
+ type: e.type,
1223
+ description: e.description,
1224
+ cubeName: r.name,
1225
+ fieldType: e.type === "time" ? "timeDimension" : "dimension"
1226
+ });
1227
+ }
1228
+ return n;
1229
+ }
1230
+ function ue(e, t, n) {
1231
+ let r = e;
1232
+ if (n && n !== "all" && (r = r.filter((e) => e.cubeName === n)), t.trim()) {
1233
+ let e = t.toLowerCase();
1234
+ r = r.filter((t) => t.name.toLowerCase().includes(e) || t.title.toLowerCase().includes(e) || (t.description?.toLowerCase().includes(e) ?? !1));
1235
+ }
1236
+ return r;
1237
+ }
1238
+ function de(e) {
1239
+ let t = /* @__PURE__ */ new Map();
1240
+ for (let n of e) {
1241
+ let e = t.get(n.cubeName) || [];
1242
+ e.push(n), t.set(n.cubeName, e);
1243
+ }
1244
+ return t;
1245
+ }
1246
+ function fe(e) {
1247
+ return e ? e.cubes.map((e) => e.name) : [];
1248
+ }
1249
+ function Q(e, t) {
1250
+ return t && t.cubes.find((t) => t.name === e)?.title || e;
1251
+ }
1252
+ function pe(e, t) {
1253
+ let n = /* @__PURE__ */ new Set();
1254
+ if (!t) return n;
1255
+ n.add(e);
1256
+ let r = t.cubes.find((t) => t.name === e);
1257
+ if (!r || !r.relationships) return n;
1258
+ for (let e of r.relationships) n.add(e.targetCube);
1259
+ return n;
1260
+ }
1261
+ function me(e, t) {
1262
+ if (!t) return null;
1263
+ let n = pe(e, t);
1264
+ return { cubes: t.cubes.filter((e) => n.has(e.name)).map((e) => ({
1265
+ ...e,
1266
+ description: e.description || ""
1267
+ })) };
1268
+ }
1269
+ //#endregion
1270
+ //#region src/client/components/AnalysisBuilder/utils/recentFieldsUtils.ts
1271
+ var $ = "drizzle-cube-recent-fields", he = 10;
1272
+ function ge() {
1273
+ try {
1274
+ let e = localStorage.getItem($);
1275
+ if (e) return JSON.parse(e);
1276
+ } catch {}
1277
+ return {
1278
+ metrics: [],
1279
+ breakdowns: []
1280
+ };
1281
+ }
1282
+ function _e(e, t) {
1283
+ try {
1284
+ let n = ge(), r = n[t].filter((t) => t !== e);
1285
+ r.unshift(e), n[t] = r.slice(0, he), localStorage.setItem($, JSON.stringify(n));
1286
+ } catch {}
1287
+ }
1288
+ function ve(e, t, n) {
1289
+ if (!e || n.length === 0) return [];
1290
+ let r = Z(e, t), i = [];
1291
+ for (let e of n) {
1292
+ let t = r.find((t) => t.name === e);
1293
+ t && i.push(t);
1294
+ }
1295
+ return i;
1296
+ }
1297
+ //#endregion
1298
+ //#region src/client/adapters/funnelModeAdapter.ts
1299
+ function ye(e) {
1300
+ let t = "";
1301
+ e.funnelBindingKey && (typeof e.funnelBindingKey.dimension == "string" ? t = e.funnelBindingKey.dimension : Array.isArray(e.funnelBindingKey.dimension) && (t = e.funnelBindingKey.dimension.map((e) => ({
1302
+ cube: e.cube,
1303
+ dimension: e.dimension
1304
+ }))));
1305
+ let n = e.funnelTimeDimension || "", r = e.funnelSteps.map((t) => {
1306
+ let n = { name: t.name };
1307
+ return t.cube && t.cube !== e.funnelCube && (n.cube = t.cube), t.filters && t.filters.length > 0 && (n.filter = t.filters.length === 1 ? t.filters[0] : { and: t.filters }), t.timeToConvert && (n.timeToConvert = t.timeToConvert), n;
1308
+ });
1309
+ return { funnel: {
1310
+ bindingKey: t,
1311
+ timeDimension: n,
1312
+ steps: r,
1313
+ includeTimeMetrics: !0
1314
+ } };
1315
+ }
1316
+ function be(e) {
1317
+ let { funnel: t } = e, n = null;
1318
+ if (t.steps.length > 0 && t.steps[0].cube) n = t.steps[0].cube;
1319
+ else if (typeof t.bindingKey == "string") {
1320
+ let e = t.bindingKey.split(".");
1321
+ e.length > 0 && (n = e[0]);
1322
+ }
1323
+ let r = null;
1324
+ t.bindingKey && (typeof t.bindingKey == "string" ? r = { dimension: t.bindingKey } : Array.isArray(t.bindingKey) && (r = { dimension: t.bindingKey.map((e) => ({
1325
+ cube: e.cube,
1326
+ dimension: e.dimension
1327
+ })) }));
1328
+ let i = null;
1329
+ t.timeDimension && (typeof t.timeDimension == "string" ? i = t.timeDimension : Array.isArray(t.timeDimension) && t.timeDimension.length > 0 && (i = `${t.timeDimension[0].cube}.${t.timeDimension[0].dimension}`));
1330
+ let a = t.steps.map((e) => {
1331
+ let t = [];
1332
+ return e.filter && (t = Array.isArray(e.filter) ? e.filter : typeof e.filter == "object" && "and" in e.filter ? e.filter.and : [e.filter]), {
1333
+ id: Y(),
1334
+ name: e.name,
1335
+ cube: e.cube || n || "",
1336
+ filters: t,
1337
+ timeToConvert: e.timeToConvert
1338
+ };
1339
+ });
1340
+ return {
1341
+ funnelCube: n,
1342
+ funnelSteps: a,
1343
+ activeFunnelStepIndex: 0,
1344
+ funnelTimeDimension: i,
1345
+ funnelBindingKey: r
1346
+ };
1347
+ }
1348
+ function xe(e) {
1349
+ if (!e || typeof e != "object") return !1;
1350
+ let t = e;
1351
+ if (t.version !== 1 || t.analysisType !== "funnel" || !t.query || typeof t.query != "object") return !1;
1352
+ let n = t.query;
1353
+ return !(!n.funnel || typeof n.funnel != "object");
1354
+ }
1355
+ var Se = {
1356
+ type: "funnel",
1357
+ createInitial() {
1358
+ return {
1359
+ funnelCube: null,
1360
+ funnelSteps: [],
1361
+ activeFunnelStepIndex: 0,
1362
+ funnelTimeDimension: null,
1363
+ funnelBindingKey: null
1364
+ };
1365
+ },
1366
+ extractState(e) {
1367
+ return {
1368
+ funnelCube: e.funnelCube,
1369
+ funnelSteps: e.funnelSteps,
1370
+ activeFunnelStepIndex: e.activeFunnelStepIndex,
1371
+ funnelTimeDimension: e.funnelTimeDimension,
1372
+ funnelBindingKey: e.funnelBindingKey
1373
+ };
1374
+ },
1375
+ canLoad(e) {
1376
+ return xe(e);
1377
+ },
1378
+ load(e) {
1379
+ if (e.analysisType !== "funnel") throw Error(`Cannot load ${e.analysisType} config with funnel adapter`);
1380
+ return be(e.query);
1381
+ },
1382
+ save(e, t, n) {
1383
+ return {
1384
+ version: 1,
1385
+ analysisType: "funnel",
1386
+ activeView: n,
1387
+ charts: { funnel: t.funnel || this.getDefaultChartConfig() },
1388
+ query: ye(e)
1389
+ };
1390
+ },
1391
+ validate(e) {
1392
+ let t = [], n = [];
1393
+ e.funnelSteps.length < 2 && t.push("A funnel requires at least 2 steps"), e.funnelBindingKey?.dimension || t.push("A binding key is required to link funnel steps"), e.funnelTimeDimension || t.push("A time dimension is required for funnel ordering"), e.funnelSteps.forEach((e, t) => {
1394
+ (!e.name || e.name.trim() === "") && n.push(`Step ${t + 1} has no name`), e.filters.length === 0 && n.push(`Step ${t + 1} "${e.name}" has no filter - all events will match`);
1395
+ });
1396
+ let r = e.funnelSteps.map((e) => e.name.toLowerCase()), i = r.filter((e, t) => r.indexOf(e) !== t);
1397
+ return i.length > 0 && n.push(`Duplicate step names: ${[...new Set(i)].join(", ")}`), {
1398
+ isValid: t.length === 0,
1399
+ errors: t,
1400
+ warnings: n
1401
+ };
1402
+ },
1403
+ clear(e) {
1404
+ return {
1405
+ ...this.createInitial(),
1406
+ funnelCube: e.funnelCube
1407
+ };
1408
+ },
1409
+ getDefaultChartConfig() {
1410
+ return {
1411
+ chartType: "funnel",
1412
+ chartConfig: {},
1413
+ displayConfig: {
1414
+ showLegend: !0,
1415
+ showGrid: !0,
1416
+ showTooltip: !0
1417
+ }
1418
+ };
1419
+ }
1420
+ };
1421
+ //#endregion
1422
+ //#region src/client/adapters/flowModeAdapter.ts
1423
+ function Ce(e) {
1424
+ let t = "";
1425
+ return e.flowBindingKey && (typeof e.flowBindingKey.dimension == "string" ? t = e.flowBindingKey.dimension : Array.isArray(e.flowBindingKey.dimension) && (t = e.flowBindingKey.dimension.map((e) => ({
1426
+ cube: e.cube,
1427
+ dimension: e.dimension
1428
+ })))), { flow: {
1429
+ bindingKey: t,
1430
+ timeDimension: e.flowTimeDimension || "",
1431
+ startingStep: {
1432
+ name: e.startingStep.name || "Starting Step",
1433
+ filter: e.startingStep.filters.length === 1 ? e.startingStep.filters[0] : e.startingStep.filters.length > 1 ? e.startingStep.filters : void 0
1434
+ },
1435
+ stepsBefore: e.stepsBefore,
1436
+ stepsAfter: e.stepsAfter,
1437
+ eventDimension: e.eventDimension || "",
1438
+ joinStrategy: e.joinStrategy
1439
+ } };
1440
+ }
1441
+ function we(e) {
1442
+ let { flow: t } = e, n = null;
1443
+ if (typeof t.bindingKey == "string") {
1444
+ let e = t.bindingKey.split(".");
1445
+ e.length > 0 && (n = e[0]);
1446
+ } else Array.isArray(t.bindingKey) && t.bindingKey.length > 0 && (n = t.bindingKey[0].cube);
1447
+ let r = null;
1448
+ t.bindingKey && (typeof t.bindingKey == "string" ? r = { dimension: t.bindingKey } : Array.isArray(t.bindingKey) && (r = { dimension: t.bindingKey.map((e) => ({
1449
+ cube: e.cube,
1450
+ dimension: e.dimension
1451
+ })) }));
1452
+ let i = null;
1453
+ t.timeDimension && (typeof t.timeDimension == "string" ? i = t.timeDimension : Array.isArray(t.timeDimension) && t.timeDimension.length > 0 && (i = `${t.timeDimension[0].cube}.${t.timeDimension[0].dimension}`));
1454
+ let a = [];
1455
+ return t.startingStep.filter && (a = Array.isArray(t.startingStep.filter) ? t.startingStep.filter : [t.startingStep.filter]), {
1456
+ flowCube: n,
1457
+ flowBindingKey: r,
1458
+ flowTimeDimension: i,
1459
+ startingStep: {
1460
+ name: t.startingStep.name || "",
1461
+ filters: a
1462
+ },
1463
+ stepsBefore: t.stepsBefore || 3,
1464
+ stepsAfter: t.stepsAfter || 3,
1465
+ eventDimension: t.eventDimension || null,
1466
+ joinStrategy: t.joinStrategy || "auto"
1467
+ };
1468
+ }
1469
+ function Te(e) {
1470
+ if (!e || typeof e != "object") return !1;
1471
+ let t = e;
1472
+ if (t.version !== 1 || t.analysisType !== "flow" || !t.query || typeof t.query != "object") return !1;
1473
+ let n = t.query;
1474
+ return !(!n.flow || typeof n.flow != "object");
1475
+ }
1476
+ var Ee = {
1477
+ type: "flow",
1478
+ createInitial() {
1479
+ return {
1480
+ flowCube: null,
1481
+ flowBindingKey: null,
1482
+ flowTimeDimension: null,
1483
+ startingStep: {
1484
+ name: "",
1485
+ filters: []
1486
+ },
1487
+ stepsBefore: 3,
1488
+ stepsAfter: 3,
1489
+ eventDimension: null,
1490
+ joinStrategy: "auto"
1491
+ };
1492
+ },
1493
+ extractState(e) {
1494
+ return {
1495
+ flowCube: e.flowCube,
1496
+ flowBindingKey: e.flowBindingKey,
1497
+ flowTimeDimension: e.flowTimeDimension,
1498
+ startingStep: e.startingStep,
1499
+ stepsBefore: e.stepsBefore,
1500
+ stepsAfter: e.stepsAfter,
1501
+ eventDimension: e.eventDimension,
1502
+ joinStrategy: e.joinStrategy || "auto"
1503
+ };
1504
+ },
1505
+ canLoad(e) {
1506
+ return Te(e);
1507
+ },
1508
+ load(e) {
1509
+ if (e.analysisType !== "flow") throw Error(`Cannot load ${e.analysisType} config with flow adapter`);
1510
+ return we(e.query);
1511
+ },
1512
+ save(e, t, n) {
1513
+ return {
1514
+ version: 1,
1515
+ analysisType: "flow",
1516
+ activeView: n,
1517
+ charts: { flow: t.flow || this.getDefaultChartConfig() },
1518
+ query: Ce(e)
1519
+ };
1520
+ },
1521
+ validate(e) {
1522
+ let t = [], n = [];
1523
+ return e.flowCube || t.push("Select an event stream cube for flow analysis"), e.flowBindingKey?.dimension || t.push("A binding key is required to link events to entities"), e.flowTimeDimension || t.push("A time dimension is required for event ordering"), e.eventDimension || t.push("An event dimension is required to categorize events"), e.startingStep.filters.length === 0 && t.push("The starting step must have at least one filter to identify the anchor event"), (e.stepsBefore < 0 || e.stepsBefore > 5) && t.push("Steps before must be between 0 and 5"), (e.stepsAfter < 0 || e.stepsAfter > 5) && t.push("Steps after must be between 0 and 5"), e.joinStrategy && ![
1524
+ "auto",
1525
+ "lateral",
1526
+ "window"
1527
+ ].includes(e.joinStrategy) && t.push("Join strategy must be auto, lateral, or window"), e.startingStep.name || n.push("Starting step has no name - using default"), (e.stepsBefore >= 4 || e.stepsAfter >= 4) && n.push("High step depth (4-5) may impact query performance on large datasets"), {
1528
+ isValid: t.length === 0,
1529
+ errors: t,
1530
+ warnings: n
1531
+ };
1532
+ },
1533
+ clear(e) {
1534
+ return {
1535
+ ...this.createInitial(),
1536
+ flowCube: e.flowCube
1537
+ };
1538
+ },
1539
+ getDefaultChartConfig() {
1540
+ return {
1541
+ chartType: "sankey",
1542
+ chartConfig: {},
1543
+ displayConfig: {
1544
+ showLegend: !0,
1545
+ showGrid: !1,
1546
+ showTooltip: !0
1547
+ }
1548
+ };
1549
+ }
1550
+ };
1551
+ //#endregion
1552
+ //#region src/client/adapters/retentionModeAdapter.ts
1553
+ function De(e) {
1554
+ let t = "";
1555
+ e.retentionBindingKey && (typeof e.retentionBindingKey.dimension == "string" ? t = e.retentionBindingKey.dimension : Array.isArray(e.retentionBindingKey.dimension) && (t = e.retentionBindingKey.dimension.map((e) => ({
1556
+ cube: e.cube,
1557
+ dimension: e.dimension
1558
+ }))));
1559
+ let n = { retention: {
1560
+ timeDimension: e.retentionTimeDimension || "",
1561
+ bindingKey: t,
1562
+ dateRange: e.retentionDateRange,
1563
+ granularity: e.retentionViewGranularity,
1564
+ periods: e.retentionPeriods,
1565
+ retentionType: e.retentionType
1566
+ } };
1567
+ return e.retentionCohortFilters.length > 0 && (n.retention.cohortFilters = e.retentionCohortFilters.length === 1 ? e.retentionCohortFilters[0] : e.retentionCohortFilters), e.retentionActivityFilters.length > 0 && (n.retention.activityFilters = e.retentionActivityFilters.length === 1 ? e.retentionActivityFilters[0] : e.retentionActivityFilters), e.retentionBreakdowns && e.retentionBreakdowns.length > 0 && (n.retention.breakdownDimensions = e.retentionBreakdowns.map((e) => e.field)), n;
1568
+ }
1569
+ function Oe(e) {
1570
+ let { retention: t } = e, n = null;
1571
+ if (typeof t.timeDimension == "string") {
1572
+ let e = t.timeDimension.split(".");
1573
+ e.length > 0 && (n = e[0]);
1574
+ } else t.timeDimension?.cube && (n = t.timeDimension.cube);
1575
+ let r = null;
1576
+ t.bindingKey && (typeof t.bindingKey == "string" ? r = { dimension: t.bindingKey } : Array.isArray(t.bindingKey) && (r = { dimension: t.bindingKey.map((e) => ({
1577
+ cube: e.cube,
1578
+ dimension: e.dimension
1579
+ })) }));
1580
+ let i = null;
1581
+ t.timeDimension && (i = typeof t.timeDimension == "string" ? t.timeDimension : `${t.timeDimension.cube}.${t.timeDimension.dimension}`);
1582
+ let a = [];
1583
+ t.cohortFilters && (a = Array.isArray(t.cohortFilters) ? t.cohortFilters : [t.cohortFilters]);
1584
+ let s = [];
1585
+ t.activityFilters && (s = Array.isArray(t.activityFilters) ? t.activityFilters : [t.activityFilters]);
1586
+ let c = [];
1587
+ t.breakdownDimensions && Array.isArray(t.breakdownDimensions) && (c = t.breakdownDimensions.map((e) => ({
1588
+ field: e,
1589
+ label: e.split(".").pop() || e
1590
+ })));
1591
+ let l = t.dateRange || o("last_3_months");
1592
+ return {
1593
+ retentionCube: n,
1594
+ retentionBindingKey: r,
1595
+ retentionTimeDimension: i,
1596
+ retentionDateRange: l,
1597
+ retentionViewGranularity: t.granularity,
1598
+ retentionPeriods: t.periods,
1599
+ retentionType: t.retentionType,
1600
+ retentionCohortFilters: a,
1601
+ retentionActivityFilters: s,
1602
+ retentionBreakdowns: c
1603
+ };
1604
+ }
1605
+ function ke(e) {
1606
+ if (!e || typeof e != "object") return !1;
1607
+ let t = e;
1608
+ if (t.version !== 1 || t.analysisType !== "retention" || !t.query || typeof t.query != "object") return !1;
1609
+ let n = t.query;
1610
+ return !(!n.retention || typeof n.retention != "object");
1611
+ }
1612
+ var Ae = {
1613
+ type: "retention",
1614
+ createInitial() {
1615
+ return { ...i };
1616
+ },
1617
+ extractState(e) {
1618
+ return {
1619
+ retentionCube: e.retentionCube,
1620
+ retentionBindingKey: e.retentionBindingKey,
1621
+ retentionTimeDimension: e.retentionTimeDimension,
1622
+ retentionDateRange: e.retentionDateRange || o("last_3_months"),
1623
+ retentionViewGranularity: e.retentionViewGranularity || "week",
1624
+ retentionPeriods: e.retentionPeriods || 12,
1625
+ retentionType: e.retentionType || "classic",
1626
+ retentionCohortFilters: e.retentionCohortFilters || [],
1627
+ retentionActivityFilters: e.retentionActivityFilters || [],
1628
+ retentionBreakdowns: e.retentionBreakdowns || []
1629
+ };
1630
+ },
1631
+ canLoad(e) {
1632
+ return ke(e);
1633
+ },
1634
+ load(e) {
1635
+ if (e.analysisType !== "retention") throw Error(`Cannot load ${e.analysisType} config with retention adapter`);
1636
+ return Oe(e.query);
1637
+ },
1638
+ save(e, t, n) {
1639
+ return {
1640
+ version: 1,
1641
+ analysisType: "retention",
1642
+ activeView: n,
1643
+ charts: { retention: t.retention || this.getDefaultChartConfig() },
1644
+ query: De(e)
1645
+ };
1646
+ },
1647
+ validate(e) {
1648
+ let t = [], n = [];
1649
+ if (e.retentionCube || t.push("Select a cube for retention analysis"), e.retentionTimeDimension || t.push("Select a timestamp dimension for the analysis"), e.retentionBindingKey?.dimension || t.push("Select a user identifier (binding key) to track retention"), !e.retentionDateRange?.start || !e.retentionDateRange?.end) t.push("Date range is required for retention analysis");
1650
+ else {
1651
+ let n = new Date(e.retentionDateRange.start), r = new Date(e.retentionDateRange.end);
1652
+ isNaN(n.getTime()) && t.push("Invalid start date format"), isNaN(r.getTime()) && t.push("Invalid end date format"), n > r && t.push("Start date must be before or equal to end date");
1653
+ }
1654
+ return e.retentionPeriods < 1 && t.push("At least 1 retention period is required"), e.retentionPeriods > 52 && n.push("More than 52 periods may impact performance"), e.retentionTimeDimension && e.retentionTimeDimension.split(".").length < 2 && n.push("Time dimension should be in format \"Cube.dimension\""), {
1655
+ isValid: t.length === 0,
1656
+ errors: t,
1657
+ warnings: n
1658
+ };
1659
+ },
1660
+ clear(e) {
1661
+ return {
1662
+ ...this.createInitial(),
1663
+ retentionCube: e.retentionCube,
1664
+ retentionDateRange: e.retentionDateRange
1665
+ };
1666
+ },
1667
+ getDefaultChartConfig() {
1668
+ return {
1669
+ chartType: "retentionCombined",
1670
+ chartConfig: {},
1671
+ displayConfig: {
1672
+ showLegend: !0,
1673
+ showTooltip: !0,
1674
+ showGrid: !0,
1675
+ retentionDisplayMode: "combined"
1676
+ }
1677
+ };
1678
+ }
1679
+ };
1680
+ //#endregion
1681
+ //#region src/client/components/AnalysisBuilder/AnalysisDisplayConfigPanel.tsx
1682
+ function je({ label: e, value: t, onChange: n, placeholder: r, description: i }) {
1683
+ let [a, o] = _(() => t.join("\n"));
1684
+ m(() => {
1685
+ o(t.join("\n"));
1686
+ }, [t]);
1687
+ let s = p(() => {
1688
+ n(a.split("\n").map((e) => e.trim()).filter((e) => e.length > 0));
1689
+ }, [a, n]);
1690
+ return /* @__PURE__ */ b("div", {
1691
+ className: "dc:space-y-1",
1692
+ children: [
1693
+ /* @__PURE__ */ y("label", {
1694
+ className: "dc:text-sm text-dc-text-secondary",
1695
+ children: e
1696
+ }),
1697
+ /* @__PURE__ */ y("textarea", {
1698
+ value: a,
1699
+ onChange: (e) => o(e.target.value),
1700
+ onBlur: s,
1701
+ placeholder: r,
1702
+ rows: 4,
1703
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text dc:resize-y"
1704
+ }),
1705
+ i && /* @__PURE__ */ y("p", {
1706
+ className: "dc:text-xs text-dc-text-muted",
1707
+ children: i
1708
+ })
1709
+ ]
1710
+ });
1711
+ }
1712
+ function Me({ chartType: e, displayConfig: t, colorPalette: n, onDisplayConfigChange: i, excludeKeys: a }) {
1713
+ let { config: o, loaded: s } = r(e);
1714
+ return s ? o.displayOptions && o.displayOptions.length > 0 || o.displayOptionsConfig && o.displayOptionsConfig.length > 0 ? /* @__PURE__ */ y("div", {
1715
+ className: "dc:space-y-6",
1716
+ children: /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y(l, {
1717
+ className: "dc:mb-2",
1718
+ children: "Display Options"
1719
+ }), /* @__PURE__ */ b("div", {
1720
+ className: "dc:space-y-2",
1721
+ children: [
1722
+ o.displayOptions?.includes("showLegend") && /* @__PURE__ */ b("label", {
1723
+ className: "dc:flex dc:items-center dc:space-x-2",
1724
+ children: [/* @__PURE__ */ y("input", {
1725
+ type: "checkbox",
1726
+ checked: t.showLegend ?? !0,
1727
+ onChange: (e) => i({
1728
+ ...t,
1729
+ showLegend: e.target.checked
1730
+ }),
1731
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1732
+ style: { color: "var(--dc-primary)" }
1733
+ }), /* @__PURE__ */ y("span", {
1734
+ className: "dc:text-sm text-dc-text",
1735
+ children: "Show Legend"
1736
+ })]
1737
+ }),
1738
+ o.displayOptions?.includes("showGrid") && /* @__PURE__ */ b("label", {
1739
+ className: "dc:flex dc:items-center dc:space-x-2",
1740
+ children: [/* @__PURE__ */ y("input", {
1741
+ type: "checkbox",
1742
+ checked: t.showGrid ?? !0,
1743
+ onChange: (e) => i({
1744
+ ...t,
1745
+ showGrid: e.target.checked
1746
+ }),
1747
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1748
+ style: { color: "var(--dc-primary)" }
1749
+ }), /* @__PURE__ */ y("span", {
1750
+ className: "dc:text-sm text-dc-text",
1751
+ children: "Show Grid"
1752
+ })]
1753
+ }),
1754
+ o.displayOptions?.includes("showTooltip") && /* @__PURE__ */ b("label", {
1755
+ className: "dc:flex dc:items-center dc:space-x-2",
1756
+ children: [/* @__PURE__ */ y("input", {
1757
+ type: "checkbox",
1758
+ checked: t.showTooltip ?? !0,
1759
+ onChange: (e) => i({
1760
+ ...t,
1761
+ showTooltip: e.target.checked
1762
+ }),
1763
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1764
+ style: { color: "var(--dc-primary)" }
1765
+ }), /* @__PURE__ */ y("span", {
1766
+ className: "dc:text-sm text-dc-text",
1767
+ children: "Show Tooltip"
1768
+ })]
1769
+ }),
1770
+ o.displayOptions?.includes("stacked") && /* @__PURE__ */ b("label", {
1771
+ className: "dc:flex dc:items-center dc:space-x-2",
1772
+ children: [/* @__PURE__ */ y("input", {
1773
+ type: "checkbox",
1774
+ checked: t.stacked ?? !1,
1775
+ onChange: (e) => i({
1776
+ ...t,
1777
+ stacked: e.target.checked
1778
+ }),
1779
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1780
+ style: { color: "var(--dc-primary)" }
1781
+ }), /* @__PURE__ */ y("span", {
1782
+ className: "dc:text-sm text-dc-text",
1783
+ children: "Stacked"
1784
+ })]
1785
+ }),
1786
+ o.displayOptions?.includes("hideHeader") && /* @__PURE__ */ b("label", {
1787
+ className: "dc:flex dc:items-center dc:space-x-2",
1788
+ children: [/* @__PURE__ */ y("input", {
1789
+ type: "checkbox",
1790
+ checked: t.hideHeader ?? !1,
1791
+ onChange: (e) => i({
1792
+ ...t,
1793
+ hideHeader: e.target.checked
1794
+ }),
1795
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1796
+ style: { color: "var(--dc-primary)" }
1797
+ }), /* @__PURE__ */ y("span", {
1798
+ className: "dc:text-sm text-dc-text",
1799
+ children: "Hide Header"
1800
+ })]
1801
+ }),
1802
+ o.displayOptionsConfig?.filter((e) => !a?.includes(e.key)).map((e) => /* @__PURE__ */ b("div", {
1803
+ className: `dc:space-y-1 ${e.type === "axisFormat" ? "dc:mt-6 dc:pt-2" : ""}`,
1804
+ children: [
1805
+ e.type === "boolean" && /* @__PURE__ */ b("label", {
1806
+ className: "dc:flex dc:items-center dc:space-x-2",
1807
+ children: [/* @__PURE__ */ y("input", {
1808
+ type: "checkbox",
1809
+ checked: t[e.key] ?? e.defaultValue ?? !1,
1810
+ onChange: (n) => i({
1811
+ ...t,
1812
+ [e.key]: n.target.checked
1813
+ }),
1814
+ className: "dc:rounded border-dc-border focus:ring-dc-accent",
1815
+ style: { color: "var(--dc-primary)" }
1816
+ }), /* @__PURE__ */ y("span", {
1817
+ className: "dc:text-sm text-dc-text",
1818
+ children: e.label
1819
+ })]
1820
+ }),
1821
+ e.type === "string" && /* @__PURE__ */ b("div", {
1822
+ className: "dc:space-y-1",
1823
+ children: [
1824
+ /* @__PURE__ */ b("label", {
1825
+ className: "dc:text-sm text-dc-text-secondary",
1826
+ children: [e.label, e.key === "content" && /* @__PURE__ */ y("span", {
1827
+ className: "dc:text-xs text-dc-text-muted dc:ml-1",
1828
+ children: "(only headers, lists and links)"
1829
+ })]
1830
+ }),
1831
+ e.key === "content" ? /* @__PURE__ */ y("textarea", {
1832
+ value: t[e.key] ?? e.defaultValue ?? "",
1833
+ onChange: (n) => i({
1834
+ ...t,
1835
+ [e.key]: n.target.value
1836
+ }),
1837
+ placeholder: e.placeholder,
1838
+ rows: 8,
1839
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent dc:font-mono dc:resize-y bg-dc-surface text-dc-text"
1840
+ }) : /* @__PURE__ */ y("input", {
1841
+ type: "text",
1842
+ value: t[e.key] ?? e.defaultValue ?? "",
1843
+ onChange: (n) => i({
1844
+ ...t,
1845
+ [e.key]: n.target.value
1846
+ }),
1847
+ placeholder: e.placeholder,
1848
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
1849
+ }),
1850
+ e.description && /* @__PURE__ */ y("p", {
1851
+ className: "dc:text-xs text-dc-text-muted",
1852
+ children: e.description
1853
+ })
1854
+ ]
1855
+ }),
1856
+ e.type === "paletteColor" && /* @__PURE__ */ b("div", {
1857
+ className: "dc:space-y-1",
1858
+ children: [
1859
+ /* @__PURE__ */ y("label", {
1860
+ className: "dc:text-sm text-dc-text-secondary",
1861
+ children: e.label
1862
+ }),
1863
+ /* @__PURE__ */ y("div", {
1864
+ className: "dc:flex dc:flex-wrap dc:gap-2",
1865
+ children: n?.colors.map((n, r) => {
1866
+ let a = (t[e.key] ?? e.defaultValue ?? 0) === r;
1867
+ return /* @__PURE__ */ y("button", {
1868
+ type: "button",
1869
+ onClick: () => i({
1870
+ ...t,
1871
+ [e.key]: r
1872
+ }),
1873
+ className: `dc:w-8 dc:h-8 dc:rounded dc:border-2 dc:transition-all dc:duration-200 dc:hover:scale-110 focus:outline-hidden dc:focus:ring-2 focus:ring-dc-accent dc:focus:ring-offset-1 ${a ? "dc:ring-2 dc:ring-offset-1 dc:scale-110" : "hover:border-dc-text-muted"}`,
1874
+ style: {
1875
+ backgroundColor: n,
1876
+ borderColor: a ? "var(--dc-primary)" : "var(--dc-border)"
1877
+ },
1878
+ title: `Color ${r + 1}: ${n}`
1879
+ }, r);
1880
+ }) || [/* @__PURE__ */ y("button", {
1881
+ type: "button",
1882
+ onClick: () => i({
1883
+ ...t,
1884
+ [e.key]: 0
1885
+ }),
1886
+ className: "dc:w-8 dc:h-8 dc:rounded-sm dc:border-2 dc:ring-2 dc:ring-offset-1",
1887
+ style: {
1888
+ backgroundColor: "#8884d8",
1889
+ borderColor: "var(--dc-primary)",
1890
+ boxShadow: "0 0 0 2px var(--dc-primary)"
1891
+ },
1892
+ title: "Default Color"
1893
+ }, 0)]
1894
+ }),
1895
+ e.description && /* @__PURE__ */ y("p", {
1896
+ className: "dc:text-xs text-dc-text-muted",
1897
+ children: e.description
1898
+ })
1899
+ ]
1900
+ }),
1901
+ e.type === "number" && /* @__PURE__ */ b("div", {
1902
+ className: "dc:space-y-1",
1903
+ children: [
1904
+ /* @__PURE__ */ y("label", {
1905
+ className: "dc:text-sm text-dc-text-secondary",
1906
+ children: e.label
1907
+ }),
1908
+ /* @__PURE__ */ y("input", {
1909
+ type: "number",
1910
+ value: t[e.key] ?? e.defaultValue ?? 0,
1911
+ onChange: (n) => i({
1912
+ ...t,
1913
+ [e.key]: n.target.value === "" ? void 0 : Number(n.target.value)
1914
+ }),
1915
+ placeholder: e.placeholder,
1916
+ min: e.min,
1917
+ max: e.max,
1918
+ step: e.step,
1919
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
1920
+ }),
1921
+ e.description && /* @__PURE__ */ y("p", {
1922
+ className: "dc:text-xs text-dc-text-muted",
1923
+ children: e.description
1924
+ })
1925
+ ]
1926
+ }),
1927
+ e.type === "select" && /* @__PURE__ */ b("div", {
1928
+ className: "dc:space-y-1",
1929
+ children: [
1930
+ /* @__PURE__ */ y("label", {
1931
+ className: "dc:text-sm text-dc-text-secondary",
1932
+ children: e.label
1933
+ }),
1934
+ /* @__PURE__ */ y("select", {
1935
+ value: t[e.key] ?? e.defaultValue ?? "",
1936
+ onChange: (n) => i({
1937
+ ...t,
1938
+ [e.key]: n.target.value
1939
+ }),
1940
+ className: "dc:w-full dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text",
1941
+ children: e.options?.map((e) => /* @__PURE__ */ y("option", {
1942
+ value: e.value,
1943
+ children: e.label
1944
+ }, e.value))
1945
+ }),
1946
+ e.description && /* @__PURE__ */ y("p", {
1947
+ className: "dc:text-xs text-dc-text-muted",
1948
+ children: e.description
1949
+ })
1950
+ ]
1951
+ }),
1952
+ e.type === "color" && /* @__PURE__ */ b("div", {
1953
+ className: "dc:space-y-1",
1954
+ children: [
1955
+ /* @__PURE__ */ y("label", {
1956
+ className: "dc:text-sm text-dc-text-secondary",
1957
+ children: e.label
1958
+ }),
1959
+ /* @__PURE__ */ b("div", {
1960
+ className: "dc:flex dc:items-center dc:space-x-2",
1961
+ children: [/* @__PURE__ */ y("input", {
1962
+ type: "color",
1963
+ value: t[e.key] ?? e.defaultValue ?? "#8884d8",
1964
+ onChange: (n) => i({
1965
+ ...t,
1966
+ [e.key]: n.target.value
1967
+ }),
1968
+ className: "dc:w-12 dc:h-8 dc:border border-dc-border dc:rounded-sm dc:cursor-pointer"
1969
+ }), /* @__PURE__ */ y("input", {
1970
+ type: "text",
1971
+ value: t[e.key] ?? e.defaultValue ?? "#8884d8",
1972
+ onChange: (n) => i({
1973
+ ...t,
1974
+ [e.key]: n.target.value
1975
+ }),
1976
+ placeholder: e.placeholder || "#8884d8",
1977
+ className: "dc:flex-1 dc:px-2 dc:py-1 dc:text-sm dc:border border-dc-border dc:rounded-sm focus:ring-dc-accent focus:border-dc-accent bg-dc-surface text-dc-text"
1978
+ })]
1979
+ }),
1980
+ e.description && /* @__PURE__ */ y("p", {
1981
+ className: "dc:text-xs text-dc-text-muted",
1982
+ children: e.description
1983
+ })
1984
+ ]
1985
+ }),
1986
+ e.type === "axisFormat" && /* @__PURE__ */ y(u, {
1987
+ axisLabel: e.label,
1988
+ value: t[e.key] || {},
1989
+ onChange: (n) => i({
1990
+ ...t,
1991
+ [e.key]: Object.keys(n).length > 0 ? n : void 0
1992
+ })
1993
+ }),
1994
+ e.type === "stringArray" && /* @__PURE__ */ y(je, {
1995
+ label: e.label,
1996
+ value: t[e.key] ?? [],
1997
+ onChange: (n) => i({
1998
+ ...t,
1999
+ [e.key]: n.length > 0 ? n : void 0
2000
+ }),
2001
+ placeholder: e.placeholder,
2002
+ description: e.description
2003
+ }),
2004
+ e.type === "buttonGroup" && /* @__PURE__ */ b("div", {
2005
+ className: "dc:space-y-1",
2006
+ children: [
2007
+ /* @__PURE__ */ y("label", {
2008
+ className: "dc:text-sm text-dc-text-secondary",
2009
+ children: e.label
2010
+ }),
2011
+ /* @__PURE__ */ y("div", {
2012
+ className: "dc:flex dc:border border-dc-border dc:rounded-sm dc:overflow-hidden",
2013
+ children: e.options?.map((n) => /* @__PURE__ */ y("button", {
2014
+ type: "button",
2015
+ onClick: () => i({
2016
+ ...t,
2017
+ [e.key]: n.value
2018
+ }),
2019
+ className: `dc:flex-1 dc:px-3 dc:py-1.5 dc:text-sm dc:font-medium dc:transition-colors ${(t[e.key] ?? e.defaultValue) === n.value ? "bg-dc-primary text-white" : "bg-dc-surface text-dc-text hover:bg-dc-border"}`,
2020
+ children: n.label
2021
+ }, n.value))
2022
+ }),
2023
+ e.description && /* @__PURE__ */ y("p", {
2024
+ className: "dc:text-xs text-dc-text-muted",
2025
+ children: e.description
2026
+ })
2027
+ ]
2028
+ })
2029
+ ]
2030
+ }, e.key))
2031
+ ]
2032
+ })] })
2033
+ }) : /* @__PURE__ */ y("div", {
2034
+ className: "dc:text-center text-dc-text-muted dc:text-sm dc:py-4",
2035
+ children: /* @__PURE__ */ y("p", { children: "No display options available for this chart type." })
2036
+ }) : /* @__PURE__ */ y("div", {
2037
+ className: "dc:text-center text-dc-text-muted dc:text-sm dc:py-4",
2038
+ children: "Loading display options..."
2039
+ });
2040
+ }
2041
+ //#endregion
2042
+ //#region src/client/components/ConfirmModal.tsx
2043
+ var Ne = ({ isOpen: e, onClose: t, onConfirm: n, title: r = "Confirm", message: i, confirmText: a = "Confirm", cancelText: o = "Cancel", confirmVariant: s = "primary", isLoading: c = !1 }) => /* @__PURE__ */ y(J, {
2044
+ isOpen: e,
2045
+ onClose: t,
2046
+ title: r,
2047
+ size: "sm",
2048
+ closeOnBackdropClick: !c,
2049
+ closeOnEscape: !c,
2050
+ footer: /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y("button", {
2051
+ type: "button",
2052
+ onClick: t,
2053
+ disabled: c,
2054
+ className: "dc:px-4 dc:py-2 dc:text-sm dc:font-medium text-dc-text-secondary bg-dc-surface dc:border border-dc-border dc:rounded-md hover:bg-dc-surface-hover dc:transition-colors dc:focus:outline-none dc:focus:ring-2 dc:focus:ring-offset-2 focus:ring-dc-primary dc:disabled:opacity-50 dc:disabled:cursor-not-allowed",
2055
+ children: o
2056
+ }), /* @__PURE__ */ y("button", {
2057
+ type: "button",
2058
+ onClick: async () => {
2059
+ await n(), t();
2060
+ },
2061
+ disabled: c,
2062
+ className: (() => {
2063
+ let e = "dc:px-4 dc:py-2 dc:text-sm dc:font-medium dc:rounded-md dc:transition-colors dc:focus:outline-none dc:focus:ring-2 dc:focus:ring-offset-2 dc:disabled:opacity-50 dc:disabled:cursor-not-allowed";
2064
+ switch (s) {
2065
+ case "danger": return `${e} bg-dc-danger dc:text-white dc:hover:bg-dc-danger/90 focus:ring-dc-danger`;
2066
+ case "warning": return `${e} bg-dc-warning dc:text-white dc:hover:bg-dc-warning/90 focus:ring-dc-warning`;
2067
+ default: return `${e} bg-dc-primary dc:text-white dc:hover:bg-dc-primary/90 focus:ring-dc-primary`;
2068
+ }
2069
+ })(),
2070
+ children: c ? /* @__PURE__ */ b("span", {
2071
+ className: "dc:flex dc:items-center dc:gap-2",
2072
+ children: [/* @__PURE__ */ b("svg", {
2073
+ className: "dc:animate-spin dc:h-4 dc:w-4",
2074
+ xmlns: "http://www.w3.org/2000/svg",
2075
+ fill: "none",
2076
+ viewBox: "0 0 24 24",
2077
+ children: [/* @__PURE__ */ y("circle", {
2078
+ className: "dc:opacity-25",
2079
+ cx: "12",
2080
+ cy: "12",
2081
+ r: "10",
2082
+ stroke: "currentColor",
2083
+ strokeWidth: "4"
2084
+ }), /* @__PURE__ */ y("path", {
2085
+ className: "dc:opacity-75",
2086
+ fill: "currentColor",
2087
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
2088
+ })]
2089
+ }), "Processing..."]
2090
+ }) : a
2091
+ })] }),
2092
+ children: /* @__PURE__ */ y("div", {
2093
+ className: "text-dc-text-secondary",
2094
+ children: i
2095
+ })
2096
+ }), Pe = e("chevronDown");
2097
+ function Fe({ currentPalette: e = "default", onPaletteChange: t, className: n = "" }) {
2098
+ let [r, i] = _(!1), a = g(null), o = q(e);
2099
+ m(() => {
2100
+ function e(e) {
2101
+ a.current && !a.current.contains(e.target) && i(!1);
2102
+ }
2103
+ if (r) return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
2104
+ }, [r]);
2105
+ let s = (e) => {
2106
+ t(e), i(!1);
2107
+ };
2108
+ return /* @__PURE__ */ b("div", {
2109
+ className: `dc:relative ${n}`,
2110
+ ref: a,
2111
+ children: [/* @__PURE__ */ b("button", {
2112
+ type: "button",
2113
+ onClick: () => i(!r),
2114
+ className: "dc:inline-flex dc:items-center dc:gap-2 dc:px-3 dc:py-1.5 bg-dc-surface dc:border border-dc-border dc:rounded-md shadow-xs dc:text-sm dc:font-medium text-dc-text-secondary hover:bg-dc-surface-hover focus:outline-hidden dc:focus:ring-2 dc:focus:ring-offset-2 focus:ring-dc-accent",
2115
+ children: [
2116
+ /* @__PURE__ */ b("div", {
2117
+ className: "dc:hidden dc:md:flex dc:items-center dc:gap-1.5",
2118
+ children: [
2119
+ /* @__PURE__ */ y("div", {
2120
+ className: "dc:flex dc:gap-0.5",
2121
+ children: o.colors.slice(0, 4).map((e, t) => /* @__PURE__ */ y("div", {
2122
+ className: "dc:w-3 dc:h-3 rounded-xs dc:border border-dc-border",
2123
+ style: { backgroundColor: e },
2124
+ title: `Series Color ${t + 1}`
2125
+ }, t))
2126
+ }),
2127
+ /* @__PURE__ */ y("span", {
2128
+ className: "dc:text-xs text-dc-text-secondary",
2129
+ children: "|"
2130
+ }),
2131
+ /* @__PURE__ */ y("div", {
2132
+ className: "dc:flex dc:gap-0.5",
2133
+ children: o.gradient.slice(0, 3).map((e, t) => /* @__PURE__ */ y("div", {
2134
+ className: "dc:w-2 dc:h-3 dc:border-r dc:first:rounded-l-sm dc:last:rounded-r-sm dc:last:border-r-0",
2135
+ style: {
2136
+ backgroundColor: e,
2137
+ borderColor: "var(--dc-border)"
2138
+ },
2139
+ title: `Gradient Color ${t + 1}`
2140
+ }, t))
2141
+ })
2142
+ ]
2143
+ }),
2144
+ /* @__PURE__ */ y("span", { children: o.label }),
2145
+ /* @__PURE__ */ y(Pe, { className: `dc:w-4 dc:h-4 dc:transition-transform ${r ? "dc:rotate-180" : ""}` })
2146
+ ]
2147
+ }), r && /* @__PURE__ */ y("div", {
2148
+ className: "dc:absolute dc:top-full dc:left-0 dc:mt-1 dc:w-72 dc:md:w-80 dc:lg:w-96 bg-dc-surface dc:border border-dc-border dc:rounded-md dc:shadow-lg dc:z-50 dc:max-h-80 dc:overflow-y-auto",
2149
+ children: /* @__PURE__ */ y("div", {
2150
+ className: "dc:py-1",
2151
+ children: K.slice().sort((e, t) => e.label.localeCompare(t.label)).map((t) => /* @__PURE__ */ y("button", {
2152
+ type: "button",
2153
+ onClick: () => s(t.name),
2154
+ className: `dc:w-full dc:px-3 dc:py-2 dc:text-left dc:text-sm hover:bg-dc-surface-hover focus:outline-hidden focus:bg-dc-surface-hover ${t.name === e ? "bg-dc-surface-secondary" : "text-dc-text-secondary"}`,
2155
+ style: t.name === e ? { color: "var(--dc-primary)" } : void 0,
2156
+ children: /* @__PURE__ */ b("div", {
2157
+ className: "dc:flex dc:items-center dc:gap-3",
2158
+ children: [
2159
+ /* @__PURE__ */ b("div", {
2160
+ className: "dc:hidden dc:md:flex dc:items-center dc:gap-2",
2161
+ children: [
2162
+ /* @__PURE__ */ y("div", {
2163
+ className: "dc:flex dc:gap-0.5",
2164
+ children: t.colors.slice(0, 6).map((e, t) => /* @__PURE__ */ y("div", {
2165
+ className: "dc:w-3 dc:h-3 rounded-xs dc:border border-dc-border",
2166
+ style: { backgroundColor: e }
2167
+ }, `series-${t}`))
2168
+ }),
2169
+ /* @__PURE__ */ y("div", { className: "dc:w-px dc:h-4 bg-dc-border" }),
2170
+ /* @__PURE__ */ y("div", {
2171
+ className: "dc:flex",
2172
+ children: t.gradient.map((e, t) => /* @__PURE__ */ y("div", {
2173
+ className: "dc:w-2 dc:h-4 dc:first:rounded-l-sm dc:last:rounded-r-sm",
2174
+ style: { backgroundColor: e }
2175
+ }, `gradient-${t}`))
2176
+ })
2177
+ ]
2178
+ }),
2179
+ /* @__PURE__ */ y("span", {
2180
+ className: "dc:font-medium",
2181
+ children: t.label
2182
+ }),
2183
+ t.name === e && /* @__PURE__ */ y("div", {
2184
+ className: "dc:ml-auto",
2185
+ children: /* @__PURE__ */ y("div", {
2186
+ className: "dc:w-2 dc:h-2 dc:rounded-full",
2187
+ style: { backgroundColor: "var(--dc-primary)" }
2188
+ })
2189
+ })
2190
+ ]
2191
+ })
2192
+ }, t.name))
2193
+ })
2194
+ })]
2195
+ });
2196
+ }
2197
+ //#endregion
2198
+ //#region src/client/components/AnalysisBuilder/FieldSearchItem.tsx
2199
+ var Ie = e("check");
2200
+ function Le({ field: e, isSelected: r, isFocused: i, onClick: a, onMouseEnter: o, ...s }) {
2201
+ let c = () => {
2202
+ if (e.fieldType === "measure") {
2203
+ let n = t(e.type);
2204
+ return n ? /* @__PURE__ */ y(n, { className: "dc:w-4 dc:h-4" }) : null;
2205
+ } else if (e.fieldType === "timeDimension") {
2206
+ let e = n("time");
2207
+ return e ? /* @__PURE__ */ y(e, { className: "dc:w-4 dc:h-4" }) : null;
2208
+ } else {
2209
+ let e = n("dimension");
2210
+ return e ? /* @__PURE__ */ y(e, { className: "dc:w-4 dc:h-4" }) : null;
2211
+ }
2212
+ }, l = () => e.fieldType === "measure" ? "bg-dc-measure text-dc-measure-text" : e.fieldType === "timeDimension" ? "bg-dc-time-dimension text-dc-time-dimension-text" : "bg-dc-dimension text-dc-dimension-text", u = () => e.fieldType === "measure" ? e.type.charAt(0).toUpperCase() + e.type.slice(1) : e.fieldType === "timeDimension" ? "Time" : "Dim";
2213
+ return /* @__PURE__ */ b("button", {
2214
+ onClick: a,
2215
+ onMouseEnter: o,
2216
+ className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:rounded-lg dc:flex dc:items-center dc:gap-3 dc:transition-colors dc:group ${i ? "bg-dc-primary/10 dc:ring-1 ring-dc-primary" : r ? "bg-dc-success/10" : "hover:bg-dc-surface-hover"}`,
2217
+ ...s,
2218
+ children: [
2219
+ /* @__PURE__ */ y("span", {
2220
+ className: `dc:shrink-0 dc:w-8 dc:h-8 dc:flex dc:items-center dc:justify-center dc:rounded-md ${e.fieldType === "measure" ? "bg-dc-measure text-dc-measure-text" : e.fieldType === "timeDimension" ? "bg-dc-time-dimension text-dc-time-dimension-text" : "bg-dc-dimension text-dc-dimension-text"}`,
2221
+ children: c()
2222
+ }),
2223
+ /* @__PURE__ */ b("div", {
2224
+ className: "dc:flex-1 dc:min-w-0",
2225
+ children: [/* @__PURE__ */ y("div", {
2226
+ className: "dc:text-sm dc:font-medium text-dc-text dc:truncate",
2227
+ children: e.title
2228
+ }), /* @__PURE__ */ y("div", {
2229
+ className: "dc:text-xs text-dc-text-muted dc:truncate",
2230
+ children: e.name
2231
+ })]
2232
+ }),
2233
+ /* @__PURE__ */ y("span", {
2234
+ className: `dc:shrink-0 dc:px-2 dc:py-0.5 dc:rounded dc:text-xs dc:font-medium ${l()}`,
2235
+ children: u()
2236
+ }),
2237
+ r && /* @__PURE__ */ y("span", {
2238
+ className: "dc:shrink-0 dc:w-5 dc:h-5 dc:flex dc:items-center dc:justify-center dc:rounded-full bg-dc-success text-white",
2239
+ children: /* @__PURE__ */ y(Ie, { className: "dc:w-3 dc:h-3" })
2240
+ })
2241
+ ]
2242
+ });
2243
+ }
2244
+ var Re = f(Le);
2245
+ //#endregion
2246
+ //#region src/client/components/AnalysisBuilder/FieldDetailPanel.tsx
2247
+ function ze({ field: e }) {
2248
+ return e ? /* @__PURE__ */ b("div", {
2249
+ className: "dc:p-4",
2250
+ children: [
2251
+ /* @__PURE__ */ b("div", {
2252
+ className: "dc:flex dc:items-start dc:gap-3 dc:mb-4",
2253
+ children: [/* @__PURE__ */ y("span", {
2254
+ className: `dc:shrink-0 dc:w-12 dc:h-12 dc:flex dc:items-center dc:justify-center dc:rounded-lg ${e.fieldType === "measure" ? "bg-dc-measure text-dc-measure-text" : e.fieldType === "timeDimension" ? "bg-dc-time-dimension text-dc-time-dimension-text" : "bg-dc-dimension text-dc-dimension-text"}`,
2255
+ children: (() => {
2256
+ if (e.fieldType === "measure") {
2257
+ let n = t(e.type);
2258
+ return n ? /* @__PURE__ */ y(n, { className: "dc:w-6 dc:h-6" }) : null;
2259
+ } else if (e.fieldType === "timeDimension") {
2260
+ let e = n("time");
2261
+ return e ? /* @__PURE__ */ y(e, { className: "dc:w-6 dc:h-6" }) : null;
2262
+ } else {
2263
+ let e = n("dimension");
2264
+ return e ? /* @__PURE__ */ y(e, { className: "dc:w-6 dc:h-6" }) : null;
2265
+ }
2266
+ })()
2267
+ }), /* @__PURE__ */ b("div", {
2268
+ className: "dc:flex-1 dc:min-w-0",
2269
+ children: [/* @__PURE__ */ y("h3", {
2270
+ className: "dc:text-base dc:font-semibold text-dc-text dc:leading-tight",
2271
+ children: e.title
2272
+ }), /* @__PURE__ */ y("p", {
2273
+ className: "dc:text-xs text-dc-text-muted dc:mt-0.5 dc:truncate",
2274
+ children: e.name
2275
+ })]
2276
+ })]
2277
+ }),
2278
+ e.description && /* @__PURE__ */ y("div", {
2279
+ className: "dc:mb-4",
2280
+ children: /* @__PURE__ */ y("p", {
2281
+ className: "dc:text-sm text-dc-text-secondary dc:leading-relaxed",
2282
+ children: e.description
2283
+ })
2284
+ }),
2285
+ /* @__PURE__ */ b("div", {
2286
+ className: "dc:space-y-3 dc:pt-4 dc:border-t border-dc-border",
2287
+ children: [
2288
+ /* @__PURE__ */ b("div", {
2289
+ className: "dc:flex dc:items-center dc:justify-between",
2290
+ children: [/* @__PURE__ */ y("span", {
2291
+ className: "dc:text-xs text-dc-text-muted",
2292
+ children: "Type"
2293
+ }), /* @__PURE__ */ y("span", {
2294
+ className: "dc:text-sm text-dc-text dc:font-medium",
2295
+ children: e.fieldType === "measure" ? {
2296
+ count: "Count",
2297
+ countDistinct: "Count Distinct",
2298
+ countDistinctApprox: "Count Distinct (Approx)",
2299
+ sum: "Sum",
2300
+ avg: "Average",
2301
+ min: "Minimum",
2302
+ max: "Maximum",
2303
+ runningTotal: "Running Total",
2304
+ number: "Number"
2305
+ }[e.type] || e.type : e.fieldType === "timeDimension" ? "Time Dimension" : {
2306
+ string: "Text",
2307
+ number: "Number",
2308
+ boolean: "Boolean",
2309
+ geo: "Geographic"
2310
+ }[e.type] || "Dimension"
2311
+ })]
2312
+ }),
2313
+ /* @__PURE__ */ b("div", {
2314
+ className: "dc:flex dc:items-center dc:justify-between",
2315
+ children: [/* @__PURE__ */ y("span", {
2316
+ className: "dc:text-xs text-dc-text-muted",
2317
+ children: "Cube"
2318
+ }), /* @__PURE__ */ y("span", {
2319
+ className: "dc:text-sm text-dc-text dc:font-medium",
2320
+ children: e.cubeName
2321
+ })]
2322
+ }),
2323
+ /* @__PURE__ */ b("div", {
2324
+ className: "dc:flex dc:items-center dc:justify-between",
2325
+ children: [/* @__PURE__ */ y("span", {
2326
+ className: "dc:text-xs text-dc-text-muted",
2327
+ children: "Category"
2328
+ }), /* @__PURE__ */ y("span", {
2329
+ className: `dc:text-xs dc:px-2 dc:py-0.5 dc:rounded dc:font-medium ${e.fieldType === "measure" ? "bg-dc-measure text-dc-measure-text" : e.fieldType === "timeDimension" ? "bg-dc-time-dimension text-dc-time-dimension-text" : "bg-dc-dimension text-dc-dimension-text"}`,
2330
+ children: e.fieldType === "measure" ? "Measure" : e.fieldType === "timeDimension" ? "Time Dimension" : "Dimension"
2331
+ })]
2332
+ })
2333
+ ]
2334
+ }),
2335
+ /* @__PURE__ */ y("div", {
2336
+ className: "dc:mt-6 dc:p-3 bg-dc-surface dc:rounded-lg",
2337
+ children: /* @__PURE__ */ b("p", {
2338
+ className: "dc:text-xs text-dc-text-muted",
2339
+ children: [
2340
+ "Press ",
2341
+ /* @__PURE__ */ y("kbd", {
2342
+ className: "dc:px-1 dc:py-0.5 bg-dc-surface-tertiary dc:rounded dc:text-xs",
2343
+ children: "Enter"
2344
+ }),
2345
+ " or click to add this field to your query."
2346
+ ]
2347
+ })
2348
+ })
2349
+ ]
2350
+ }) : /* @__PURE__ */ y("div", {
2351
+ className: "dc:p-6 dc:text-center text-dc-text-muted",
2352
+ children: /* @__PURE__ */ y("p", {
2353
+ className: "dc:text-sm",
2354
+ children: "Hover over a field to see details"
2355
+ })
2356
+ });
2357
+ }
2358
+ var Be = f(ze), Ve = e("search"), He = e("close");
2359
+ function Ue({ isOpen: e, onClose: t, onSelect: n, mode: r, schema: i, selectedFields: a, recentFields: o }) {
2360
+ let [s, c] = _(""), [l, u] = _(null), [d, f] = _(null), [v, x] = _(-1), [S, C] = _(null), w = g(null), T = g(null), E = h(() => {
2361
+ if (o) return o;
2362
+ let e = ge();
2363
+ return r === "metrics" ? e.metrics : e.breakdowns;
2364
+ }, [o, r]), D = r, O = h(() => Z(i, D), [i, D]), k = h(() => fe(i), [i]), A = h(() => ue(O, s, l), [
2365
+ O,
2366
+ s,
2367
+ l
2368
+ ]), j = h(() => de(A), [A]), M = h(() => s.trim() ? [] : ve(i, D, E).filter((e) => !l || e.cubeName === l), [
2369
+ i,
2370
+ D,
2371
+ E,
2372
+ s,
2373
+ l
2374
+ ]), N = h(() => {
2375
+ let e = [...M];
2376
+ return j.forEach((t) => {
2377
+ e.push(...t);
2378
+ }), e;
2379
+ }, [M, j]);
2380
+ m(() => {
2381
+ e && w.current && w.current.focus();
2382
+ }, [e]), m(() => {
2383
+ e || (c(""), u(null), f(null), x(-1), C(null));
2384
+ }, [e]);
2385
+ let P = p((e, t = !1) => {
2386
+ _e(e.name, r === "metrics" ? "metrics" : "breakdowns"), n({
2387
+ name: e.name,
2388
+ title: e.title,
2389
+ shortTitle: e.shortTitle,
2390
+ type: e.type,
2391
+ description: e.description
2392
+ }, e.fieldType, e.cubeName, t);
2393
+ }, [r, n]), F = p((e, t, n = !1) => {
2394
+ if (n && S !== null && S !== t) {
2395
+ let e = Math.min(S, t), n = Math.max(S, t);
2396
+ for (let t = e; t <= n; t++) {
2397
+ let e = N[t];
2398
+ e && !a.includes(e.name) && P(e, !0);
2399
+ }
2400
+ } else n ? P(e, !0) : P(e, !1);
2401
+ C(t);
2402
+ }, [
2403
+ N,
2404
+ S,
2405
+ P,
2406
+ a
2407
+ ]), I = p((e) => {
2408
+ if (N.length !== 0) switch (e.key) {
2409
+ case "ArrowDown":
2410
+ e.preventDefault(), x((e) => {
2411
+ let t = Math.min(e + 1, N.length - 1);
2412
+ return f(N[t]), t;
2413
+ });
2414
+ break;
2415
+ case "ArrowUp":
2416
+ e.preventDefault(), x((e) => {
2417
+ let t = Math.max(e - 1, 0);
2418
+ return f(N[t]), t;
2419
+ });
2420
+ break;
2421
+ case "Enter":
2422
+ e.preventDefault(), v >= 0 && N[v] && F(N[v], v, e.shiftKey);
2423
+ break;
2424
+ case "Escape":
2425
+ e.preventDefault(), t();
2426
+ break;
2427
+ }
2428
+ }, [
2429
+ N,
2430
+ v,
2431
+ F,
2432
+ t
2433
+ ]);
2434
+ if (m(() => {
2435
+ if (v >= 0 && T.current) {
2436
+ let e = T.current.querySelector(`[data-field-index="${v}"]`);
2437
+ e && e.scrollIntoView({
2438
+ block: "nearest",
2439
+ behavior: "smooth"
2440
+ });
2441
+ }
2442
+ }, [v]), !e) return null;
2443
+ let L = r === "metrics" ? "Search metrics..." : r === "filter" ? "Search fields to filter..." : "Search dimensions...", R = r === "metrics" ? "Select a Metric" : r === "filter" ? "Select a Field to Filter" : "Select a Dimension", z = v >= 0 && N[v] ? `field-option-${N[v].name.replace(/\./g, "-")}` : void 0;
2444
+ return /* @__PURE__ */ y("div", {
2445
+ className: "dc:fixed dc:inset-0 dc:z-50 dc:flex dc:items-center dc:justify-center",
2446
+ style: { backgroundColor: "var(--dc-overlay)" },
2447
+ onClick: t,
2448
+ role: "presentation",
2449
+ children: /* @__PURE__ */ b("div", {
2450
+ role: "dialog",
2451
+ "aria-modal": "true",
2452
+ "aria-label": R,
2453
+ className: "bg-dc-surface dc:shadow-xl dc:w-full dc:h-full dc:md:rounded-lg dc:md:w-[900px] dc:md:max-w-[900px] dc:md:h-[80vh] dc:md:max-h-[700px] dc:flex dc:flex-col dc:overflow-hidden",
2454
+ onClick: (e) => e.stopPropagation(),
2455
+ onKeyDown: I,
2456
+ children: [
2457
+ /* @__PURE__ */ b("div", {
2458
+ className: "dc:shrink-0 dc:border-b border-dc-border",
2459
+ children: [/* @__PURE__ */ b("div", {
2460
+ className: "dc:flex dc:items-center dc:px-4 dc:py-3 dc:gap-3",
2461
+ children: [
2462
+ /* @__PURE__ */ y(Ve, {
2463
+ className: "dc:w-5 dc:h-5 text-dc-text-muted",
2464
+ "aria-hidden": !0
2465
+ }),
2466
+ /* @__PURE__ */ y("input", {
2467
+ ref: w,
2468
+ type: "text",
2469
+ value: s,
2470
+ onChange: (e) => {
2471
+ c(e.target.value), x(-1);
2472
+ },
2473
+ placeholder: L,
2474
+ className: "dc:flex-1 bg-transparent dc:border-none dc:outline-none text-dc-text placeholder-dc-text-muted dc:text-lg",
2475
+ "aria-label": L,
2476
+ "aria-controls": "field-search-results",
2477
+ "aria-activedescendant": z,
2478
+ role: "combobox",
2479
+ "aria-expanded": "true",
2480
+ "aria-autocomplete": "list"
2481
+ }),
2482
+ /* @__PURE__ */ y("button", {
2483
+ onClick: t,
2484
+ className: "dc:p-1 text-dc-text-secondary hover:text-dc-text dc:rounded",
2485
+ "aria-label": "Close dialog",
2486
+ children: /* @__PURE__ */ y(He, {
2487
+ className: "dc:w-5 dc:h-5",
2488
+ "aria-hidden": !0
2489
+ })
2490
+ })
2491
+ ]
2492
+ }), k.length > 1 && /* @__PURE__ */ y("div", {
2493
+ className: "dc:md:hidden dc:px-4 dc:pb-3",
2494
+ children: /* @__PURE__ */ b("select", {
2495
+ value: l || "",
2496
+ onChange: (e) => u(e.target.value || null),
2497
+ className: "dc:w-full dc:px-3 dc:py-2 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:text-sm text-dc-text dc:focus:outline-none dc:focus:ring-1 focus:ring-dc-primary",
2498
+ "aria-label": "Filter by cube",
2499
+ children: [/* @__PURE__ */ y("option", {
2500
+ value: "",
2501
+ children: "All Cubes"
2502
+ }), k.map((e) => /* @__PURE__ */ y("option", {
2503
+ value: e,
2504
+ children: Q(e, i)
2505
+ }, e))]
2506
+ })
2507
+ })]
2508
+ }),
2509
+ /* @__PURE__ */ b("div", {
2510
+ className: "dc:flex-1 dc:flex dc:overflow-hidden",
2511
+ children: [
2512
+ /* @__PURE__ */ y("nav", {
2513
+ className: "dc:hidden dc:md:block dc:w-48 dc:shrink-0 dc:border-r border-dc-border dc:overflow-y-auto bg-dc-surface-secondary",
2514
+ "aria-label": "Filter by cube",
2515
+ children: /* @__PURE__ */ b("div", {
2516
+ className: "dc:p-2",
2517
+ role: "group",
2518
+ "aria-label": "Cube categories",
2519
+ children: [/* @__PURE__ */ y("button", {
2520
+ onClick: () => u(null),
2521
+ className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:rounded-md dc:text-sm dc:transition-colors ${l === null ? "bg-dc-primary/10 text-dc-primary dc:font-medium" : "text-dc-text hover:bg-dc-surface-hover"}`,
2522
+ "aria-pressed": l === null,
2523
+ children: "All"
2524
+ }), k.map((e) => /* @__PURE__ */ y("button", {
2525
+ onClick: () => u(e),
2526
+ className: `dc:w-full dc:text-left dc:px-3 dc:py-2 dc:rounded-md dc:text-sm dc:transition-colors dc:truncate ${l === e ? "bg-dc-primary/10 text-dc-primary dc:font-medium" : "text-dc-text hover:bg-dc-surface-hover"}`,
2527
+ title: Q(e, i),
2528
+ "aria-pressed": l === e,
2529
+ children: Q(e, i)
2530
+ }, e))]
2531
+ })
2532
+ }),
2533
+ /* @__PURE__ */ y("div", {
2534
+ id: "field-search-results",
2535
+ ref: T,
2536
+ className: "dc:flex-1 dc:overflow-y-auto dc:p-4",
2537
+ role: "listbox",
2538
+ "aria-label": "Available fields",
2539
+ children: A.length === 0 && M.length === 0 ? /* @__PURE__ */ b("div", {
2540
+ className: "dc:text-center dc:py-12 text-dc-text-muted",
2541
+ children: [/* @__PURE__ */ y("p", {
2542
+ className: "dc:text-lg dc:mb-2",
2543
+ children: "No fields found"
2544
+ }), /* @__PURE__ */ y("p", {
2545
+ className: "dc:text-sm",
2546
+ children: s ? `No ${r === "metrics" ? "metrics" : "dimensions"} match "${s}"` : `No ${r === "metrics" ? "metrics" : "dimensions"} available`
2547
+ })]
2548
+ }) : /* @__PURE__ */ b("div", {
2549
+ className: "dc:space-y-6",
2550
+ children: [M.length > 0 && /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h3", {
2551
+ className: "dc:text-xs dc:font-semibold text-dc-text-muted dc:uppercase dc:tracking-wider dc:mb-2",
2552
+ children: "Recents"
2553
+ }), /* @__PURE__ */ y("div", {
2554
+ className: "dc:space-y-1",
2555
+ children: M.map((e, t) => /* @__PURE__ */ y(Re, {
2556
+ field: e,
2557
+ isSelected: a.includes(e.name),
2558
+ isFocused: v === t,
2559
+ onClick: (n) => F(e, t, n.shiftKey),
2560
+ onMouseEnter: () => {
2561
+ f(e), x(t);
2562
+ },
2563
+ "data-field-index": t
2564
+ }, `recent-${e.name}`))
2565
+ })] }), Array.from(j.entries()).map(([e, t]) => /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h3", {
2566
+ className: "dc:text-xs dc:font-semibold text-dc-text-muted dc:uppercase dc:tracking-wider dc:mb-2",
2567
+ children: Q(e, i)
2568
+ }), /* @__PURE__ */ y("div", {
2569
+ className: "dc:space-y-1",
2570
+ children: t.map((n) => {
2571
+ let r = M.length + Array.from(j.entries()).slice(0, Array.from(j.keys()).indexOf(e)).reduce((e, [, t]) => e + t.length, 0) + t.indexOf(n);
2572
+ return /* @__PURE__ */ y(Re, {
2573
+ field: n,
2574
+ isSelected: a.includes(n.name),
2575
+ isFocused: v === r,
2576
+ onClick: (e) => F(n, r, e.shiftKey),
2577
+ onMouseEnter: () => {
2578
+ f(n), x(r);
2579
+ },
2580
+ "data-field-index": r
2581
+ }, n.name);
2582
+ })
2583
+ })] }, e))]
2584
+ })
2585
+ }),
2586
+ /* @__PURE__ */ y("div", {
2587
+ className: "dc:hidden dc:md:block dc:w-72 dc:shrink-0 dc:border-l border-dc-border bg-dc-surface-secondary dc:overflow-y-auto",
2588
+ children: /* @__PURE__ */ y(Be, { field: d })
2589
+ })
2590
+ ]
2591
+ }),
2592
+ /* @__PURE__ */ b("div", {
2593
+ className: "dc:shrink-0 dc:border-t border-dc-border dc:px-4 dc:py-3 dc:flex dc:items-center dc:justify-between dc:text-sm text-dc-text-muted",
2594
+ children: [/* @__PURE__ */ b("div", { children: [
2595
+ /* @__PURE__ */ y("span", {
2596
+ className: "text-dc-text-secondary",
2597
+ children: A.length
2598
+ }),
2599
+ " ",
2600
+ r === "metrics" ? "metrics" : r === "filter" ? "fields" : "dimensions",
2601
+ " available"
2602
+ ] }), /* @__PURE__ */ b("div", {
2603
+ className: "dc:hidden dc:md:flex dc:items-center dc:gap-4",
2604
+ children: [
2605
+ /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("kbd", {
2606
+ className: "dc:px-1.5 dc:py-0.5 bg-dc-surface-tertiary dc:rounded dc:text-xs",
2607
+ children: "↑↓"
2608
+ }), " Navigate"] }),
2609
+ /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("kbd", {
2610
+ className: "dc:px-1.5 dc:py-0.5 bg-dc-surface-tertiary dc:rounded dc:text-xs",
2611
+ children: "Enter"
2612
+ }), " Select"] }),
2613
+ /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("kbd", {
2614
+ className: "dc:px-1.5 dc:py-0.5 bg-dc-surface-tertiary dc:rounded dc:text-xs",
2615
+ children: "Shift"
2616
+ }), "+Click Multi-select"] }),
2617
+ /* @__PURE__ */ b("span", { children: [/* @__PURE__ */ y("kbd", {
2618
+ className: "dc:px-1.5 dc:py-0.5 bg-dc-surface-tertiary dc:rounded dc:text-xs",
2619
+ children: "Esc"
2620
+ }), " Close"] })
2621
+ ]
2622
+ })]
2623
+ })
2624
+ ]
2625
+ })
2626
+ });
2627
+ }
2628
+ //#endregion
2629
+ export { P as A, te as C, k as D, A as E, w as F, E as I, D as L, S as M, T as N, O, x as P, N as R, V as S, M as T, oe as _, Ae as a, ie as b, X as c, Y as d, ce as f, se as g, q as h, Me as i, C as j, j as k, le as l, K as m, Fe as n, Ee as o, J as p, Ne as r, Se as s, Ue as t, me as u, ae as v, B as w, H as x, re as y };
2630
+
2631
+ //# sourceMappingURL=FieldSearchModal-C0DjSWk3.js.map