drizzle-cube 0.4.53 → 0.5.1

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 (277) hide show
  1. package/dist/adapters/express/index.cjs +2 -2
  2. package/dist/adapters/express/index.js +109 -96
  3. package/dist/adapters/fastify/index.cjs +2 -2
  4. package/dist/adapters/fastify/index.js +148 -134
  5. package/dist/adapters/{handler-RItnSaEl.js → handler-3LGcjLtr.js} +617 -612
  6. package/dist/adapters/handler-BzzbVpcl.cjs +25 -0
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +103 -99
  9. package/dist/adapters/{compiler-S6KHiOY6.js → locale-DTnJrxm1.js} +1700 -1563
  10. package/dist/adapters/locale-DueXjqMh.cjs +198 -0
  11. package/dist/adapters/locale.d.ts +8 -0
  12. package/dist/adapters/mcp-tools.cjs +1 -1
  13. package/dist/adapters/mcp-tools.d.ts +7 -3
  14. package/dist/adapters/mcp-tools.js +27 -27
  15. package/dist/adapters/mcp-transport-C7VLf4T5.js +579 -0
  16. package/dist/adapters/mcp-transport-poPHl_2j.cjs +39 -0
  17. package/dist/adapters/mcp-transport.d.ts +25 -2
  18. package/dist/adapters/nextjs/index.cjs +1 -1
  19. package/dist/adapters/nextjs/index.js +152 -132
  20. package/dist/adapters/utils-DNrj-ryp.cjs +17 -0
  21. package/dist/adapters/{utils-IH1ePsBd.js → utils-DOg9oGdt.js} +2341 -819
  22. package/dist/adapters/utils.cjs +1 -1
  23. package/dist/adapters/utils.d.ts +45 -2
  24. package/dist/adapters/utils.js +1 -1
  25. package/dist/client/charts.js +12 -12
  26. package/dist/client/chunks/{DashboardEditModal-BTdV528l.js → DashboardEditModal-cSSIAZGy.js} +1968 -1973
  27. package/dist/client/chunks/DashboardEditModal-cSSIAZGy.js.map +1 -0
  28. package/dist/client/chunks/{FieldSearchModal-D75vy4Wb.js → FieldSearchModal-CZNo4pNK.js} +550 -536
  29. package/dist/client/chunks/FieldSearchModal-CZNo4pNK.js.map +1 -0
  30. package/dist/client/chunks/KpiDelta-Dll_eCV1.js +2 -0
  31. package/dist/client/chunks/KpiNumber-BPlR92hI.js +2 -0
  32. package/dist/client/chunks/KpiText-BIxq7Jso.js +2 -0
  33. package/dist/client/chunks/{RetentionCombinedChart-DIhK5pD8.js → RetentionCombinedChart-BD8tGeM_.js} +96 -96
  34. package/dist/client/chunks/RetentionCombinedChart-BD8tGeM_.js.map +1 -0
  35. package/dist/client/chunks/{RetentionHeatmap-CyREolyP.js → RetentionHeatmap-B_5sewwi.js} +77 -77
  36. package/dist/client/chunks/RetentionHeatmap-B_5sewwi.js.map +1 -0
  37. package/dist/client/chunks/SchemaVisualization-CCICjhvv.js +2 -0
  38. package/dist/client/chunks/SchemaVisualizationLazy-DraGsMx6.js +2 -0
  39. package/dist/client/chunks/af-ZA-xDmO5F0s.js +1431 -0
  40. package/dist/client/chunks/af-ZA-xDmO5F0s.js.map +1 -0
  41. package/dist/client/chunks/{analysis-builder-C1CJ0c7L.js → analysis-builder-BeVZhiQ5.js} +1519 -1507
  42. package/dist/client/chunks/analysis-builder-BeVZhiQ5.js.map +1 -0
  43. package/dist/client/chunks/{analysis-builder-shared-rkjJfWLT.js → analysis-builder-shared-BWc7ZZnG.js} +925 -954
  44. package/dist/client/chunks/analysis-builder-shared-BWc7ZZnG.js.map +1 -0
  45. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js +2376 -0
  46. package/dist/client/chunks/chart-activity-grid-CWT0gLv4.js.map +1 -0
  47. package/dist/client/chunks/{chart-area-BwYaflNk.js → chart-area-D63kG8OT.js} +157 -157
  48. package/dist/client/chunks/chart-area-D63kG8OT.js.map +1 -0
  49. package/dist/client/chunks/{chart-bar-BiENfFgE.js → chart-bar-BEfsCLjl.js} +78 -78
  50. package/dist/client/chunks/chart-bar-BEfsCLjl.js.map +1 -0
  51. package/dist/client/chunks/{chart-box-plot-BJF1tBXC.js → chart-box-plot-o-h9MRX5.js} +111 -114
  52. package/dist/client/chunks/chart-box-plot-o-h9MRX5.js.map +1 -0
  53. package/dist/client/chunks/{chart-bubble-DQQhGVDJ.js → chart-bubble-CMDp4Pfm.js} +121 -121
  54. package/dist/client/chunks/chart-bubble-CMDp4Pfm.js.map +1 -0
  55. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js +303 -0
  56. package/dist/client/chunks/chart-candlestick-WyANJ0Ky.js.map +1 -0
  57. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js +51 -0
  58. package/dist/client/chunks/chart-config-activity-grid-C-EkgYoa.js.map +1 -0
  59. package/dist/client/chunks/chart-config-area-CMZpbIah.js +93 -0
  60. package/dist/client/chunks/chart-config-area-CMZpbIah.js.map +1 -0
  61. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js +87 -0
  62. package/dist/client/chunks/chart-config-bar-B8_V4YLg.js.map +1 -0
  63. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js +35 -0
  64. package/dist/client/chunks/chart-config-box-plot-Dwj7sEbU.js.map +1 -0
  65. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js +82 -0
  66. package/dist/client/chunks/chart-config-bubble-B0w0ZVp4.js.map +1 -0
  67. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js +72 -0
  68. package/dist/client/chunks/chart-config-candlestick-Bvo3zeIn.js.map +1 -0
  69. package/dist/client/chunks/{chart-config-data-table-Bhdx5Hem.js → chart-config-data-table-BQXSn4b_.js} +9 -9
  70. package/dist/client/chunks/chart-config-data-table-BQXSn4b_.js.map +1 -0
  71. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js +93 -0
  72. package/dist/client/chunks/chart-config-funnel-BzEsHmjR.js.map +1 -0
  73. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js +64 -0
  74. package/dist/client/chunks/chart-config-gauge-C5ZiyZy7.js.map +1 -0
  75. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js +91 -0
  76. package/dist/client/chunks/chart-config-heat-map-Cv8qNnVP.js.map +1 -0
  77. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js +94 -0
  78. package/dist/client/chunks/chart-config-kpi-delta-BraHQc2E.js.map +1 -0
  79. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js +75 -0
  80. package/dist/client/chunks/chart-config-kpi-number-CeCkx7mC.js.map +1 -0
  81. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js +47 -0
  82. package/dist/client/chunks/chart-config-kpi-text-CImM3SvH.js.map +1 -0
  83. package/dist/client/chunks/chart-config-line-BVKapAQK.js +104 -0
  84. package/dist/client/chunks/chart-config-line-BVKapAQK.js.map +1 -0
  85. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js +117 -0
  86. package/dist/client/chunks/chart-config-markdown-C-_g_8te.js.map +1 -0
  87. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js +82 -0
  88. package/dist/client/chunks/chart-config-measure-profile-KTVV1gO3.js.map +1 -0
  89. package/dist/client/chunks/chart-config-pie-BZxVl25X.js +68 -0
  90. package/dist/client/chunks/chart-config-pie-BZxVl25X.js.map +1 -0
  91. package/dist/client/chunks/chart-config-radar-B7FByX3t.js +49 -0
  92. package/dist/client/chunks/chart-config-radar-B7FByX3t.js.map +1 -0
  93. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js +38 -0
  94. package/dist/client/chunks/chart-config-radial-bar-UfW_3yyX.js.map +1 -0
  95. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js +66 -0
  96. package/dist/client/chunks/chart-config-sankey-DGAThN9i.js.map +1 -0
  97. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js +61 -0
  98. package/dist/client/chunks/chart-config-scatter-BVVJuOnt.js.map +1 -0
  99. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js +45 -0
  100. package/dist/client/chunks/chart-config-sunburst-utejM2YS.js.map +1 -0
  101. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js +51 -0
  102. package/dist/client/chunks/chart-config-tree-map-IHp97OyV.js.map +1 -0
  103. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js +59 -0
  104. package/dist/client/chunks/chart-config-waterfall-BdqG1V-x.js.map +1 -0
  105. package/dist/client/chunks/{chart-data-table-2iCsn0CF.js → chart-data-table-C3Xh9jwL.js} +1083 -1086
  106. package/dist/client/chunks/chart-data-table-C3Xh9jwL.js.map +1 -0
  107. package/dist/client/chunks/{chart-funnel-poyOf7-e.js → chart-funnel-C7pgktN5.js} +132 -132
  108. package/dist/client/chunks/chart-funnel-C7pgktN5.js.map +1 -0
  109. package/dist/client/chunks/{chart-gauge-D5J4gRky.js → chart-gauge-D2r2B_AR.js} +150 -150
  110. package/dist/client/chunks/chart-gauge-D2r2B_AR.js.map +1 -0
  111. package/dist/client/chunks/{chart-heat-map-BAMVhLGG.js → chart-heat-map-Dw2yjwfO.js} +75 -80
  112. package/dist/client/chunks/chart-heat-map-Dw2yjwfO.js.map +1 -0
  113. package/dist/client/chunks/{chart-kpi-delta-KQjUIeal.js → chart-kpi-delta-CYE0S1x_.js} +117 -117
  114. package/dist/client/chunks/chart-kpi-delta-CYE0S1x_.js.map +1 -0
  115. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js +321 -0
  116. package/dist/client/chunks/chart-kpi-number-BlZ79xHW.js.map +1 -0
  117. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js +148 -0
  118. package/dist/client/chunks/chart-kpi-text-DY1BnxPe.js.map +1 -0
  119. package/dist/client/chunks/{chart-line-B5_WntY5.js → chart-line-CBsTThTv.js} +123 -123
  120. package/dist/client/chunks/chart-line-CBsTThTv.js.map +1 -0
  121. package/dist/client/chunks/chart-markdown-BWaWVkuz.js +3474 -0
  122. package/dist/client/chunks/chart-markdown-BWaWVkuz.js.map +1 -0
  123. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js +179 -0
  124. package/dist/client/chunks/chart-measure-profile-B41qCTBG.js.map +1 -0
  125. package/dist/client/chunks/chart-pie-Djbu8x2v.js +172 -0
  126. package/dist/client/chunks/chart-pie-Djbu8x2v.js.map +1 -0
  127. package/dist/client/chunks/chart-radar-BsTcKV0K.js +154 -0
  128. package/dist/client/chunks/chart-radar-BsTcKV0K.js.map +1 -0
  129. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js +148 -0
  130. package/dist/client/chunks/chart-radial-bar-Du7XNnwE.js.map +1 -0
  131. package/dist/client/chunks/{chart-sankey-BOyxfG1Q.js → chart-sankey-WwkZAhLy.js} +73 -73
  132. package/dist/client/chunks/chart-sankey-WwkZAhLy.js.map +1 -0
  133. package/dist/client/chunks/chart-scatter-D8krEYsA.js +255 -0
  134. package/dist/client/chunks/chart-scatter-D8krEYsA.js.map +1 -0
  135. package/dist/client/chunks/{chart-sunburst-D9lGEOCc.js → chart-sunburst-CIDB_pTl.js} +66 -66
  136. package/dist/client/chunks/chart-sunburst-CIDB_pTl.js.map +1 -0
  137. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js +298 -0
  138. package/dist/client/chunks/chart-tree-map-C5C2iaWM.js.map +1 -0
  139. package/dist/client/chunks/{chart-waterfall-BCdUx4DC.js → chart-waterfall-BGdPrJ5Y.js} +80 -80
  140. package/dist/client/chunks/chart-waterfall-BGdPrJ5Y.js.map +1 -0
  141. package/dist/client/chunks/{charts-core-C5Yokk-x.js → charts-core-BXOqaYFn.js} +92 -92
  142. package/dist/client/chunks/charts-core-BXOqaYFn.js.map +1 -0
  143. package/dist/client/chunks/en-US-5xPTdCXg.js +35 -0
  144. package/dist/client/chunks/en-US-5xPTdCXg.js.map +1 -0
  145. package/dist/client/chunks/nl-NL-vCifBijs.js +1491 -0
  146. package/dist/client/chunks/nl-NL-vCifBijs.js.map +1 -0
  147. package/dist/client/chunks/{schema-visualization-t1KiOORo.js → schema-visualization-Xp60Ff2W.js} +352 -364
  148. package/dist/client/chunks/schema-visualization-Xp60Ff2W.js.map +1 -0
  149. package/dist/client/chunks/{useDebounce-CKqkM42n.js → useDebounce-CfmUMFau.js} +85 -85
  150. package/dist/client/chunks/useDebounce-CfmUMFau.js.map +1 -0
  151. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js → useExplainAI-BKGmejIj.js} +4 -4
  152. package/dist/client/chunks/{useExplainAI-DBIfYwz-.js.map → useExplainAI-BKGmejIj.js.map} +1 -1
  153. package/dist/client/chunks/{utils--qCr8Yn5.js → utils-BldkcRHv.js} +2 -2
  154. package/dist/client/chunks/{utils--qCr8Yn5.js.map → utils-BldkcRHv.js.map} +1 -1
  155. package/dist/client/chunks/{vendor-BRlsCGnK.js → vendor-ClXpIiea.js} +2 -2
  156. package/dist/client/chunks/{vendor-BRlsCGnK.js.map → vendor-ClXpIiea.js.map} +1 -1
  157. package/dist/client/components/AnalysisBuilder/types.d.ts +6 -6
  158. package/dist/client/components.js +3 -3
  159. package/dist/client/hooks/useTranslation.d.ts +21 -0
  160. package/dist/client/hooks.js +3 -3
  161. package/dist/client/icons.js +1 -1
  162. package/dist/client/index.js +493 -488
  163. package/dist/client/index.js.map +1 -1
  164. package/dist/client/providers/CubeApiProvider.d.ts +2 -1
  165. package/dist/client/providers/CubeProvider.d.ts +7 -1
  166. package/dist/client/providers/I18nProvider.d.ts +18 -0
  167. package/dist/client/providers.js +1 -1
  168. package/dist/client/schema.js +1 -1
  169. package/dist/client/shared/types.d.ts +5 -20
  170. package/dist/client/styles.css +1 -1
  171. package/dist/client/utils.js +5 -5
  172. package/dist/client-bundle-stats.html +1 -1
  173. package/dist/mcp-app/mcp-app.html +40 -36
  174. package/dist/server/index.cjs +42 -40
  175. package/dist/server/index.js +3311 -1672
  176. package/package.json +5 -2
  177. package/dist/adapters/compiler-CRgLzmSn.cjs +0 -198
  178. package/dist/adapters/handler-DumFgnNM.cjs +0 -25
  179. package/dist/adapters/mcp-transport-C6bsIOSV.js +0 -545
  180. package/dist/adapters/mcp-transport-DMhuYmFp.cjs +0 -39
  181. package/dist/adapters/utils-CyBt-as9.cjs +0 -15
  182. package/dist/client/chunks/DashboardEditModal-BTdV528l.js.map +0 -1
  183. package/dist/client/chunks/FieldSearchModal-D75vy4Wb.js.map +0 -1
  184. package/dist/client/chunks/KpiDelta-Bk8bzKYM.js +0 -2
  185. package/dist/client/chunks/KpiNumber-CKF-8e_T.js +0 -2
  186. package/dist/client/chunks/KpiText-Iz1vIvu_.js +0 -2
  187. package/dist/client/chunks/RetentionCombinedChart-DIhK5pD8.js.map +0 -1
  188. package/dist/client/chunks/RetentionHeatmap-CyREolyP.js.map +0 -1
  189. package/dist/client/chunks/SchemaVisualization-B1GUT-FM.js +0 -2
  190. package/dist/client/chunks/SchemaVisualizationLazy-DymwT34e.js +0 -2
  191. package/dist/client/chunks/analysis-builder-C1CJ0c7L.js.map +0 -1
  192. package/dist/client/chunks/analysis-builder-shared-rkjJfWLT.js.map +0 -1
  193. package/dist/client/chunks/chart-activity-grid-DLktOINm.js +0 -806
  194. package/dist/client/chunks/chart-activity-grid-DLktOINm.js.map +0 -1
  195. package/dist/client/chunks/chart-area-BwYaflNk.js.map +0 -1
  196. package/dist/client/chunks/chart-bar-BiENfFgE.js.map +0 -1
  197. package/dist/client/chunks/chart-box-plot-BJF1tBXC.js.map +0 -1
  198. package/dist/client/chunks/chart-bubble-DQQhGVDJ.js.map +0 -1
  199. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js +0 -306
  200. package/dist/client/chunks/chart-candlestick-C2UuXbLe.js.map +0 -1
  201. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js +0 -51
  202. package/dist/client/chunks/chart-config-activity-grid-DJOU3TEz.js.map +0 -1
  203. package/dist/client/chunks/chart-config-area-CWnWVT6a.js +0 -93
  204. package/dist/client/chunks/chart-config-area-CWnWVT6a.js.map +0 -1
  205. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js +0 -87
  206. package/dist/client/chunks/chart-config-bar-C-7Dr1Ho.js.map +0 -1
  207. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js +0 -35
  208. package/dist/client/chunks/chart-config-box-plot-mVOwmLdu.js.map +0 -1
  209. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js +0 -82
  210. package/dist/client/chunks/chart-config-bubble-BPE2CeiD.js.map +0 -1
  211. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js +0 -72
  212. package/dist/client/chunks/chart-config-candlestick-BSB9DRy2.js.map +0 -1
  213. package/dist/client/chunks/chart-config-data-table-Bhdx5Hem.js.map +0 -1
  214. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js +0 -93
  215. package/dist/client/chunks/chart-config-funnel-Cl-v-bm1.js.map +0 -1
  216. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js +0 -64
  217. package/dist/client/chunks/chart-config-gauge-CdrUTJMJ.js.map +0 -1
  218. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js +0 -91
  219. package/dist/client/chunks/chart-config-heat-map-DGE3NzoF.js.map +0 -1
  220. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js +0 -94
  221. package/dist/client/chunks/chart-config-kpi-delta-DMrQerUW.js.map +0 -1
  222. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js +0 -75
  223. package/dist/client/chunks/chart-config-kpi-number-DCytCytn.js.map +0 -1
  224. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js +0 -47
  225. package/dist/client/chunks/chart-config-kpi-text-KdKQUvHo.js.map +0 -1
  226. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js +0 -104
  227. package/dist/client/chunks/chart-config-line-Bl9VDAdz.js.map +0 -1
  228. package/dist/client/chunks/chart-config-markdown-BX26b94i.js +0 -117
  229. package/dist/client/chunks/chart-config-markdown-BX26b94i.js.map +0 -1
  230. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js +0 -82
  231. package/dist/client/chunks/chart-config-measure-profile-DwtRhEFh.js.map +0 -1
  232. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js +0 -68
  233. package/dist/client/chunks/chart-config-pie-BzBcqPMJ.js.map +0 -1
  234. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js +0 -49
  235. package/dist/client/chunks/chart-config-radar-6ZOgt__z.js.map +0 -1
  236. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js +0 -38
  237. package/dist/client/chunks/chart-config-radial-bar-Df6Eta7N.js.map +0 -1
  238. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js +0 -66
  239. package/dist/client/chunks/chart-config-sankey-DgqKBFvN.js.map +0 -1
  240. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js +0 -61
  241. package/dist/client/chunks/chart-config-scatter-D5nVLDvi.js.map +0 -1
  242. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js +0 -45
  243. package/dist/client/chunks/chart-config-sunburst-Ca3FX9nW.js.map +0 -1
  244. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js +0 -51
  245. package/dist/client/chunks/chart-config-tree-map-Bjy4QNa3.js.map +0 -1
  246. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js +0 -59
  247. package/dist/client/chunks/chart-config-waterfall-C5K2eqR7.js.map +0 -1
  248. package/dist/client/chunks/chart-data-table-2iCsn0CF.js.map +0 -1
  249. package/dist/client/chunks/chart-funnel-poyOf7-e.js.map +0 -1
  250. package/dist/client/chunks/chart-gauge-D5J4gRky.js.map +0 -1
  251. package/dist/client/chunks/chart-heat-map-BAMVhLGG.js.map +0 -1
  252. package/dist/client/chunks/chart-kpi-delta-KQjUIeal.js.map +0 -1
  253. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js +0 -325
  254. package/dist/client/chunks/chart-kpi-number-CsQgV_x3.js.map +0 -1
  255. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js +0 -148
  256. package/dist/client/chunks/chart-kpi-text-BR0IyeUU.js.map +0 -1
  257. package/dist/client/chunks/chart-line-B5_WntY5.js.map +0 -1
  258. package/dist/client/chunks/chart-markdown-B6bENbel.js +0 -3473
  259. package/dist/client/chunks/chart-markdown-B6bENbel.js.map +0 -1
  260. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js +0 -179
  261. package/dist/client/chunks/chart-measure-profile-yWk-obNb.js.map +0 -1
  262. package/dist/client/chunks/chart-pie-BodrUoHv.js +0 -172
  263. package/dist/client/chunks/chart-pie-BodrUoHv.js.map +0 -1
  264. package/dist/client/chunks/chart-radar-gG3zfLud.js +0 -154
  265. package/dist/client/chunks/chart-radar-gG3zfLud.js.map +0 -1
  266. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js +0 -148
  267. package/dist/client/chunks/chart-radial-bar-C2IPCV8c.js.map +0 -1
  268. package/dist/client/chunks/chart-sankey-BOyxfG1Q.js.map +0 -1
  269. package/dist/client/chunks/chart-scatter-B8OwlsAX.js +0 -255
  270. package/dist/client/chunks/chart-scatter-B8OwlsAX.js.map +0 -1
  271. package/dist/client/chunks/chart-sunburst-D9lGEOCc.js.map +0 -1
  272. package/dist/client/chunks/chart-tree-map-DZaKy9he.js +0 -298
  273. package/dist/client/chunks/chart-tree-map-DZaKy9he.js.map +0 -1
  274. package/dist/client/chunks/chart-waterfall-BCdUx4DC.js.map +0 -1
  275. package/dist/client/chunks/charts-core-C5Yokk-x.js.map +0 -1
  276. package/dist/client/chunks/schema-visualization-t1KiOORo.js.map +0 -1
  277. package/dist/client/chunks/useDebounce-CKqkM42n.js.map +0 -1
@@ -1,22 +1,22 @@
1
- import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-BRlsCGnK.js";
2
- import { $ as a, A as o, C as s, D as c, E as l, F as u, G as d, H as f, I as p, J as m, L as h, M as g, N as _, O as v, P as y, Q as b, R as x, S, T as C, U as w, V as T, W as E, X as D, Y as O, Z as k, c as A, j, k as M, l as N, s as ee, w as P, x as F } from "./chunks/chart-data-table-2iCsn0CF.js";
3
- import { _ as I, a as L, b as R, d as te, f as z, g as B, h as ne, i as re, l as ie, m as ae, o as oe, p as se, s as ce, u as le, v as ue } from "./chunks/useDebounce-CKqkM42n.js";
4
- import { a as de, i as fe, n as pe, o as me, r as he, t as ge } from "./chunks/useExplainAI-DBIfYwz-.js";
5
- import { a as _e, c as ve, i as ye, l as be, o as xe, r as Se, s as Ce } from "./chunks/chart-funnel-poyOf7-e.js";
6
- import { n as we, r as Te } from "./chunks/chart-sankey-BOyxfG1Q.js";
7
- import { n as Ee, t as De } from "./chunks/providers-DX3Vw5kc.js";
8
- import { A as Oe, _ as ke, c as Ae, d as je, f as Me, g as Ne, h as Pe, l as Fe, m as Ie, p as Le, u as Re } from "./chunks/chart-activity-grid-DLktOINm.js";
9
- import { A as ze, C as Be, D as Ve, E as He, M as Ue, N as We, O as Ge, S as Ke, T as qe, _ as Je, a as Ye, b as Xe, c as Ze, d as Qe, f as $e, g as et, h as tt, i as nt, j as rt, k as it, l as at, m as ot, n as st, o as ct, p as lt, r as ut, s as dt, t as ft, u as pt, v as mt, w as ht, x as gt, y as _t } from "./chunks/DashboardEditModal-BTdV528l.js";
10
- import { u as V } from "./chunks/chart-area-BwYaflNk.js";
11
- import { A as vt, C as yt, D as bt, E as xt, F as St, I as Ct, L as wt, M as Tt, N as Et, O as Dt, P as Ot, R as kt, S as At, T as jt, h as Mt, j as Nt, k as Pt, p as Ft, r as It, t as Lt, w as Rt } from "./chunks/FieldSearchModal-D75vy4Wb.js";
1
+ import { a as e, n as t, o as n, r, s as i } from "./chunks/vendor-ClXpIiea.js";
2
+ import { $ as a, A as o, C as s, D as c, E as l, F as u, G as d, H as f, I as p, J as m, L as h, M as g, N as _, O as v, P as y, Q as b, R as x, S, T as C, U as w, V as T, W as E, X as D, Y as O, Z as k, c as A, j, k as M, l as N, s as P, w as F, x as I } from "./chunks/chart-data-table-C3Xh9jwL.js";
3
+ import { _ as L, a as R, b as z, d as ee, f as B, g as te, h as V, i as ne, l as re, m as ie, o as ae, p as oe, s as se, u as ce, v as le } from "./chunks/useDebounce-CfmUMFau.js";
4
+ import { a as ue, i as de, n as fe, o as pe, r as me, t as he } from "./chunks/useExplainAI-BKGmejIj.js";
5
+ import { a as ge, c as _e, i as ve, l as ye, o as be, r as xe, s as Se } from "./chunks/chart-funnel-C7pgktN5.js";
6
+ import { n as Ce, r as we } from "./chunks/chart-sankey-WwkZAhLy.js";
7
+ import { n as Te, t as Ee } from "./chunks/providers-DX3Vw5kc.js";
8
+ import { F as De, _ as Oe, c as ke, d as Ae, f as je, g as Me, h as Ne, k as H, l as Pe, m as Fe, p as Ie, u as Le } from "./chunks/chart-activity-grid-CWT0gLv4.js";
9
+ import { A as Re, C as ze, D as Be, E as Ve, M as He, N as Ue, O as We, S as Ge, T as Ke, _ as qe, a as Je, b as Ye, c as Xe, d as Ze, f as Qe, g as $e, h as et, i as tt, j as nt, k as rt, l as it, m as at, n as ot, o as st, p as ct, r as lt, s as ut, t as dt, u as ft, v as pt, w as mt, x as ht, y as gt } from "./chunks/DashboardEditModal-cSSIAZGy.js";
10
+ import { u as _t } from "./chunks/chart-area-D63kG8OT.js";
11
+ import { A as vt, C as yt, D as bt, E as xt, F as St, I as Ct, L as wt, M as Tt, N as Et, O as Dt, P as Ot, R as kt, S as At, T as jt, h as Mt, j as Nt, k as Pt, p as Ft, r as It, t as Lt, w as Rt } from "./chunks/FieldSearchModal-CZNo4pNK.js";
12
12
  import { r as zt } from "./chunks/syntaxHighlighting-CnDujqwg.js";
13
- import { A as Bt, D as Vt, E as Ht, F as Ut, I as Wt, M as Gt, O as Kt, P as qt, S as Jt, T as Yt, _ as Xt, a as Zt, b as Qt, c as $t, d as en, f as tn, g as nn, h as rn, i as an, j as on, k as sn, l as cn, n as ln, o as un, p as dn, r as fn, s as pn, t as mn, v as hn, w as gn, x as _n, y as vn } from "./chunks/analysis-builder-shared-rkjJfWLT.js";
14
- import { r as yn } from "./chunks/chart-markdown-B6bENbel.js";
13
+ import { A as Bt, D as Vt, E as Ht, F as Ut, I as Wt, M as Gt, O as Kt, P as qt, S as Jt, T as Yt, _ as Xt, a as Zt, b as Qt, c as $t, d as en, f as tn, g as nn, h as rn, i as an, j as on, k as sn, l as cn, n as ln, o as un, p as dn, r as fn, s as pn, t as mn, v as hn, w as gn, x as _n, y as vn } from "./chunks/analysis-builder-shared-BWc7ZZnG.js";
14
+ import { r as yn } from "./chunks/chart-markdown-BWaWVkuz.js";
15
15
  import { t as bn } from "./chunks/useNotebookLayout-DKkMenhj.js";
16
- import { n as xn } from "./chunks/chart-bubble-DQQhGVDJ.js";
17
- import { i as Sn, t as Cn } from "./chunks/utils--qCr8Yn5.js";
18
- import H, { createContext as wn, useCallback as U, useContext as Tn, useEffect as W, useMemo as G, useRef as K, useState as q } from "react";
19
- import { Fragment as J, jsx as Y, jsxs as X } from "react/jsx-runtime";
16
+ import { n as xn } from "./chunks/chart-bubble-CMDp4Pfm.js";
17
+ import { i as Sn, t as Cn } from "./chunks/utils-BldkcRHv.js";
18
+ import U, { createContext as wn, useCallback as W, useContext as Tn, useEffect as G, useMemo as K, useRef as q, useState as J } from "react";
19
+ import { Fragment as Y, jsx as X, jsxs as Z } from "react/jsx-runtime";
20
20
  //#region src/client/stores/notebookStore.tsx
21
21
  var En = () => ({
22
22
  blocks: [],
@@ -101,17 +101,17 @@ function On() {
101
101
  }
102
102
  var kn = wn(null);
103
103
  function An({ children: e, initialConfig: t }) {
104
- let n = K(null);
104
+ let n = q(null);
105
105
  if (!n.current) {
106
106
  let e = On();
107
107
  t && e.getState().load(t), n.current = e;
108
108
  }
109
- return /* @__PURE__ */ Y(kn.Provider, {
109
+ return /* @__PURE__ */ X(kn.Provider, {
110
110
  value: n.current,
111
111
  children: e
112
112
  });
113
113
  }
114
- function Z(e) {
114
+ function Q(e) {
115
115
  let t = Tn(kn);
116
116
  if (!t) throw Error("useNotebookStore must be used within NotebookStoreProvider");
117
117
  return n(t, e);
@@ -138,20 +138,20 @@ var jn = (e) => e.blocks, Mn = (e) => e.messages, Nn = (e) => e.isStreaming, Pn
138
138
  width: "16px",
139
139
  height: "16px",
140
140
  color: "currentColor"
141
- }, Bn = o("chevronUp"), Vn = o("chevronDown"), Hn = o("edit"), Un = o("delete"), Wn = H.memo(function({ block: e, colorPalette: t, onRemove: n, onMoveUp: r, onMoveDown: i, onEdit: a, isFirst: o, isLast: s }) {
142
- let [c, l] = q(null), u = U((e) => {
141
+ }, Bn = o("chevronUp"), Vn = o("chevronDown"), Hn = o("edit"), Un = o("delete"), Wn = U.memo(function({ block: e, colorPalette: t, onRemove: n, onMoveUp: r, onMoveDown: i, onEdit: a, isFirst: o, isLast: s }) {
142
+ let [c, l] = J(null), u = W((e) => {
143
143
  l(e);
144
144
  }, []);
145
- return /* @__PURE__ */ X("div", {
145
+ return /* @__PURE__ */ Z("div", {
146
146
  className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
147
- children: [/* @__PURE__ */ X("div", {
147
+ children: [/* @__PURE__ */ Z("div", {
148
148
  className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
149
- children: [/* @__PURE__ */ X("div", {
149
+ children: [/* @__PURE__ */ Z("div", {
150
150
  className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
151
- children: [/* @__PURE__ */ Y("h3", {
151
+ children: [/* @__PURE__ */ X("h3", {
152
152
  className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
153
153
  children: e.title || "Untitled"
154
- }), c && /* @__PURE__ */ Y(ht, {
154
+ }), c && /* @__PURE__ */ X(mt, {
155
155
  chartConfig: c.chartConfig,
156
156
  displayConfig: c.displayConfig,
157
157
  queryObject: c.queryObject,
@@ -159,38 +159,38 @@ var jn = (e) => e.blocks, Mn = (e) => e.messages, Nn = (e) => e.isStreaming, Pn
159
159
  chartType: c.chartType,
160
160
  cacheInfo: c.cacheInfo ?? void 0
161
161
  })]
162
- }), /* @__PURE__ */ X("div", {
162
+ }), /* @__PURE__ */ Z("div", {
163
163
  className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
164
164
  children: [
165
- !o && /* @__PURE__ */ Y("button", {
165
+ !o && /* @__PURE__ */ X("button", {
166
166
  onClick: () => r(e.id),
167
167
  className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
168
168
  title: "Move up",
169
- children: /* @__PURE__ */ Y(Bn, { style: zn })
169
+ children: /* @__PURE__ */ X(Bn, { style: zn })
170
170
  }),
171
- !s && /* @__PURE__ */ Y("button", {
171
+ !s && /* @__PURE__ */ X("button", {
172
172
  onClick: () => i(e.id),
173
173
  className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
174
174
  title: "Move down",
175
- children: /* @__PURE__ */ Y(Vn, { style: zn })
175
+ children: /* @__PURE__ */ X(Vn, { style: zn })
176
176
  }),
177
- /* @__PURE__ */ Y("button", {
177
+ /* @__PURE__ */ X("button", {
178
178
  onClick: () => a(e),
179
179
  className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
180
180
  title: "Edit visualization",
181
- children: /* @__PURE__ */ Y(Hn, { style: zn })
181
+ children: /* @__PURE__ */ X(Hn, { style: zn })
182
182
  }),
183
- /* @__PURE__ */ Y("button", {
183
+ /* @__PURE__ */ X("button", {
184
184
  onClick: () => n(e.id),
185
185
  className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
186
186
  title: "Remove",
187
- children: /* @__PURE__ */ Y(Un, { style: zn })
187
+ children: /* @__PURE__ */ X(Un, { style: zn })
188
188
  })
189
189
  ]
190
190
  })]
191
- }), /* @__PURE__ */ Y("div", {
191
+ }), /* @__PURE__ */ X("div", {
192
192
  className: "dc:flex-1 dc:min-h-0",
193
- children: /* @__PURE__ */ Y(Ve, {
193
+ children: /* @__PURE__ */ X(Be, {
194
194
  query: e.query,
195
195
  chartType: e.chartType,
196
196
  chartConfig: e.chartConfig,
@@ -202,21 +202,21 @@ var jn = (e) => e.blocks, Mn = (e) => e.messages, Nn = (e) => e.isStreaming, Pn
202
202
  })
203
203
  })]
204
204
  });
205
- }), Q = {
205
+ }), Gn = {
206
206
  width: "16px",
207
207
  height: "16px",
208
208
  color: "currentColor"
209
- }, Gn = o("documentText"), Kn = o("chevronUp"), qn = o("chevronDown"), Jn = o("delete");
210
- function Yn({ children: e, ...t }) {
211
- return /* @__PURE__ */ Y("div", {
209
+ }, Kn = o("documentText"), qn = o("chevronUp"), Jn = o("chevronDown"), Yn = o("delete");
210
+ function Xn({ children: e, ...t }) {
211
+ return /* @__PURE__ */ X("div", {
212
212
  className: "dc:overflow-x-auto dc:my-2",
213
- children: /* @__PURE__ */ Y("table", {
213
+ children: /* @__PURE__ */ X("table", {
214
214
  ...t,
215
215
  children: e
216
216
  })
217
217
  });
218
218
  }
219
- var Xn = { overrides: {
219
+ var Zn = { overrides: {
220
220
  h1: { props: { className: "dc:text-lg dc:font-bold text-dc-text dc:mb-2 dc:mt-3" } },
221
221
  h2: { props: { className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2 dc:mt-3" } },
222
222
  h3: { props: { className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2 dc:mt-3" } },
@@ -235,66 +235,66 @@ var Xn = { overrides: {
235
235
  hr: { props: { className: "dc:my-3 border-dc-border" } },
236
236
  blockquote: { props: { className: "dc:border-l-4 border-dc-accent dc:pl-3 dc:my-2 dc:italic text-dc-text-secondary dc:text-sm" } },
237
237
  table: {
238
- component: Yn,
238
+ component: Xn,
239
239
  props: { className: "dc:w-full dc:border-collapse dc:text-sm" }
240
240
  },
241
241
  thead: { props: { className: "bg-dc-surface-secondary" } },
242
242
  th: { props: { className: "dc:px-3 dc:py-2 dc:text-left dc:font-semibold dc:text-xs text-dc-text-secondary dc:uppercase dc:tracking-wider border-dc-border dc:border-b" } },
243
243
  td: { props: { className: "dc:px-3 dc:py-2 dc:text-sm text-dc-text border-dc-border dc:border-b" } },
244
244
  tr: { props: { className: "dc:hover:opacity-80" } }
245
- } }, Zn = H.memo(function({ block: e, onRemove: t, onMoveUp: n, onMoveDown: r, isFirst: i, isLast: a }) {
246
- return /* @__PURE__ */ X("div", {
245
+ } }, Qn = U.memo(function({ block: e, onRemove: t, onMoveUp: n, onMoveDown: r, isFirst: i, isLast: a }) {
246
+ return /* @__PURE__ */ Z("div", {
247
247
  className: "dc:relative dc:mb-4 bg-dc-surface dc:border border-dc-border dc:rounded-lg dc:flex dc:flex-col",
248
- children: [/* @__PURE__ */ X("div", {
248
+ children: [/* @__PURE__ */ Z("div", {
249
249
  className: "dc:flex dc:items-center dc:justify-between dc:px-3 dc:py-1.5 dc:border-b border-dc-border dc:shrink-0 bg-dc-surface-secondary dc:rounded-t-lg",
250
- children: [/* @__PURE__ */ X("div", {
250
+ children: [/* @__PURE__ */ Z("div", {
251
251
  className: "dc:flex dc:items-center dc:gap-2 dc:flex-1 dc:min-w-0",
252
- children: [/* @__PURE__ */ Y(Gn, { style: Q }), /* @__PURE__ */ Y("h3", {
252
+ children: [/* @__PURE__ */ X(Kn, { style: Gn }), /* @__PURE__ */ X("h3", {
253
253
  className: "dc:font-semibold dc:text-sm text-dc-text dc:truncate",
254
254
  children: e.title || "Markdown"
255
255
  })]
256
- }), /* @__PURE__ */ X("div", {
256
+ }), /* @__PURE__ */ Z("div", {
257
257
  className: "dc:flex dc:items-center dc:gap-1 dc:shrink-0 dc:ml-4 dc:-mr-2",
258
258
  children: [
259
- !i && /* @__PURE__ */ Y("button", {
259
+ !i && /* @__PURE__ */ X("button", {
260
260
  onClick: () => n(e.id),
261
261
  className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
262
262
  title: "Move up",
263
- children: /* @__PURE__ */ Y(Kn, { style: Q })
263
+ children: /* @__PURE__ */ X(qn, { style: Gn })
264
264
  }),
265
- !a && /* @__PURE__ */ Y("button", {
265
+ !a && /* @__PURE__ */ X("button", {
266
266
  onClick: () => r(e.id),
267
267
  className: "dc:p-1 dc:bg-transparent dc:border-none dc:rounded-sm text-dc-text-secondary dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
268
268
  title: "Move down",
269
- children: /* @__PURE__ */ Y(qn, { style: Q })
269
+ children: /* @__PURE__ */ X(Jn, { style: Gn })
270
270
  }),
271
- /* @__PURE__ */ Y("button", {
271
+ /* @__PURE__ */ X("button", {
272
272
  onClick: () => t(e.id),
273
273
  className: "dc:p-1 dc:mr-0.5 dc:bg-transparent dc:border-none dc:rounded-sm dc:cursor-pointer dc:hover:bg-dc-danger-bg text-dc-danger dc:transition-colors",
274
274
  title: "Remove",
275
- children: /* @__PURE__ */ Y(Jn, { style: Q })
275
+ children: /* @__PURE__ */ X(Yn, { style: Gn })
276
276
  })
277
277
  ]
278
278
  })]
279
- }), /* @__PURE__ */ Y("div", {
279
+ }), /* @__PURE__ */ X("div", {
280
280
  className: "dc:p-4 dc:min-w-0 dc:overflow-hidden",
281
- children: /* @__PURE__ */ Y(yn, {
282
- options: Xn,
281
+ children: /* @__PURE__ */ X(yn, {
282
+ options: Zn,
283
283
  children: e.content
284
284
  })
285
285
  })]
286
286
  });
287
- }), Qn = H.memo(function({ colorPalette: e }) {
288
- let n = e ?? Mt(), r = Z(jn), { removeBlock: i, moveBlock: a, updateBlock: o } = Z(t(Rn)), s = K(null), [c, l] = q(null), u = K(r.length);
289
- W(() => {
290
- r.length > u.current && s.current?.scrollIntoView({ behavior: "smooth" }), u.current = r.length;
291
- }, [r.length]);
292
- let d = U((e) => i(e), [i]), f = U((e) => a(e, "up"), [a]), p = U((e) => a(e, "down"), [a]), m = U((e) => l(e), []), h = U((e) => {
293
- if (!c) return;
287
+ }), $n = U.memo(function({ colorPalette: e }) {
288
+ let { t: n } = H(), r = e ?? Mt(), i = Q(jn), { removeBlock: a, moveBlock: o, updateBlock: s } = Q(t(Rn)), c = q(null), [l, u] = J(null), d = q(i.length);
289
+ G(() => {
290
+ i.length > d.current && c.current?.scrollIntoView({ behavior: "smooth" }), d.current = i.length;
291
+ }, [i.length]);
292
+ let f = W((e) => a(e), [a]), p = W((e) => o(e, "up"), [o]), m = W((e) => o(e, "down"), [o]), h = W((e) => u(e), []), g = W((e) => {
293
+ if (!l) return;
294
294
  let { analysisConfig: t } = At(e);
295
295
  if (t) {
296
296
  let n = t.charts[t.analysisType];
297
- o(c.id, {
297
+ s(l.id, {
298
298
  title: e.title,
299
299
  query: JSON.stringify(t.query),
300
300
  chartType: n?.chartType || "bar",
@@ -302,70 +302,70 @@ var Xn = { overrides: {
302
302
  displayConfig: n?.displayConfig
303
303
  });
304
304
  }
305
- l(null);
306
- }, [c, o]);
307
- return r.length === 0 ? /* @__PURE__ */ Y("div", {
305
+ u(null);
306
+ }, [l, s]);
307
+ return i.length === 0 ? /* @__PURE__ */ X("div", {
308
308
  className: "dc:flex dc:items-center dc:justify-center dc:h-full",
309
- children: /* @__PURE__ */ X("div", {
309
+ children: /* @__PURE__ */ Z("div", {
310
310
  className: "dc:text-center dc:max-w-sm dc:px-6",
311
- children: [/* @__PURE__ */ Y("h3", {
311
+ children: [/* @__PURE__ */ X("h3", {
312
312
  className: "dc:text-base dc:font-semibold text-dc-text dc:mb-2",
313
- children: "Your notebook is empty"
314
- }), /* @__PURE__ */ Y("p", {
313
+ children: n("notebook.canvas.emptyTitle")
314
+ }), /* @__PURE__ */ X("p", {
315
315
  className: "dc:text-sm text-dc-text-secondary",
316
- children: "Ask the AI assistant a question about your data. Charts and insights will appear here as the assistant analyzes your data."
316
+ children: n("notebook.canvas.emptyDescription")
317
317
  })]
318
318
  })
319
- }) : /* @__PURE__ */ X("div", {
319
+ }) : /* @__PURE__ */ Z("div", {
320
320
  className: "dc:h-full dc:overflow-y-auto dc:p-4",
321
321
  children: [
322
- r.map((e, t) => {
323
- let i = t === 0, a = t === r.length - 1;
324
- return e.type === "portlet" ? /* @__PURE__ */ Y(Wn, {
322
+ i.map((e, t) => {
323
+ let n = t === 0, a = t === i.length - 1;
324
+ return e.type === "portlet" ? /* @__PURE__ */ X(Wn, {
325
325
  block: e,
326
- colorPalette: n,
327
- onRemove: d,
328
- onMoveUp: f,
329
- onMoveDown: p,
330
- onEdit: m,
331
- isFirst: i,
326
+ colorPalette: r,
327
+ onRemove: f,
328
+ onMoveUp: p,
329
+ onMoveDown: m,
330
+ onEdit: h,
331
+ isFirst: n,
332
332
  isLast: a
333
- }, e.id) : e.type === "markdown" ? /* @__PURE__ */ Y(Zn, {
333
+ }, e.id) : e.type === "markdown" ? /* @__PURE__ */ X(Qn, {
334
334
  block: e,
335
- onRemove: d,
336
- onMoveUp: f,
337
- onMoveDown: p,
338
- isFirst: i,
335
+ onRemove: f,
336
+ onMoveUp: p,
337
+ onMoveDown: m,
338
+ isFirst: n,
339
339
  isLast: a
340
340
  }, e.id) : null;
341
341
  }),
342
- /* @__PURE__ */ Y("div", { ref: s }),
343
- /* @__PURE__ */ Y(ct, {
344
- isOpen: !!c,
345
- onClose: () => l(null),
346
- onSave: h,
347
- colorPalette: n,
348
- portlet: c ? {
349
- id: c.id,
350
- title: c.title,
351
- query: c.query,
352
- chartType: c.chartType,
353
- chartConfig: c.chartConfig,
354
- displayConfig: c.displayConfig,
342
+ /* @__PURE__ */ X("div", { ref: c }),
343
+ /* @__PURE__ */ X(st, {
344
+ isOpen: !!l,
345
+ onClose: () => u(null),
346
+ onSave: g,
347
+ colorPalette: r,
348
+ portlet: l ? {
349
+ id: l.id,
350
+ title: l.title,
351
+ query: l.query,
352
+ chartType: l.chartType,
353
+ chartConfig: l.chartConfig,
354
+ displayConfig: l.displayConfig,
355
355
  w: 5,
356
356
  h: 4,
357
357
  x: 0,
358
358
  y: 0
359
359
  } : null,
360
- title: "Edit Visualization",
361
- submitText: "Update"
360
+ title: n("notebook.canvas.editVisualization"),
361
+ submitText: n("notebook.canvas.update")
362
362
  })
363
363
  ]
364
364
  });
365
365
  });
366
366
  //#endregion
367
367
  //#region src/client/hooks/useAgentChat.ts
368
- function $n(e) {
368
+ function er(e) {
369
369
  if (e.startsWith("{") || e.includes("\"type\":\"error\"")) try {
370
370
  let t = JSON.parse(e.replace(/^Error:\s*/, ""));
371
371
  return {
@@ -383,10 +383,10 @@ function $n(e) {
383
383
  }
384
384
  return e;
385
385
  }
386
- function er(e) {
387
- let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = k(), s = K(null), [c, l] = q(!1), u = K(e);
386
+ function tr(e) {
387
+ let { agentEndpoint: t, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a } = e, { cubeApi: o } = k(), s = q(null), [c, l] = J(!1), u = q(e);
388
388
  return u.current = e, {
389
- sendMessage: U(async (e, c, d) => {
389
+ sendMessage: W(async (e, c, d) => {
390
390
  function f(e) {
391
391
  let t = u.current;
392
392
  switch (e.type) {
@@ -473,7 +473,7 @@ function er(e) {
473
473
  } catch (e) {
474
474
  if (e.name !== "AbortError") {
475
475
  let t = e instanceof Error ? e.message : "Stream failed";
476
- u.current.onError($n(t));
476
+ u.current.onError(er(t));
477
477
  }
478
478
  } finally {
479
479
  l(!1), s.current = null;
@@ -487,20 +487,20 @@ function er(e) {
487
487
  a
488
488
  ]),
489
489
  isStreaming: c,
490
- abort: U(() => {
490
+ abort: W(() => {
491
491
  s.current && (s.current.abort(), s.current = null, l(!1));
492
492
  }, [])
493
493
  };
494
494
  }
495
495
  //#endregion
496
496
  //#region src/client/components/AgenticNotebook/ChatMessage.tsx
497
- function tr(e) {
497
+ function nr(e) {
498
498
  let t = [], n = e, r = 0;
499
499
  for (; n;) {
500
500
  let e = n.match(/^(.*?)`([^`]+)`(.*)$/);
501
501
  if (e) {
502
502
  let [, i, a, o] = e;
503
- i && t.push(/* @__PURE__ */ Y("span", { children: i }, r++)), t.push(/* @__PURE__ */ Y("code", {
503
+ i && t.push(/* @__PURE__ */ X("span", { children: i }, r++)), t.push(/* @__PURE__ */ X("code", {
504
504
  className: "dc:px-1 dc:py-0.5 dc:rounded dc:text-xs bg-dc-surface dc:font-mono",
505
505
  children: a
506
506
  }, r++)), n = o;
@@ -509,76 +509,76 @@ function tr(e) {
509
509
  let i = n.match(/^(.*?)\*\*([^*]+)\*\*(.*)$/);
510
510
  if (i) {
511
511
  let [, e, a, o] = i;
512
- e && t.push(/* @__PURE__ */ Y("span", { children: e }, r++)), t.push(/* @__PURE__ */ Y("strong", {
512
+ e && t.push(/* @__PURE__ */ X("span", { children: e }, r++)), t.push(/* @__PURE__ */ X("strong", {
513
513
  className: "dc:font-semibold",
514
514
  children: a
515
515
  }, r++)), n = o;
516
516
  continue;
517
517
  }
518
- t.push(/* @__PURE__ */ Y("span", { children: n }, r));
518
+ t.push(/* @__PURE__ */ X("span", { children: n }, r));
519
519
  break;
520
520
  }
521
521
  return t;
522
522
  }
523
- var nr = {
523
+ var rr = {
524
524
  discover_cubes: "Discovering cubes",
525
525
  get_cube_metadata: "Reading metadata",
526
526
  execute_query: "Executing query",
527
527
  add_portlet: "Adding visualization",
528
528
  add_markdown: "Adding explanation"
529
529
  };
530
- function rr({ toolCall: e, loadingComponent: t }) {
531
- let [n, r] = q(!1), i = nr[e.name] || e.name, a = e.status === "running";
532
- return /* @__PURE__ */ X("div", {
530
+ function ir({ toolCall: e, loadingComponent: t }) {
531
+ let [n, r] = J(!1), i = rr[e.name] || e.name, a = e.status === "running";
532
+ return /* @__PURE__ */ Z("div", {
533
533
  className: "dc:my-1 dc:text-xs",
534
- children: [/* @__PURE__ */ X("button", {
534
+ children: [/* @__PURE__ */ Z("button", {
535
535
  onClick: () => r(!n),
536
536
  className: "dc:flex dc:items-center dc:gap-1.5 text-dc-text-secondary dc:hover:opacity-80 dc:transition-opacity",
537
537
  children: [
538
- a ? t ? /* @__PURE__ */ Y("span", {
538
+ a ? t ? /* @__PURE__ */ X("span", {
539
539
  className: "dc:inline-flex dc:items-center dc:justify-center dc:h-3 dc:w-3",
540
540
  children: t
541
- }) : /* @__PURE__ */ Y(V, { size: "xs" }) : /* @__PURE__ */ Y("span", {
541
+ }) : /* @__PURE__ */ X(_t, { size: "xs" }) : /* @__PURE__ */ X("span", {
542
542
  className: "dc:text-xs",
543
543
  children: e.status === "error" ? "✗" : "✓"
544
544
  }),
545
- /* @__PURE__ */ X("span", { children: [i, a ? "..." : ""] }),
546
- !a && /* @__PURE__ */ Y("span", {
545
+ /* @__PURE__ */ Z("span", { children: [i, a ? "..." : ""] }),
546
+ !a && /* @__PURE__ */ X("span", {
547
547
  className: "dc:text-[10px] dc:opacity-60",
548
548
  children: n ? "▲" : "▼"
549
549
  })
550
550
  ]
551
- }), n && e.result != null && /* @__PURE__ */ Y("pre", {
551
+ }), n && e.result != null && /* @__PURE__ */ X("pre", {
552
552
  className: "dc:mt-1 dc:p-2 dc:rounded dc:text-[11px] dc:overflow-x-auto dc:max-h-32 dc:overflow-y-auto bg-dc-surface-secondary text-dc-text-secondary",
553
553
  children: typeof e.result == "string" ? e.result : JSON.stringify(e.result, null, 2)
554
554
  })]
555
555
  });
556
556
  }
557
- var ir = { animation: "dc-msg-in 100ms ease-out" }, ar = H.memo(function({ message: e, loadingComponent: t }) {
557
+ var ar = { animation: "dc-msg-in 100ms ease-out" }, or = U.memo(function({ message: e, loadingComponent: t }) {
558
558
  let n = e.role === "user", r = !!e.content?.trim(), i = !!e.error, a = e.toolCalls && e.toolCalls.length > 0;
559
- return !n && !r && !i && !a ? null : /* @__PURE__ */ Y("div", {
559
+ return !n && !r && !i && !a ? null : /* @__PURE__ */ X("div", {
560
560
  className: `dc:flex dc:mb-3 ${n ? "dc:justify-end" : "dc:justify-start"}`,
561
- style: ir,
562
- children: /* @__PURE__ */ X("div", {
561
+ style: ar,
562
+ children: /* @__PURE__ */ Z("div", {
563
563
  className: `dc:max-w-[85%] dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm ${n ? "bg-dc-accent text-dc-accent-text dc:rounded-br-sm" : i && !r ? "bg-dc-warning-bg text-dc-text dc:rounded-bl-sm" : "bg-dc-surface-secondary text-dc-text dc:rounded-bl-sm"}`,
564
564
  children: [
565
- r && /* @__PURE__ */ Y("div", {
565
+ r && /* @__PURE__ */ X("div", {
566
566
  className: "dc:whitespace-pre-wrap dc:break-words",
567
- children: n ? e.content : tr(e.content)
567
+ children: n ? e.content : nr(e.content)
568
568
  }),
569
- i && /* @__PURE__ */ X("div", {
569
+ i && /* @__PURE__ */ Z("div", {
570
570
  className: `dc:flex dc:items-start dc:gap-2 ${r ? "dc:mt-2 dc:pt-2 dc:border-t dc:border-current dc:border-opacity-10" : ""}`,
571
- children: [/* @__PURE__ */ Y("span", {
571
+ children: [/* @__PURE__ */ X("span", {
572
572
  className: "dc:text-base dc:leading-none dc:mt-0.5 text-dc-warning dc:flex-shrink-0",
573
573
  children: "⚠"
574
- }), /* @__PURE__ */ Y("span", {
574
+ }), /* @__PURE__ */ X("span", {
575
575
  className: "text-dc-text-secondary",
576
576
  children: e.error
577
577
  })]
578
578
  }),
579
- a && /* @__PURE__ */ Y("div", {
579
+ a && /* @__PURE__ */ X("div", {
580
580
  className: r || i ? "dc:mt-1 dc:border-t dc:border-current dc:border-opacity-10 dc:pt-1" : "",
581
- children: e.toolCalls.map((e, n) => /* @__PURE__ */ Y(rr, {
581
+ children: e.toolCalls.map((e, n) => /* @__PURE__ */ X(ir, {
582
582
  toolCall: e,
583
583
  loadingComponent: t
584
584
  }, e.id || n))
@@ -586,273 +586,275 @@ var ir = { animation: "dc-msg-in 100ms ease-out" }, ar = H.memo(function({ messa
586
586
  ]
587
587
  })
588
588
  });
589
- }), or = H.memo(function({ value: e, onChange: t, onSend: n, onStop: r, onContinue: i, isStreaming: a = !1, showContinue: o = !1, disabled: s = !1, placeholder: c = "Ask about your data..." }) {
590
- let l = K(null);
591
- return W(() => {
592
- let e = l.current;
589
+ }), sr = U.memo(function({ value: e, onChange: t, onSend: n, onStop: r, onContinue: i, isStreaming: a = !1, showContinue: o = !1, disabled: s = !1, placeholder: c }) {
590
+ let { t: l } = H(), u = c ?? l("notebook.chatInput.placeholder"), d = q(null);
591
+ return G(() => {
592
+ let e = d.current;
593
593
  e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 150)}px`);
594
- }, [e]), /* @__PURE__ */ X("div", {
594
+ }, [e]), /* @__PURE__ */ Z("div", {
595
595
  className: "dc:flex dc:gap-2 dc:items-end dc:p-3 border-dc-border dc:border-t",
596
- children: [/* @__PURE__ */ Y("textarea", {
597
- ref: l,
596
+ children: [/* @__PURE__ */ X("textarea", {
597
+ ref: d,
598
598
  value: e,
599
599
  onChange: (e) => t(e.target.value),
600
- onKeyDown: U((t) => {
600
+ onKeyDown: W((t) => {
601
601
  t.key === "Enter" && !t.shiftKey && (t.preventDefault(), !s && e.trim() && n());
602
602
  }, [
603
603
  s,
604
604
  e,
605
605
  n
606
606
  ]),
607
- placeholder: c,
607
+ placeholder: u,
608
608
  disabled: s,
609
609
  rows: 1,
610
610
  className: "dc:flex-1 dc:resize-none dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text border-dc-border dc:border dc:outline-none dc:focus:ring-1 focus:ring-dc-accent dc:disabled:opacity-50"
611
- }), a ? /* @__PURE__ */ Y("button", {
611
+ }), a ? /* @__PURE__ */ X("button", {
612
612
  onClick: r,
613
613
  className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors text-dc-error border-dc-border dc:border dc:hover:opacity-80 dc:shrink-0",
614
- children: "Stop"
615
- }) : /* @__PURE__ */ X(J, { children: [o && !e.trim() && /* @__PURE__ */ Y("button", {
614
+ children: l("notebook.chatInput.stop")
615
+ }) : /* @__PURE__ */ Z(Y, { children: [o && !e.trim() && /* @__PURE__ */ X("button", {
616
616
  onClick: () => {
617
- i?.(), l.current?.focus();
617
+ i?.(), d.current?.focus();
618
618
  },
619
619
  className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors border-dc-border dc:border text-dc-text-secondary dc:hover:opacity-80 dc:shrink-0",
620
- children: "Continue"
621
- }), /* @__PURE__ */ Y("button", {
620
+ children: l("notebook.chatInput.continue")
621
+ }), /* @__PURE__ */ X("button", {
622
622
  onClick: n,
623
623
  disabled: s || !e.trim(),
624
624
  className: "dc:px-4 dc:py-2 dc:rounded-lg dc:text-sm dc:font-medium dc:transition-colors bg-dc-accent text-dc-accent-text dc:hover:opacity-90 dc:disabled:opacity-40 dc:disabled:cursor-not-allowed dc:shrink-0",
625
- children: "Send"
625
+ children: l("notebook.chatInput.send")
626
626
  })] })]
627
627
  });
628
- }), sr = o("thumbUp"), cr = o("thumbDown"), lr = H.memo(function({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onClear: o, onDashboardSaved: s, onScore: c, loadingComponent: l, initialPrompt: u }) {
629
- let d = K(null), f = K(!1), [p, m] = q(null), [h, g] = q(/* @__PURE__ */ new Set()), [_, v] = q(!1), y = K(!1), { messages: b, isStreaming: x, inputValue: S } = Z(t(In)), { addMessage: C, appendToLastAssistantMessage: w, setLastAssistantError: T, addToolCallToLastAssistant: E, updateLastToolCall: D, setIsStreaming: O, setInputValue: k, setSessionId: A } = Z(t(Ln)), j = Z((e) => e.sessionId), M = Z((e) => e.addBlock), N = Z((e) => e.reset), ee = Z((e) => e.blocks.filter((e) => e.type === "portlet").length), P = K(b);
630
- P.current = b;
631
- let F = K(x);
632
- F.current = x;
633
- let I = K(j);
634
- I.current = j;
635
- let L = U(() => {
636
- y.current && (y.current = !1, C({
628
+ }), cr = o("thumbUp"), lr = o("thumbDown"), ur = U.memo(function({ agentEndpoint: e, agentApiKey: n, agentProvider: r, agentModel: i, agentProviderEndpoint: a, onClear: o, onDashboardSaved: s, onScore: c, loadingComponent: l, initialPrompt: u }) {
629
+ let { t: d } = H(), f = q(null), p = q(!1), [m, h] = J(null), [g, _] = J(/* @__PURE__ */ new Set()), [v, y] = J(!1), b = q(!1), { messages: x, isStreaming: S, inputValue: C } = Q(t(In)), { addMessage: w, appendToLastAssistantMessage: T, setLastAssistantError: E, addToolCallToLastAssistant: D, updateLastToolCall: O, setIsStreaming: k, setInputValue: A, setSessionId: j } = Q(t(Ln)), M = Q((e) => e.sessionId), N = Q((e) => e.addBlock), P = Q((e) => e.reset), F = Q((e) => e.blocks.filter((e) => e.type === "portlet").length), I = q(x);
630
+ I.current = x;
631
+ let L = q(S);
632
+ L.current = S;
633
+ let R = q(M);
634
+ R.current = M;
635
+ let z = W(() => {
636
+ b.current && (b.current = !1, w({
637
637
  id: `msg-${Date.now()}`,
638
638
  role: "assistant",
639
639
  content: "",
640
640
  toolCalls: [],
641
641
  timestamp: Date.now()
642
642
  }));
643
- }, [C]), R = K(b.length);
644
- W(() => {
645
- b.length > R.current && d.current?.scrollIntoView({ behavior: "smooth" }), R.current = b.length;
646
- }, [b]), W(() => {
647
- _ && d.current?.scrollIntoView({ behavior: "smooth" });
648
- }, [_]);
649
- let { sendMessage: te, abort: z } = er({
643
+ }, [w]), ee = q(x.length);
644
+ G(() => {
645
+ x.length > ee.current && f.current?.scrollIntoView({ behavior: "smooth" }), ee.current = x.length;
646
+ }, [x]), G(() => {
647
+ v && f.current?.scrollIntoView({ behavior: "smooth" });
648
+ }, [v]);
649
+ let { sendMessage: B, abort: te } = tr({
650
650
  agentEndpoint: e,
651
651
  agentApiKey: n,
652
652
  agentProvider: r,
653
653
  agentModel: i,
654
654
  agentProviderEndpoint: a,
655
- onTextDelta: U((e) => {
656
- v(!1), L(), w(e);
657
- }, [L, w]),
658
- onToolStart: U((e, t, n) => {
659
- v(!1), L(), E({
655
+ onTextDelta: W((e) => {
656
+ y(!1), z(), T(e);
657
+ }, [z, T]),
658
+ onToolStart: W((e, t, n) => {
659
+ y(!1), z(), D({
660
660
  id: e,
661
661
  name: t,
662
662
  input: n,
663
663
  status: "running"
664
664
  });
665
- }, [L, E]),
666
- onToolResult: U((e, t, n, r) => {
667
- D({
665
+ }, [z, D]),
666
+ onToolResult: W((e, t, n, r) => {
667
+ O({
668
668
  id: e,
669
669
  status: r ? "error" : "complete",
670
670
  result: n
671
671
  });
672
- }, [D]),
673
- onAddPortlet: U((e) => {
674
- M(e);
675
- }, [M]),
676
- onAddMarkdown: U((e) => {
677
- M(e);
678
- }, [M]),
672
+ }, [O]),
673
+ onAddPortlet: W((e) => {
674
+ N(e);
675
+ }, [N]),
676
+ onAddMarkdown: W((e) => {
677
+ N(e);
678
+ }, [N]),
679
679
  onDashboardSaved: s,
680
- onTurnComplete: U(() => {
681
- y.current = !0, v(!0);
680
+ onTurnComplete: W(() => {
681
+ b.current = !0, y(!0);
682
682
  }, []),
683
- onDone: U((e, t) => {
684
- y.current = !1, A(e), O(!1), v(!1), t && m(t);
685
- }, [A, O]),
686
- onError: U((e) => {
687
- v(!1), L(), T(e), O(!1);
683
+ onDone: W((e, t) => {
684
+ b.current = !1, j(e), k(!1), y(!1), t && h(t);
685
+ }, [j, k]),
686
+ onError: W((e) => {
687
+ y(!1), z(), E(e), k(!1);
688
688
  }, [
689
- L,
690
- T,
691
- O
689
+ z,
690
+ E,
691
+ k
692
692
  ])
693
- }), B = U((e) => {
694
- if (!e || F.current) return;
695
- y.current = !1;
696
- let t = P.current.map((e) => ({
693
+ }), V = W((e) => {
694
+ if (!e || L.current) return;
695
+ b.current = !1;
696
+ let t = I.current.map((e) => ({
697
697
  role: e.role,
698
698
  content: e.content,
699
699
  ...e.toolCalls && e.toolCalls.length > 0 ? { toolCalls: e.toolCalls } : {}
700
700
  }));
701
- C({
701
+ w({
702
702
  id: `msg-${Date.now()}`,
703
703
  role: "user",
704
704
  content: e,
705
705
  timestamp: Date.now()
706
- }), C({
706
+ }), w({
707
707
  id: `msg-${Date.now() + 1}`,
708
708
  role: "assistant",
709
709
  content: "",
710
710
  toolCalls: [],
711
711
  timestamp: Date.now()
712
- }), k(""), O(!0), v(!0), te(e, I.current, t);
712
+ }), A(""), k(!0), y(!0), B(e, R.current, t);
713
713
  }, [
714
- C,
714
+ w,
715
+ A,
715
716
  k,
716
- O,
717
- te
717
+ B
718
718
  ]);
719
- W(() => {
720
- if (u && !f.current && b.length === 0) {
721
- f.current = !0;
722
- let e = setTimeout(() => B(u), 100);
719
+ G(() => {
720
+ if (u && !p.current && x.length === 0) {
721
+ p.current = !0;
722
+ let e = setTimeout(() => V(u), 100);
723
723
  return () => {
724
- clearTimeout(e), f.current = !1;
724
+ clearTimeout(e), p.current = !1;
725
725
  };
726
726
  }
727
727
  }, [
728
728
  u,
729
- b.length,
730
- B
729
+ x.length,
730
+ V
731
731
  ]);
732
- let ne = K(S);
733
- ne.current = S;
734
- let re = U(() => {
735
- B(ne.current.trim());
736
- }, [B]), ie = U(() => {
737
- z(), O(!1);
738
- }, [z, O]), ae = U(() => {
739
- k("");
740
- }, [k]), oe = U(() => {
741
- z(), O(!1), v(!1), N(), m(null), g(/* @__PURE__ */ new Set()), o?.();
732
+ let ne = q(C);
733
+ ne.current = C;
734
+ let re = W(() => {
735
+ V(ne.current.trim());
736
+ }, [V]), ie = W(() => {
737
+ te(), k(!1);
738
+ }, [te, k]), ae = W(() => {
739
+ A("");
740
+ }, [A]), oe = W(() => {
741
+ te(), k(!1), y(!1), P(), h(null), _(/* @__PURE__ */ new Set()), o?.();
742
742
  }, [
743
- z,
744
- O,
745
- N,
743
+ te,
744
+ k,
745
+ P,
746
746
  o
747
- ]), se = U(() => {
748
- B("Save the current notebook as a dashboard with a professional layout, section headers, and appropriate filters.");
749
- }, [B]), ce = U((e) => {
750
- !p || !c || (c({
751
- traceId: p,
747
+ ]), se = W(() => {
748
+ V(d("notebook.saveAsDashboardPrompt"));
749
+ }, [V, d]), ce = W((e) => {
750
+ !m || !c || (c({
751
+ traceId: m,
752
752
  value: e
753
- }), g((e) => new Set(e).add(p)));
754
- }, [p, c]), le = !!s && !x && ee > 0 && b.length > 0, ue = !!c && !x && p && b.length > 0 && !h.has(p), de = p ? h.has(p) : !1;
755
- return /* @__PURE__ */ X("div", {
753
+ }), _((e) => new Set(e).add(m)));
754
+ }, [m, c]), le = !!s && !S && F > 0 && x.length > 0, ue = !!c && !S && m && x.length > 0 && !g.has(m), de = m ? g.has(m) : !1;
755
+ return /* @__PURE__ */ Z("div", {
756
756
  className: "dc:flex dc:flex-col dc:h-full bg-dc-surface",
757
757
  children: [
758
- /* @__PURE__ */ X("div", {
758
+ /* @__PURE__ */ Z("div", {
759
759
  className: "dc:flex dc:items-center dc:justify-between dc:px-4 dc:py-3 border-dc-border dc:border-b",
760
- children: [/* @__PURE__ */ Y("h3", {
760
+ children: [/* @__PURE__ */ X("h3", {
761
761
  className: "dc:text-sm dc:font-semibold text-dc-text",
762
- children: "AI Assistant"
763
- }), /* @__PURE__ */ X("div", {
762
+ children: d("notebook.aiAssistant")
763
+ }), /* @__PURE__ */ Z("div", {
764
764
  className: "dc:flex dc:items-center dc:gap-1",
765
- children: [le && /* @__PURE__ */ Y("button", {
765
+ children: [le && /* @__PURE__ */ X("button", {
766
766
  onClick: se,
767
767
  className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-accent dc:hover:opacity-80",
768
- title: "Save notebook as a dashboard",
769
- children: "Save as Dashboard"
770
- }), b.length > 0 && /* @__PURE__ */ Y("button", {
768
+ title: d("notebook.saveAsDashboardTitle"),
769
+ children: d("notebook.saveAsDashboard")
770
+ }), x.length > 0 && /* @__PURE__ */ X("button", {
771
771
  onClick: oe,
772
- disabled: x,
772
+ disabled: S,
773
773
  className: "dc:text-xs dc:px-2 dc:py-1 dc:rounded text-dc-text-secondary dc:hover:opacity-80 dc:disabled:opacity-40",
774
- title: "Clear notebook and chat",
775
- children: "Clear"
774
+ title: d("notebook.clearTitle"),
775
+ children: d("common.actions.clear")
776
776
  })]
777
777
  })]
778
778
  }),
779
- /* @__PURE__ */ X("div", {
779
+ /* @__PURE__ */ Z("div", {
780
780
  className: "dc:flex-1 dc:overflow-y-auto dc:px-4 dc:py-3",
781
781
  children: [
782
- b.length === 0 ? /* @__PURE__ */ Y(dr, {}) : b.map((e) => /* @__PURE__ */ Y(ar, {
782
+ x.length === 0 ? /* @__PURE__ */ X(fr, {}) : x.map((e) => /* @__PURE__ */ X(or, {
783
783
  message: e,
784
784
  loadingComponent: l
785
785
  }, e.id)),
786
- _ && /* @__PURE__ */ Y(ur, { loadingComponent: l }),
787
- (ue || de) && /* @__PURE__ */ Y("div", {
786
+ v && /* @__PURE__ */ X(dr, { loadingComponent: l }),
787
+ (ue || de) && /* @__PURE__ */ X("div", {
788
788
  className: "dc:flex dc:items-center dc:justify-center dc:gap-3 dc:py-4 dc:mt-2",
789
- children: de ? /* @__PURE__ */ Y("span", {
789
+ children: de ? /* @__PURE__ */ X("span", {
790
790
  className: "dc:text-sm text-dc-text-secondary",
791
- children: "Thanks for your feedback!"
792
- }) : /* @__PURE__ */ X(J, { children: [/* @__PURE__ */ Y("span", {
791
+ children: d("notebook.feedbackThanks")
792
+ }) : /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X("span", {
793
793
  className: "dc:text-sm text-dc-text-secondary",
794
- children: "Was this helpful?"
795
- }), /* @__PURE__ */ X("div", {
794
+ children: d("notebook.feedbackQuestion")
795
+ }), /* @__PURE__ */ Z("div", {
796
796
  className: "dc:flex dc:items-center dc:gap-2",
797
- children: [/* @__PURE__ */ X("button", {
797
+ children: [/* @__PURE__ */ Z("button", {
798
798
  onClick: () => ce(1),
799
799
  className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-success hover:bg-dc-success-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
800
- children: [/* @__PURE__ */ Y(sr, { className: "dc:w-4 dc:h-4" }), "Yes"]
801
- }), /* @__PURE__ */ X("button", {
800
+ children: [/* @__PURE__ */ X(cr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackYes")]
801
+ }), /* @__PURE__ */ Z("button", {
802
802
  onClick: () => ce(0),
803
803
  className: "dc:flex dc:items-center dc:gap-1.5 dc:px-3 dc:py-1.5 dc:rounded-lg dc:text-sm dc:font-medium border-dc-border dc:border text-dc-error hover:bg-dc-danger-bg dc:transition-colors bg-dc-surface dc:cursor-pointer",
804
- children: [/* @__PURE__ */ Y(cr, { className: "dc:w-4 dc:h-4" }), "No"]
804
+ children: [/* @__PURE__ */ X(lr, { className: "dc:w-4 dc:h-4" }), d("notebook.feedbackNo")]
805
805
  })]
806
806
  })] })
807
807
  }),
808
- /* @__PURE__ */ Y("div", { ref: d })
808
+ /* @__PURE__ */ X("div", { ref: f })
809
809
  ]
810
810
  }),
811
- /* @__PURE__ */ Y(or, {
812
- value: S,
813
- onChange: k,
811
+ /* @__PURE__ */ X(sr, {
812
+ value: C,
813
+ onChange: A,
814
814
  onSend: re,
815
815
  onStop: ie,
816
816
  onContinue: ae,
817
- isStreaming: x,
818
- showContinue: !x && b.length > 0
817
+ isStreaming: S,
818
+ showContinue: !S && x.length > 0
819
819
  })
820
820
  ]
821
821
  });
822
822
  });
823
- function ur({ loadingComponent: e }) {
824
- return /* @__PURE__ */ Y("div", {
823
+ function dr({ loadingComponent: e }) {
824
+ let { t } = H();
825
+ return /* @__PURE__ */ X("div", {
825
826
  className: "dc:flex dc:mb-3 dc:justify-start",
826
827
  style: { animation: "dc-msg-in 100ms ease-out" },
827
- children: /* @__PURE__ */ X("div", {
828
+ children: /* @__PURE__ */ Z("div", {
828
829
  className: "dc:rounded-lg dc:px-3 dc:py-2 dc:text-sm bg-dc-surface-secondary text-dc-text-secondary dc:rounded-bl-sm dc:flex dc:items-center dc:gap-2",
829
- children: [e ? /* @__PURE__ */ Y("span", {
830
+ children: [e ? /* @__PURE__ */ X("span", {
830
831
  className: "dc:inline-flex dc:items-center dc:justify-center dc:h-4 dc:w-4",
831
832
  children: e
832
- }) : /* @__PURE__ */ Y(V, { size: "xs" }), /* @__PURE__ */ Y("span", { children: "Thinking..." })]
833
+ }) : /* @__PURE__ */ X(_t, { size: "xs" }), /* @__PURE__ */ X("span", { children: t("notebook.thinking") })]
833
834
  })
834
835
  });
835
836
  }
836
- function dr() {
837
- return /* @__PURE__ */ Y("div", {
837
+ function fr() {
838
+ let { t: e } = H();
839
+ return /* @__PURE__ */ X("div", {
838
840
  className: "dc:flex dc:items-center dc:justify-center dc:h-full",
839
- children: /* @__PURE__ */ X("div", {
841
+ children: /* @__PURE__ */ Z("div", {
840
842
  className: "dc:text-center dc:max-w-xs",
841
843
  children: [
842
- /* @__PURE__ */ Y("div", {
844
+ /* @__PURE__ */ X("div", {
843
845
  className: "dc:text-lg dc:font-semibold text-dc-text dc:mb-2",
844
- children: "Data Analysis Assistant"
846
+ children: e("notebook.emptyState.title")
845
847
  }),
846
- /* @__PURE__ */ Y("p", {
848
+ /* @__PURE__ */ X("p", {
847
849
  className: "dc:text-sm text-dc-text-secondary dc:mb-4",
848
- children: "Ask me about your data and I'll create visualizations and insights."
850
+ children: e("notebook.emptyState.description")
849
851
  }),
850
- /* @__PURE__ */ X("div", {
852
+ /* @__PURE__ */ Z("div", {
851
853
  className: "dc:space-y-2 dc:text-xs text-dc-text-muted",
852
854
  children: [
853
- /* @__PURE__ */ Y("p", { children: "\"Show me employee productivity trends\"" }),
854
- /* @__PURE__ */ Y("p", { children: "\"What are the top departments by headcount?\"" }),
855
- /* @__PURE__ */ Y("p", { children: "\"Compare revenue across product categories\"" })
855
+ /* @__PURE__ */ X("p", { children: e("notebook.emptyState.example1") }),
856
+ /* @__PURE__ */ X("p", { children: e("notebook.emptyState.example2") }),
857
+ /* @__PURE__ */ X("p", { children: e("notebook.emptyState.example3") })
856
858
  ]
857
859
  })
858
860
  ]
@@ -861,9 +863,9 @@ function dr() {
861
863
  }
862
864
  //#endregion
863
865
  //#region src/client/components/AgenticNotebook/index.tsx
864
- function fr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
865
- let i = o("bookOpen"), a = o("documentText");
866
- return /* @__PURE__ */ X("button", {
866
+ function pr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
867
+ let { t: i } = H(), a = o("bookOpen"), s = o("documentText");
868
+ return /* @__PURE__ */ Z("button", {
867
869
  type: "button",
868
870
  onClick: r,
869
871
  className: "dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-r dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
@@ -871,46 +873,47 @@ function fr({ blocks: e, pulsingBlockId: t, nudge: n, onExpand: r }) {
871
873
  animation: "dc-strip-nudge 0.8s ease-in-out 2",
872
874
  width: 48
873
875
  } : { width: 48 },
874
- title: "Expand notebook",
875
- children: [/* @__PURE__ */ Y(i, { className: "dc:w-5 dc:h-5 text-dc-text-muted" }), /* @__PURE__ */ Y("div", {
876
+ title: i("notebook.collapsed.expandNotebook"),
877
+ children: [/* @__PURE__ */ X(a, { className: "dc:w-5 dc:h-5 text-dc-text-muted" }), /* @__PURE__ */ X("div", {
876
878
  className: "dc:flex dc:flex-col dc:items-center dc:gap-1.5 dc:flex-1 dc:overflow-y-auto dc:py-1",
877
879
  style: { scrollbarWidth: "none" },
878
- children: e.length === 0 ? /* @__PURE__ */ Y("span", {
880
+ children: e.length === 0 ? /* @__PURE__ */ X("span", {
879
881
  className: "dc:text-[9px] text-dc-text-disabled dc:writing-vertical-lr dc:mt-2",
880
882
  style: { writingMode: "vertical-lr" },
881
- children: "No blocks"
883
+ children: i("notebook.collapsed.noBlocks")
882
884
  }) : e.map((e) => {
883
885
  let n = e.id === t, r;
884
- return r = e.type === "portlet" ? v(e.chartType) : a, /* @__PURE__ */ Y("div", {
886
+ return r = e.type === "portlet" ? v(e.chartType) : s, /* @__PURE__ */ X("div", {
885
887
  className: "dc:w-6 dc:h-6 dc:flex dc:items-center dc:justify-center dc:rounded",
886
888
  style: n ? { animation: "dc-icon-pulse 0.6s ease-in-out 3" } : void 0,
887
- title: e.type === "portlet" ? e.title : e.title || "Markdown",
888
- children: /* @__PURE__ */ Y(r, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
889
+ title: e.type === "portlet" ? e.title : e.title || i("notebook.collapsed.markdown"),
890
+ children: /* @__PURE__ */ X(r, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
889
891
  }, e.id);
890
892
  })
891
893
  })]
892
894
  });
893
895
  }
894
- function pr({ onExpand: e }) {
895
- return /* @__PURE__ */ X("button", {
896
+ function mr({ onExpand: e }) {
897
+ let { t } = H(), n = o("sparkles");
898
+ return /* @__PURE__ */ Z("button", {
896
899
  type: "button",
897
900
  onClick: e,
898
901
  className: "dc:w-12 dc:h-full dc:flex-shrink-0 dc:flex dc:flex-col dc:items-center dc:pt-3 dc:gap-2 bg-dc-surface border-dc-border dc:border-l dc:cursor-pointer dc:hover:bg-dc-surface-hover dc:transition-colors",
899
- title: "Expand AI chat",
900
- children: [/* @__PURE__ */ Y(o("sparkles"), { className: "dc:w-5 dc:h-5 text-dc-accent" }), /* @__PURE__ */ Y("span", {
902
+ title: t("notebook.collapsed.expandChat"),
903
+ children: [/* @__PURE__ */ X(n, { className: "dc:w-5 dc:h-5 text-dc-accent" }), /* @__PURE__ */ X("span", {
901
904
  className: "dc:text-[10px] dc:font-medium text-dc-text-muted",
902
905
  style: { writingMode: "vertical-lr" },
903
- children: "AI Chat"
906
+ children: t("notebook.collapsed.aiChat")
904
907
  })]
905
908
  });
906
909
  }
907
- function mr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r, agentProviderEndpoint: i, onSave: a, onDirtyStateChange: o, onDashboardSaved: s, onScore: c, colorPalette: l, loadingComponent: u, className: d, initialPrompt: f }) {
908
- let [p, m] = q(60), h = K(null), g = K(!1), { containerRef: _, layoutMode: v } = bn(), [y, b] = q("chat"), [x, S] = q(null), [C, w] = q(!1), T = K(v), E = Z((e) => e.blocks), D = E.length, O = Z((e) => e.messages.length), k = Z((e) => e.isStreaming), A = Z((e) => e.save);
909
- W(() => {
910
+ function hr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r, agentProviderEndpoint: i, onSave: a, onDirtyStateChange: o, onDashboardSaved: s, onScore: c, colorPalette: l, loadingComponent: u, className: d, initialPrompt: f }) {
911
+ let [p, m] = J(60), h = q(null), g = q(!1), { containerRef: _, layoutMode: v } = bn(), [y, b] = J("chat"), [x, S] = J(null), [C, w] = J(!1), T = q(v), E = Q((e) => e.blocks), D = E.length, O = Q((e) => e.messages.length), k = Q((e) => e.isStreaming), A = Q((e) => e.save);
912
+ G(() => {
910
913
  T.current === "narrow" && v === "wide" && b("chat"), T.current = v;
911
914
  }, [v]);
912
- let j = K(D);
913
- W(() => {
915
+ let j = q(D);
916
+ G(() => {
914
917
  if (v === "narrow" && y === "chat" && D > j.current) {
915
918
  let e = E[E.length - 1];
916
919
  if (e) {
@@ -926,8 +929,8 @@ function mr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
926
929
  v,
927
930
  y
928
931
  ]);
929
- let M = K(!1);
930
- W(() => {
932
+ let M = q(!1);
933
+ G(() => {
931
934
  if (k) M.current = !0;
932
935
  else if (M.current && v === "narrow" && y === "chat" && D > 0) {
933
936
  M.current = !1, w(!0);
@@ -940,34 +943,34 @@ function mr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
940
943
  y,
941
944
  D
942
945
  ]);
943
- let N = U((e) => {
946
+ let N = W((e) => {
944
947
  _(e), h.current = e;
945
- }, [_]), ee = K({
948
+ }, [_]), P = q({
946
949
  blockCount: D,
947
950
  msgCount: O
948
951
  });
949
- W(() => {
950
- o?.(D !== ee.current.blockCount || O !== ee.current.msgCount);
952
+ G(() => {
953
+ o?.(D !== P.current.blockCount || O !== P.current.msgCount);
951
954
  }, [
952
955
  D,
953
956
  O,
954
957
  o
955
958
  ]);
956
- let P = K(), F = K(!1), I = K(a);
957
- I.current = a;
958
- let L = K(D > 0 || O > 0);
959
- W(() => {
960
- if ((D > 0 || O > 0) && (L.current = !0), !(!I.current || !L.current)) {
959
+ let F = q(), I = q(!1), L = q(a);
960
+ L.current = a;
961
+ let R = q(D > 0 || O > 0);
962
+ G(() => {
963
+ if ((D > 0 || O > 0) && (R.current = !0), !(!L.current || !R.current)) {
961
964
  if (k) {
962
- F.current = !0, P.current && clearTimeout(P.current);
965
+ I.current = !0, F.current && clearTimeout(F.current);
963
966
  return;
964
967
  }
965
- return P.current && clearTimeout(P.current), P.current = setTimeout(() => {
966
- F.current = !1;
968
+ return F.current && clearTimeout(F.current), F.current = setTimeout(() => {
969
+ I.current = !1;
967
970
  let e = A();
968
- I.current?.(e);
971
+ L.current?.(e);
969
972
  }, 1e3), () => {
970
- P.current && clearTimeout(P.current);
973
+ F.current && clearTimeout(F.current);
971
974
  };
972
975
  }
973
976
  }, [
@@ -975,19 +978,19 @@ function mr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
975
978
  O,
976
979
  k,
977
980
  A
978
- ]), W(() => {
979
- !k && F.current && I.current && L.current && (P.current && clearTimeout(P.current), P.current = setTimeout(() => {
980
- F.current = !1;
981
+ ]), G(() => {
982
+ !k && I.current && L.current && R.current && (F.current && clearTimeout(F.current), F.current = setTimeout(() => {
983
+ I.current = !1;
981
984
  let e = A();
982
- I.current?.(e);
985
+ L.current?.(e);
983
986
  }, 1e3));
984
987
  }, [k, A]);
985
- let R = U(() => {
986
- I.current && (P.current && clearTimeout(P.current), I.current({
988
+ let z = W(() => {
989
+ L.current && (F.current && clearTimeout(F.current), L.current({
987
990
  blocks: [],
988
991
  messages: []
989
992
  }));
990
- }, []), te = U((e) => {
993
+ }, []), ee = W((e) => {
991
994
  e.preventDefault(), g.current = !0;
992
995
  let t = (e) => {
993
996
  if (!g.current || !h.current) return;
@@ -997,58 +1000,58 @@ function mr({ agentEndpoint: e, agentApiKey: t, agentProvider: n, agentModel: r,
997
1000
  g.current = !1, document.removeEventListener("mousemove", t), document.removeEventListener("mouseup", n);
998
1001
  };
999
1002
  document.addEventListener("mousemove", t), document.addEventListener("mouseup", n);
1000
- }, []), z = /* @__PURE__ */ Y(lr, {
1003
+ }, []), B = /* @__PURE__ */ X(ur, {
1001
1004
  agentEndpoint: e,
1002
1005
  agentApiKey: t,
1003
1006
  agentProvider: n,
1004
1007
  agentModel: r,
1005
1008
  agentProviderEndpoint: i,
1006
- onClear: R,
1009
+ onClear: z,
1007
1010
  onDashboardSaved: s,
1008
1011
  onScore: c,
1009
1012
  loadingComponent: u,
1010
1013
  initialPrompt: f
1011
1014
  });
1012
- return v === "narrow" ? /* @__PURE__ */ Y("div", {
1015
+ return v === "narrow" ? /* @__PURE__ */ X("div", {
1013
1016
  ref: N,
1014
1017
  className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
1015
- children: y === "chat" ? /* @__PURE__ */ X(J, { children: [/* @__PURE__ */ Y(fr, {
1018
+ children: y === "chat" ? /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X(pr, {
1016
1019
  blocks: E,
1017
1020
  pulsingBlockId: x,
1018
1021
  nudge: C,
1019
1022
  onExpand: () => b("notebook")
1020
- }), /* @__PURE__ */ Y("div", {
1023
+ }), /* @__PURE__ */ X("div", {
1021
1024
  className: "dc:h-full dc:overflow-hidden dc:flex-1",
1022
- children: z
1023
- })] }) : /* @__PURE__ */ X(J, { children: [/* @__PURE__ */ Y("div", {
1025
+ children: B
1026
+ })] }) : /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X("div", {
1024
1027
  className: "dc:h-full dc:overflow-hidden dc:flex-1",
1025
- children: /* @__PURE__ */ Y(Qn, { colorPalette: l })
1026
- }), /* @__PURE__ */ Y(pr, { onExpand: () => b("chat") })] })
1027
- }) : /* @__PURE__ */ X("div", {
1028
+ children: /* @__PURE__ */ X($n, { colorPalette: l })
1029
+ }), /* @__PURE__ */ X(mr, { onExpand: () => b("chat") })] })
1030
+ }) : /* @__PURE__ */ Z("div", {
1028
1031
  ref: N,
1029
1032
  className: `dc:flex dc:h-full dc:w-full dc:overflow-hidden bg-dc-surface-secondary ${d || ""}`,
1030
1033
  children: [
1031
- /* @__PURE__ */ Y("div", {
1034
+ /* @__PURE__ */ X("div", {
1032
1035
  className: "dc:h-full dc:overflow-hidden",
1033
1036
  style: { width: `${p}%` },
1034
- children: /* @__PURE__ */ Y(Qn, { colorPalette: l })
1037
+ children: /* @__PURE__ */ X($n, { colorPalette: l })
1035
1038
  }),
1036
- /* @__PURE__ */ Y("div", {
1039
+ /* @__PURE__ */ X("div", {
1037
1040
  className: "dc:w-1 dc:h-full dc:cursor-col-resize dc:flex-shrink-0 dc:transition-colors bg-dc-border dc:hover:bg-dc-accent",
1038
- onMouseDown: te
1041
+ onMouseDown: ee
1039
1042
  }),
1040
- /* @__PURE__ */ Y("div", {
1043
+ /* @__PURE__ */ X("div", {
1041
1044
  className: "dc:h-full dc:overflow-hidden",
1042
1045
  style: { width: `${100 - p}%` },
1043
- children: z
1046
+ children: B
1044
1047
  })
1045
1048
  ]
1046
1049
  });
1047
1050
  }
1048
- var hr = H.memo(function({ config: e, colorPalette: t, ...n }) {
1049
- return /* @__PURE__ */ Y(An, {
1051
+ var gr = U.memo(function({ config: e, colorPalette: t, ...n }) {
1052
+ return /* @__PURE__ */ X(An, {
1050
1053
  initialConfig: e,
1051
- children: /* @__PURE__ */ Y(mr, {
1054
+ children: /* @__PURE__ */ X(hr, {
1052
1055
  ...n,
1053
1056
  colorPalette: t
1054
1057
  })
@@ -1056,27 +1059,28 @@ var hr = H.memo(function({ config: e, colorPalette: t, ...n }) {
1056
1059
  });
1057
1060
  //#endregion
1058
1061
  //#region src/client/components/AnalyticsPage.tsx
1059
- function gr() {
1060
- return /* @__PURE__ */ Y("div", { children: "Analytics Page - Coming in Phase 4" });
1062
+ function _r() {
1063
+ let { t: e } = H();
1064
+ return /* @__PURE__ */ X("div", { children: e("analyticsPage.title") });
1061
1065
  }
1062
1066
  //#endregion
1063
1067
  //#region src/client/stores/dataBrowserStore.tsx
1064
- var _r = "dc-data-browser-column-widths";
1065
- function vr(e) {
1068
+ var vr = "dc-data-browser-column-widths";
1069
+ function yr(e) {
1066
1070
  try {
1067
- let t = localStorage.getItem(_r);
1071
+ let t = localStorage.getItem(vr);
1068
1072
  return t ? JSON.parse(t)[e] ?? {} : {};
1069
1073
  } catch {
1070
1074
  return {};
1071
1075
  }
1072
1076
  }
1073
- function yr(e, t) {
1077
+ function br(e, t) {
1074
1078
  try {
1075
- let n = localStorage.getItem(_r), r = n ? JSON.parse(n) : {};
1076
- r[e] = t, localStorage.setItem(_r, JSON.stringify(r));
1079
+ let n = localStorage.getItem(vr), r = n ? JSON.parse(n) : {};
1080
+ r[e] = t, localStorage.setItem(vr, JSON.stringify(r));
1077
1081
  } catch {}
1078
1082
  }
1079
- function br(e = {}) {
1083
+ function xr(e = {}) {
1080
1084
  return i()((t, n) => ({
1081
1085
  selectedCube: e.defaultCube ?? null,
1082
1086
  visibleColumns: e.defaultColumns ?? [],
@@ -1087,7 +1091,7 @@ function br(e = {}) {
1087
1091
  filters: [],
1088
1092
  showFilterBar: !1,
1089
1093
  showColumnPicker: !1,
1090
- columnWidths: e.defaultCube ? vr(e.defaultCube) : {},
1094
+ columnWidths: e.defaultCube ? yr(e.defaultCube) : {},
1091
1095
  selectCube: (e, n) => t({
1092
1096
  selectedCube: e,
1093
1097
  visibleColumns: n,
@@ -1096,7 +1100,7 @@ function br(e = {}) {
1096
1100
  page: 0,
1097
1101
  filters: [],
1098
1102
  showFilterBar: !1,
1099
- columnWidths: vr(e)
1103
+ columnWidths: yr(e)
1100
1104
  }),
1101
1105
  setVisibleColumns: (e) => t({
1102
1106
  visibleColumns: e,
@@ -1143,39 +1147,39 @@ function br(e = {}) {
1143
1147
  ...t.columnWidths,
1144
1148
  [e]: n
1145
1149
  };
1146
- return t.selectedCube && yr(t.selectedCube, r), { columnWidths: r };
1150
+ return t.selectedCube && br(t.selectedCube, r), { columnWidths: r };
1147
1151
  }),
1148
1152
  setColumnWidths: (e) => {
1149
1153
  let r = n().selectedCube;
1150
- r && yr(r, e), t({ columnWidths: e });
1154
+ r && br(r, e), t({ columnWidths: e });
1151
1155
  }
1152
1156
  }));
1153
1157
  }
1154
- var xr = wn(null);
1155
- function Sr({ children: e, defaultPageSize: t, defaultCube: n, defaultColumns: r }) {
1156
- let i = K(null);
1157
- return i.current ||= br({
1158
+ var Sr = wn(null);
1159
+ function Cr({ children: e, defaultPageSize: t, defaultCube: n, defaultColumns: r }) {
1160
+ let i = q(null);
1161
+ return i.current ||= xr({
1158
1162
  defaultPageSize: t,
1159
1163
  defaultCube: n,
1160
1164
  defaultColumns: r
1161
- }), /* @__PURE__ */ Y(xr.Provider, {
1165
+ }), /* @__PURE__ */ X(Sr.Provider, {
1162
1166
  value: i.current,
1163
1167
  children: e
1164
1168
  });
1165
1169
  }
1166
1170
  function $(e) {
1167
- let t = Tn(xr);
1171
+ let t = Tn(Sr);
1168
1172
  if (!t) throw Error("useDataBrowserStore must be used within DataBrowserStoreProvider");
1169
1173
  return n(t, e);
1170
1174
  }
1171
1175
  //#endregion
1172
1176
  //#region src/client/hooks/useDataBrowser.ts
1173
- function Cr(e, t) {
1177
+ function wr(e, t) {
1174
1178
  if (!t) return !0;
1175
1179
  let [n, r] = e.split("."), i = t.cubes.find((e) => e.name === n);
1176
1180
  return i ? i.dimensions.some((e) => e.name === `${n}.${r}`) : !0;
1177
1181
  }
1178
- function wr(e, t) {
1182
+ function Tr(e, t) {
1179
1183
  if (!t) return "string";
1180
1184
  let [n] = e.split("."), r = t.cubes.find((e) => e.name === n);
1181
1185
  if (!r) return "string";
@@ -1184,7 +1188,7 @@ function wr(e, t) {
1184
1188
  let a = r.measures.find((t) => t.name === e);
1185
1189
  return a ? a.type : "string";
1186
1190
  }
1187
- function Tr(e, t) {
1191
+ function Er(e, t) {
1188
1192
  if (!t) return {
1189
1193
  dimensions: [],
1190
1194
  measures: []
@@ -1206,7 +1210,7 @@ function Tr(e, t) {
1206
1210
  measures: n.measures.filter((e) => r.has(e.type)).map((e) => e.name)
1207
1211
  };
1208
1212
  }
1209
- function Er() {
1213
+ function Dr() {
1210
1214
  let e = $((e) => e.selectedCube), n = $((e) => e.visibleColumns), r = $((e) => e.sortColumn), i = $((e) => e.sortDirection), a = $((e) => e.page), o = $((e) => e.pageSize), s = $((e) => e.filters), c = $((e) => e.showFilterBar), l = $((e) => e.showColumnPicker), u = $(t((e) => ({
1211
1215
  selectCube: e.selectCube,
1212
1216
  setVisibleColumns: e.setVisibleColumns,
@@ -1218,15 +1222,15 @@ function Er() {
1218
1222
  setFilters: e.setFilters,
1219
1223
  toggleFilterBar: e.toggleFilterBar,
1220
1224
  setShowColumnPicker: e.setShowColumnPicker
1221
- }))), { meta: d, getFieldLabel: f } = Oe(), p = G(() => {
1225
+ }))), { meta: d, getFieldLabel: f } = De(), p = K(() => {
1222
1226
  if (!d || !e) return null;
1223
1227
  let t = d.cubes.find((t) => t.name === e);
1224
1228
  if (!t) return null;
1225
1229
  let n = t.dimensions.find((e) => e.primaryKey);
1226
1230
  return n ? n.name : t.dimensions.length > 0 ? t.dimensions[0].name : null;
1227
- }, [d, e]), m = r ?? p, h = r ? i : "asc", g = G(() => {
1231
+ }, [d, e]), m = r ?? p, h = r ? i : "asc", g = K(() => {
1228
1232
  if (!e || n.length === 0) return null;
1229
- let t = n.filter((e) => Cr(e, d)), r = n.filter((e) => !Cr(e, d));
1233
+ let t = n.filter((e) => wr(e, d)), r = n.filter((e) => !wr(e, d));
1230
1234
  if (t.length === 0) return null;
1231
1235
  let i = {
1232
1236
  dimensions: t,
@@ -1244,7 +1248,7 @@ function Er() {
1244
1248
  a,
1245
1249
  o,
1246
1250
  d
1247
- ]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } = R(g, {
1251
+ ]), { rawData: _, isLoading: v, isFetching: y, isDebouncing: b, error: x, refetch: S } = z(g, {
1248
1252
  skip: !g,
1249
1253
  debounceMs: 400,
1250
1254
  keepPreviousData: !0,
@@ -1280,119 +1284,120 @@ function Er() {
1280
1284
  }
1281
1285
  //#endregion
1282
1286
  //#region src/client/components/DataBrowser/DataBrowserSidebar.tsx
1283
- var Dr = o("search"), Or = o("cube");
1284
- function kr({ cubes: e, selectedCube: t, onSelectCube: n }) {
1285
- let [r, i] = q(""), a = G(() => {
1287
+ var Or = o("search"), kr = o("cube");
1288
+ function Ar({ cubes: e, selectedCube: t, onSelectCube: n }) {
1289
+ let { t: r } = H(), [i, a] = J(""), o = K(() => {
1286
1290
  let t = [...e].sort((e, t) => (e.title || e.name).localeCompare(t.title || t.name));
1287
- if (!r) return t;
1288
- let n = r.toLowerCase();
1291
+ if (!i) return t;
1292
+ let n = i.toLowerCase();
1289
1293
  return t.filter((e) => e.name.toLowerCase().includes(n) || e.title.toLowerCase().includes(n));
1290
- }, [e, r]);
1291
- return /* @__PURE__ */ X("div", {
1294
+ }, [e, i]);
1295
+ return /* @__PURE__ */ Z("div", {
1292
1296
  className: "dc:flex dc:flex-col dc:h-full dc:border-r border-dc-border bg-dc-surface dc:w-60 dc:shrink-0",
1293
- children: [/* @__PURE__ */ X("div", {
1297
+ children: [/* @__PURE__ */ Z("div", {
1294
1298
  className: "dc:px-3 dc:py-3 dc:border-b border-dc-border",
1295
- children: [/* @__PURE__ */ Y("h2", {
1299
+ children: [/* @__PURE__ */ X("h2", {
1296
1300
  className: "dc:text-sm dc:font-semibold text-dc-text dc:mb-2",
1297
- children: "Cubes"
1298
- }), /* @__PURE__ */ X("div", {
1301
+ children: r("dataBrowser.sidebar.cubes")
1302
+ }), /* @__PURE__ */ Z("div", {
1299
1303
  className: "dc:relative",
1300
- children: [/* @__PURE__ */ Y(Dr, { className: "dc:absolute dc:left-2 dc:top-1/2 dc:-translate-y-1/2 dc:w-3.5 dc:h-3.5 text-dc-text-muted" }), /* @__PURE__ */ Y("input", {
1304
+ children: [/* @__PURE__ */ X(Or, { className: "dc:absolute dc:left-2 dc:top-1/2 dc:-translate-y-1/2 dc:w-3.5 dc:h-3.5 text-dc-text-muted" }), /* @__PURE__ */ X("input", {
1301
1305
  type: "text",
1302
- value: r,
1303
- onChange: (e) => i(e.target.value),
1304
- placeholder: "Search...",
1306
+ value: i,
1307
+ onChange: (e) => a(e.target.value),
1308
+ placeholder: r("dataBrowser.sidebar.searchPlaceholder"),
1305
1309
  className: "dc:w-full dc:pl-7 dc:pr-2 dc:py-1.5 dc:text-xs dc:rounded border-dc-border dc:border bg-dc-surface text-dc-text dc:outline-none dc:focus:ring-1 focus:ring-dc-accent"
1306
1310
  })]
1307
1311
  })]
1308
- }), /* @__PURE__ */ X("div", {
1312
+ }), /* @__PURE__ */ Z("div", {
1309
1313
  className: "dc:flex-1 dc:overflow-y-auto dc:py-1",
1310
- children: [a.map((e) => /* @__PURE__ */ X("button", {
1314
+ children: [o.map((e) => /* @__PURE__ */ Z("button", {
1311
1315
  onClick: () => n(e.name),
1312
1316
  className: `dc:flex dc:items-center dc:gap-2 dc:w-full dc:px-3 dc:py-1.5 dc:text-left dc:text-sm dc:transition-colors ${t === e.name ? "bg-dc-accent-bg text-dc-accent dc:font-medium" : "text-dc-text dc:hover:bg-dc-surface-hover"}`,
1313
- children: [/* @__PURE__ */ Y(Or, { className: "dc:w-4 dc:h-4 dc:shrink-0 text-dc-text-muted" }), /* @__PURE__ */ Y("span", {
1317
+ children: [/* @__PURE__ */ X(kr, { className: "dc:w-4 dc:h-4 dc:shrink-0 text-dc-text-muted" }), /* @__PURE__ */ X("span", {
1314
1318
  className: "dc:truncate",
1315
1319
  children: e.title || e.name
1316
1320
  })]
1317
- }, e.name)), a.length === 0 && /* @__PURE__ */ Y("div", {
1321
+ }, e.name)), o.length === 0 && /* @__PURE__ */ X("div", {
1318
1322
  className: "dc:px-3 dc:py-4 dc:text-xs text-dc-text-muted dc:text-center",
1319
- children: "No cubes found"
1323
+ children: r("dataBrowser.sidebar.noCubes")
1320
1324
  })]
1321
1325
  })]
1322
1326
  });
1323
1327
  }
1324
1328
  //#endregion
1325
1329
  //#region src/client/components/DataBrowser/DataBrowserToolbar.tsx
1326
- var Ar = o("filter"), jr = o("settings"), Mr = o("chevronLeft"), Nr = o("chevronRight"), Pr = o("refresh");
1327
- function Fr({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleColumnPicker: r, page: i, pageSize: a, rowCount: o, hasNextPage: s, hasPrevPage: c, onPageChange: l, onPageSizeChange: u, isFetching: d, onRefresh: f }) {
1328
- return /* @__PURE__ */ X("div", {
1330
+ var jr = o("filter"), Mr = o("settings"), Nr = o("chevronLeft"), Pr = o("chevronRight"), Fr = o("refresh");
1331
+ function Ir({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleColumnPicker: r, page: i, pageSize: a, rowCount: o, hasNextPage: s, hasPrevPage: c, onPageChange: l, onPageSizeChange: u, isFetching: d, onRefresh: f }) {
1332
+ let { t: p } = H();
1333
+ return /* @__PURE__ */ Z("div", {
1329
1334
  className: "dc:flex dc:items-center dc:gap-2 dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface-secondary",
1330
1335
  children: [
1331
- /* @__PURE__ */ X("button", {
1336
+ /* @__PURE__ */ Z("button", {
1332
1337
  onClick: n,
1333
1338
  className: `dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border dc:transition-colors ${e ? "border-dc-accent bg-dc-accent-bg text-dc-accent" : "border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover"}`,
1334
1339
  children: [
1335
- /* @__PURE__ */ Y(Ar, { className: "dc:w-3.5 dc:h-3.5" }),
1336
- "Filters",
1337
- t > 0 && /* @__PURE__ */ Y("span", {
1340
+ /* @__PURE__ */ X(jr, { className: "dc:w-3.5 dc:h-3.5" }),
1341
+ p("dataBrowser.toolbar.filters"),
1342
+ t > 0 && /* @__PURE__ */ X("span", {
1338
1343
  className: "dc:inline-flex dc:items-center dc:justify-center dc:w-4 dc:h-4 dc:text-[10px] dc:font-bold dc:rounded-full bg-dc-accent text-dc-surface",
1339
1344
  children: t
1340
1345
  })
1341
1346
  ]
1342
1347
  }),
1343
- /* @__PURE__ */ X("button", {
1348
+ /* @__PURE__ */ Z("button", {
1344
1349
  onClick: r,
1345
1350
  className: "dc:flex dc:items-center dc:gap-1.5 dc:px-2.5 dc:py-1.5 dc:text-xs dc:font-medium dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:hover:bg-dc-surface-hover dc:transition-colors",
1346
- children: [/* @__PURE__ */ Y(jr, { className: "dc:w-3.5 dc:h-3.5" }), "Columns"]
1351
+ children: [/* @__PURE__ */ X(Mr, { className: "dc:w-3.5 dc:h-3.5" }), p("dataBrowser.toolbar.columns")]
1347
1352
  }),
1348
- /* @__PURE__ */ Y("div", { className: "dc:flex-1" }),
1353
+ /* @__PURE__ */ X("div", { className: "dc:flex-1" }),
1349
1354
  /* @__PURE__ */ X("span", {
1350
1355
  className: "dc:text-xs text-dc-text-muted",
1351
- children: [o, " rows"]
1356
+ children: p("dataBrowser.toolbar.rows", { count: o })
1352
1357
  }),
1353
- /* @__PURE__ */ Y("button", {
1358
+ /* @__PURE__ */ X("button", {
1354
1359
  onClick: f,
1355
1360
  className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:transition-colors",
1356
1361
  title: "Refresh",
1357
- children: /* @__PURE__ */ Y(Pr, { className: `dc:w-3.5 dc:h-3.5 text-dc-text-muted ${d ? "dc:animate-spin" : ""}` })
1362
+ children: /* @__PURE__ */ X(Fr, { className: `dc:w-3.5 dc:h-3.5 text-dc-text-muted ${d ? "dc:animate-spin" : ""}` })
1358
1363
  }),
1359
- /* @__PURE__ */ X("select", {
1364
+ /* @__PURE__ */ Z("select", {
1360
1365
  value: a,
1361
1366
  onChange: (e) => u(Number(e.target.value)),
1362
1367
  className: "dc:text-xs dc:px-1.5 dc:py-1 dc:rounded dc:border border-dc-border bg-dc-surface text-dc-text dc:outline-none",
1363
1368
  children: [
1364
- /* @__PURE__ */ Y("option", {
1369
+ /* @__PURE__ */ X("option", {
1365
1370
  value: 20,
1366
1371
  children: "20"
1367
1372
  }),
1368
- /* @__PURE__ */ Y("option", {
1373
+ /* @__PURE__ */ X("option", {
1369
1374
  value: 50,
1370
1375
  children: "50"
1371
1376
  }),
1372
- /* @__PURE__ */ Y("option", {
1377
+ /* @__PURE__ */ X("option", {
1373
1378
  value: 100,
1374
1379
  children: "100"
1375
1380
  })
1376
1381
  ]
1377
1382
  }),
1378
- /* @__PURE__ */ X("div", {
1383
+ /* @__PURE__ */ Z("div", {
1379
1384
  className: "dc:flex dc:items-center dc:gap-1",
1380
1385
  children: [
1381
- /* @__PURE__ */ Y("button", {
1386
+ /* @__PURE__ */ X("button", {
1382
1387
  onClick: () => l(i - 1),
1383
1388
  disabled: !c,
1384
1389
  className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
1385
- children: /* @__PURE__ */ Y(Mr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
1390
+ children: /* @__PURE__ */ X(Nr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
1386
1391
  }),
1387
- /* @__PURE__ */ Y("span", {
1392
+ /* @__PURE__ */ X("span", {
1388
1393
  className: "dc:text-xs dc:font-medium text-dc-text dc:min-w-[2rem] dc:text-center",
1389
1394
  children: i + 1
1390
1395
  }),
1391
- /* @__PURE__ */ Y("button", {
1396
+ /* @__PURE__ */ X("button", {
1392
1397
  onClick: () => l(i + 1),
1393
1398
  disabled: !s,
1394
1399
  className: "dc:p-1 dc:rounded dc:hover:bg-dc-surface-hover dc:disabled:opacity-30 dc:disabled:cursor-not-allowed dc:transition-colors",
1395
- children: /* @__PURE__ */ Y(Nr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
1400
+ children: /* @__PURE__ */ X(Pr, { className: "dc:w-4 dc:h-4 text-dc-text-muted" })
1396
1401
  })
1397
1402
  ]
1398
1403
  })
@@ -1401,9 +1406,9 @@ function Fr({ showFilterBar: e, filterCount: t, onToggleFilterBar: n, onToggleCo
1401
1406
  }
1402
1407
  //#endregion
1403
1408
  //#region src/client/components/DataBrowser/DataBrowserTable.tsx
1404
- var Ir = o("chevronUp"), Lr = o("chevronDown");
1405
- function Rr(e, t) {
1406
- let n = wr(e, t);
1409
+ var Lr = o("chevronUp"), Rr = o("chevronDown");
1410
+ function zr(e, t) {
1411
+ let n = Tr(e, t);
1407
1412
  return {
1408
1413
  string: "text",
1409
1414
  number: "num",
@@ -1415,97 +1420,97 @@ function Rr(e, t) {
1415
1420
  max: "num"
1416
1421
  }[n] || n;
1417
1422
  }
1418
- function zr(e, t) {
1419
- return Rr(e, t) === "num";
1423
+ function Br(e, t) {
1424
+ return zr(e, t) === "num";
1420
1425
  }
1421
- function Br(e) {
1426
+ function Vr(e) {
1422
1427
  return e == null ? "" : typeof e == "number" ? e.toLocaleString() : typeof e == "boolean" ? e ? "true" : "false" : e instanceof Date ? e.toISOString() : String(e);
1423
1428
  }
1424
- var Vr = 60, Hr = 150, Ur = H.memo(function({ data: e, columns: t, sortColumn: n, sortDirection: r, onSort: i, getFieldLabel: a, meta: o, isLoading: s, isFetching: c, selectedCube: l, loadingComponent: u }) {
1425
- let d = $((e) => e.columnWidths), f = $((e) => e.setColumnWidth), p = $((e) => e.setColumnWidths), m = K(null), h = K(!1), g = U((e, n) => {
1429
+ var Hr = 60, Ur = 150, Wr = U.memo(function({ data: e, columns: t, sortColumn: n, sortDirection: r, onSort: i, getFieldLabel: a, meta: o, isLoading: s, isFetching: c, selectedCube: l, loadingComponent: u }) {
1430
+ let { t: d } = H(), f = $((e) => e.columnWidths), p = $((e) => e.setColumnWidth), m = $((e) => e.setColumnWidths), h = q(null), g = q(!1), _ = W((e, n) => {
1426
1431
  e.preventDefault(), e.stopPropagation();
1427
1432
  let r = e.clientX;
1428
- h.current = !1;
1429
- let i = m.current;
1433
+ g.current = !1;
1434
+ let i = h.current;
1430
1435
  if (i) {
1431
1436
  let e = i.querySelectorAll("thead th"), n = {};
1432
1437
  e.forEach((e, r) => {
1433
1438
  let i = t[r];
1434
1439
  i && (n[i] = e.getBoundingClientRect().width);
1435
- }), p(n);
1440
+ }), m(n);
1436
1441
  }
1437
- let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width : Hr, s = (e) => {
1442
+ let a = e.target.closest("th"), o = a ? a.getBoundingClientRect().width : Ur, s = (e) => {
1438
1443
  let t = e.clientX - r;
1439
- Math.abs(t) > 2 && (h.current = !0), f(n, Math.max(Vr, o + t));
1444
+ Math.abs(t) > 2 && (g.current = !0), p(n, Math.max(Hr, o + t));
1440
1445
  }, c = () => {
1441
1446
  document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", c), document.body.style.cursor = "", document.body.style.userSelect = "", requestAnimationFrame(() => {
1442
- h.current = !1;
1447
+ g.current = !1;
1443
1448
  });
1444
1449
  };
1445
1450
  document.addEventListener("mousemove", s), document.addEventListener("mouseup", c), document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
1446
1451
  }, [
1447
1452
  t,
1448
- f,
1449
- p
1450
- ]), _ = U((e) => {
1451
- h.current || i(e);
1452
- }, [i]), v = Object.keys(d).length > 0 ? t.reduce((e, t) => e + (d[t] ?? Hr), 0) : void 0;
1453
- return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */ Y("div", {
1453
+ p,
1454
+ m
1455
+ ]), v = W((e) => {
1456
+ g.current || i(e);
1457
+ }, [i]), y = Object.keys(f).length > 0 ? t.reduce((e, t) => e + (f[t] ?? Ur), 0) : void 0;
1458
+ return l ? e ? e.length === 0 && !s && !c ? /* @__PURE__ */ X("div", {
1454
1459
  className: "dc:flex dc:items-center dc:justify-center dc:h-full",
1455
- children: /* @__PURE__ */ X("div", {
1460
+ children: /* @__PURE__ */ Z("div", {
1456
1461
  className: "dc:text-center text-dc-text-muted",
1457
- children: [/* @__PURE__ */ Y("div", {
1462
+ children: [/* @__PURE__ */ X("div", {
1458
1463
  className: "dc:text-sm dc:font-semibold dc:mb-1",
1459
- children: "No data"
1460
- }), /* @__PURE__ */ Y("div", {
1464
+ children: d("dataBrowser.noData")
1465
+ }), /* @__PURE__ */ X("div", {
1461
1466
  className: "dc:text-xs text-dc-text-secondary",
1462
- children: "No rows returned for this query"
1467
+ children: d("dataBrowser.noRows")
1463
1468
  })]
1464
1469
  })
1465
- }) : /* @__PURE__ */ X("div", {
1470
+ }) : /* @__PURE__ */ Z("div", {
1466
1471
  className: "dc:relative dc:flex-1 dc:overflow-auto",
1467
- children: [c && /* @__PURE__ */ Y("div", { className: "dc:absolute dc:inset-0 bg-dc-surface dc:opacity-40 dc:z-10 dc:pointer-events-none" }), /* @__PURE__ */ X("table", {
1468
- ref: m,
1472
+ children: [c && /* @__PURE__ */ X("div", { className: "dc:absolute dc:inset-0 bg-dc-surface dc:opacity-40 dc:z-10 dc:pointer-events-none" }), /* @__PURE__ */ Z("table", {
1473
+ ref: h,
1469
1474
  className: "dc:border-collapse",
1470
1475
  style: {
1471
1476
  tableLayout: "fixed",
1472
- width: v,
1477
+ width: y,
1473
1478
  minWidth: "100%"
1474
1479
  },
1475
1480
  children: [
1476
- /* @__PURE__ */ Y("colgroup", { children: t.map((e) => /* @__PURE__ */ Y("col", { style: { width: d[e] ?? Hr } }, e)) }),
1477
- /* @__PURE__ */ Y("thead", {
1481
+ /* @__PURE__ */ X("colgroup", { children: t.map((e) => /* @__PURE__ */ X("col", { style: { width: f[e] ?? Ur } }, e)) }),
1482
+ /* @__PURE__ */ X("thead", {
1478
1483
  className: "dc:sticky dc:top-0 dc:z-20",
1479
1484
  style: { backgroundColor: "var(--dc-surface-secondary)" },
1480
- children: /* @__PURE__ */ Y("tr", { children: t.map((e, i) => {
1481
- let s = n === e, c = a(e), l = Rr(e, o), u = i === t.length - 1, d = zr(e, o);
1482
- return /* @__PURE__ */ X("th", {
1483
- onClick: () => _(e),
1485
+ children: /* @__PURE__ */ X("tr", { children: t.map((e, i) => {
1486
+ let s = n === e, c = a(e), l = zr(e, o), u = i === t.length - 1, d = Br(e, o);
1487
+ return /* @__PURE__ */ Z("th", {
1488
+ onClick: () => v(e),
1484
1489
  className: `dc:relative dc:px-3 dc:py-2 dc:text-xs dc:font-normal dc:cursor-pointer dc:select-none dc:border-b border-dc-border dc:transition-colors${u ? "" : " dc:border-r"}${d ? " dc:text-right" : " dc:text-left"}`,
1485
1490
  style: { color: "var(--dc-text-muted)" },
1486
- children: [/* @__PURE__ */ X("div", {
1491
+ children: [/* @__PURE__ */ Z("div", {
1487
1492
  className: `dc:flex dc:items-center dc:gap-1.5 dc:overflow-hidden${d ? " dc:justify-end" : ""}`,
1488
1493
  children: [
1489
- /* @__PURE__ */ Y("span", {
1494
+ /* @__PURE__ */ X("span", {
1490
1495
  className: "dc:font-medium dc:truncate",
1491
1496
  style: { color: "var(--dc-text)" },
1492
1497
  children: c
1493
1498
  }),
1494
- /* @__PURE__ */ Y("span", {
1499
+ /* @__PURE__ */ X("span", {
1495
1500
  className: "dc:text-[10px] dc:opacity-50 dc:shrink-0",
1496
1501
  children: l
1497
1502
  }),
1498
- s && Y(r === "asc" ? Ir : Lr, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" })
1503
+ s && X(r === "asc" ? Lr : Rr, { className: "dc:w-3 dc:h-3 text-dc-accent dc:shrink-0" })
1499
1504
  ]
1500
- }), /* @__PURE__ */ Y("div", {
1501
- onMouseDown: (t) => g(t, e),
1505
+ }), /* @__PURE__ */ X("div", {
1506
+ onMouseDown: (t) => _(t, e),
1502
1507
  className: "dc:absolute dc:top-0 dc:right-0 dc:w-1.5 dc:h-full dc:cursor-col-resize dc:hover:bg-dc-accent dc:opacity-0 dc:hover:opacity-100 dc:transition-opacity",
1503
1508
  style: { zIndex: 30 }
1504
1509
  })]
1505
1510
  }, e);
1506
1511
  }) })
1507
1512
  }),
1508
- /* @__PURE__ */ Y("tbody", { children: e.map((e, n) => /* @__PURE__ */ Y("tr", {
1513
+ /* @__PURE__ */ X("tbody", { children: e.map((e, n) => /* @__PURE__ */ X("tr", {
1509
1514
  className: "dc:border-b border-dc-border",
1510
1515
  style: { transition: "background-color 0.1s" },
1511
1516
  onMouseEnter: (e) => {
@@ -1515,73 +1520,73 @@ var Vr = 60, Hr = 150, Ur = H.memo(function({ data: e, columns: t, sortColumn: n
1515
1520
  e.currentTarget.style.backgroundColor = "";
1516
1521
  },
1517
1522
  children: t.map((n, r) => {
1518
- let i = r === t.length - 1, a = zr(n, o);
1519
- return /* @__PURE__ */ Y("td", {
1523
+ let i = r === t.length - 1, a = Br(n, o);
1524
+ return /* @__PURE__ */ X("td", {
1520
1525
  className: `dc:px-3 dc:py-1.5 dc:text-sm dc:overflow-hidden dc:text-ellipsis dc:whitespace-nowrap${i ? "" : " dc:border-r border-dc-border"}${a ? " dc:text-right dc:tabular-nums" : ""}`,
1521
1526
  style: { color: "var(--dc-text)" },
1522
- children: Br(e[n])
1527
+ children: Vr(e[n])
1523
1528
  }, n);
1524
1529
  })
1525
1530
  }, n)) })
1526
1531
  ]
1527
1532
  })]
1528
- }) : /* @__PURE__ */ Y("div", {
1533
+ }) : /* @__PURE__ */ X("div", {
1529
1534
  className: "dc:flex dc:flex-col dc:items-center dc:justify-center dc:h-full dc:gap-3",
1530
- children: u ?? /* @__PURE__ */ X(J, { children: [/* @__PURE__ */ Y(V, { size: "md" }), /* @__PURE__ */ Y("div", {
1535
+ children: u ?? /* @__PURE__ */ Z(Y, { children: [/* @__PURE__ */ X(_t, { size: "md" }), /* @__PURE__ */ X("div", {
1531
1536
  className: "dc:text-sm text-dc-text-muted",
1532
- children: "Loading data..."
1537
+ children: d("dataBrowser.loadingData")
1533
1538
  })] })
1534
- }) : /* @__PURE__ */ Y("div", {
1539
+ }) : /* @__PURE__ */ X("div", {
1535
1540
  className: "dc:flex dc:items-center dc:justify-center dc:h-full",
1536
- children: /* @__PURE__ */ X("div", {
1541
+ children: /* @__PURE__ */ Z("div", {
1537
1542
  className: "dc:text-center text-dc-text-muted",
1538
- children: [/* @__PURE__ */ Y("div", {
1543
+ children: [/* @__PURE__ */ X("div", {
1539
1544
  className: "dc:text-base dc:font-semibold dc:mb-1",
1540
- children: "Select a cube"
1541
- }), /* @__PURE__ */ Y("div", {
1545
+ children: d("dataBrowser.selectCube")
1546
+ }), /* @__PURE__ */ X("div", {
1542
1547
  className: "dc:text-sm text-dc-text-secondary",
1543
- children: "Choose a cube from the sidebar to browse its data"
1548
+ children: d("dataBrowser.selectCubeHint")
1544
1549
  })]
1545
1550
  })
1546
1551
  });
1547
1552
  });
1548
1553
  //#endregion
1549
1554
  //#region src/client/components/DataBrowser/index.tsx
1550
- function Wr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n }) {
1551
- let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } = Er(), k = G(() => v ? v.cubes.map((e) => ({
1555
+ function Gr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n }) {
1556
+ let { selectedCube: r, visibleColumns: i, sortColumn: a, sortDirection: o, page: s, pageSize: c, filters: l, showFilterBar: u, showColumnPicker: d, rawData: f, isLoading: p, isFetching: m, rowCount: h, hasNextPage: g, hasPrevPage: _, meta: v, getFieldLabel: y, selectCube: b, setSort: x, setPage: S, setPageSize: C, setFilters: w, toggleFilterBar: T, setShowColumnPicker: E, toggleColumn: D, refetch: O } = Dr(), k = K(() => v ? v.cubes.map((e) => ({
1552
1557
  name: e.name,
1553
1558
  title: e.title || e.name
1554
- })) : [], [v]), A = U((e) => {
1555
- let { dimensions: t } = Tr(e, v);
1559
+ })) : [], [v]), A = W((e) => {
1560
+ let { dimensions: t } = Er(e, v);
1556
1561
  b(e, t);
1557
- }, [v, b]), j = G(() => {
1562
+ }, [v, b]), j = K(() => {
1558
1563
  function e(t) {
1559
1564
  return t.reduce((t, n) => "member" in n ? t + 1 : "type" in n && "filters" in n ? t + e(n.filters) : t, 0);
1560
1565
  }
1561
1566
  return e(l);
1562
- }, [l]), M = G(() => {
1567
+ }, [l]), M = K(() => {
1563
1568
  if (!v) return null;
1564
1569
  if (r) {
1565
1570
  let e = v.cubes.find((e) => e.name === r);
1566
1571
  return e ? { cubes: [e] } : null;
1567
1572
  }
1568
1573
  return v;
1569
- }, [v, r]), N = U((e, t, n, r) => {
1574
+ }, [v, r]), N = W((e, t, n, r) => {
1570
1575
  D(e.name);
1571
1576
  }, [D]);
1572
- return /* @__PURE__ */ X("div", {
1577
+ return /* @__PURE__ */ Z("div", {
1573
1578
  className: `dc:flex dc:border border-dc-border dc:rounded-lg dc:overflow-hidden bg-dc-surface ${e}`,
1574
1579
  style: { height: t },
1575
1580
  children: [
1576
- /* @__PURE__ */ Y(kr, {
1581
+ /* @__PURE__ */ X(Ar, {
1577
1582
  cubes: k,
1578
1583
  selectedCube: r,
1579
1584
  onSelectCube: A
1580
1585
  }),
1581
- /* @__PURE__ */ X("div", {
1586
+ /* @__PURE__ */ Z("div", {
1582
1587
  className: "dc:flex dc:flex-col dc:flex-1 dc:min-w-0",
1583
1588
  children: [
1584
- r && /* @__PURE__ */ Y(Fr, {
1589
+ r && /* @__PURE__ */ X(Ir, {
1585
1590
  showFilterBar: u,
1586
1591
  filterCount: j,
1587
1592
  onToggleFilterBar: T,
@@ -1596,15 +1601,15 @@ function Wr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
1596
1601
  isFetching: m,
1597
1602
  onRefresh: () => O()
1598
1603
  }),
1599
- r && u && /* @__PURE__ */ Y("div", {
1604
+ r && u && /* @__PURE__ */ X("div", {
1600
1605
  className: "dc:px-3 dc:py-2 dc:border-b border-dc-border bg-dc-surface",
1601
- children: /* @__PURE__ */ Y(Wt, {
1606
+ children: /* @__PURE__ */ X(Wt, {
1602
1607
  filters: l,
1603
1608
  schema: M,
1604
1609
  onFiltersChange: w
1605
1610
  })
1606
1611
  }),
1607
- /* @__PURE__ */ Y(Ur, {
1612
+ /* @__PURE__ */ X(Wr, {
1608
1613
  data: f,
1609
1614
  columns: i,
1610
1615
  sortColumn: a,
@@ -1619,7 +1624,7 @@ function Wr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
1619
1624
  })
1620
1625
  ]
1621
1626
  }),
1622
- d && M && /* @__PURE__ */ Y(Lt, {
1627
+ d && M && /* @__PURE__ */ X(Lt, {
1623
1628
  isOpen: d,
1624
1629
  onClose: () => E(!1),
1625
1630
  onSelect: N,
@@ -1630,11 +1635,11 @@ function Wr({ className: e = "", maxHeight: t = "100vh", loadingComponent: n })
1630
1635
  ]
1631
1636
  });
1632
1637
  }
1633
- function Gr({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight: r, loadingComponent: i }) {
1634
- return /* @__PURE__ */ Y(Sr, {
1638
+ function Kr({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight: r, loadingComponent: i }) {
1639
+ return /* @__PURE__ */ X(Cr, {
1635
1640
  defaultPageSize: n,
1636
1641
  defaultCube: t,
1637
- children: /* @__PURE__ */ Y(Wr, {
1642
+ children: /* @__PURE__ */ X(Gr, {
1638
1643
  className: e,
1639
1644
  maxHeight: r,
1640
1645
  loadingComponent: i
@@ -1643,13 +1648,13 @@ function Gr({ className: e, defaultCube: t, defaultPageSize: n = 20, maxHeight:
1643
1648
  }
1644
1649
  //#endregion
1645
1650
  //#region src/client/components/DashboardThumbnailPlaceholder.tsx
1646
- var Kr = o("segment");
1647
- function qr({ className: e = "" }) {
1648
- return /* @__PURE__ */ Y("div", {
1651
+ var qr = o("segment");
1652
+ function Jr({ className: e = "" }) {
1653
+ return /* @__PURE__ */ X("div", {
1649
1654
  className: `dc:flex dc:items-center dc:justify-center bg-dc-bg-secondary ${e}`,
1650
- children: /* @__PURE__ */ X("div", {
1655
+ children: /* @__PURE__ */ Z("div", {
1651
1656
  className: "dc:text-center",
1652
- children: [/* @__PURE__ */ Y(Kr, { className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50" }), /* @__PURE__ */ Y("span", {
1657
+ children: [/* @__PURE__ */ X(qr, { className: "dc:w-8 dc:h-8 dc:mx-auto dc:mb-2 text-dc-text-muted dc:opacity-50" }), /* @__PURE__ */ X("span", {
1653
1658
  className: "dc:text-xs text-dc-text-muted",
1654
1659
  children: "No preview"
1655
1660
  })]
@@ -1657,6 +1662,6 @@ function qr({ className: e = "" }) {
1657
1662
  });
1658
1663
  }
1659
1664
  //#endregion
1660
- export { hr as AgenticNotebook, dt as AnalysisBuilder, ut as AnalyticsDashboard, gr as AnalyticsPage, Ve as AnalyticsPortlet, We as ChartErrorBoundary, It as ConfirmModal, b as CubeClient, ee as CubeProvider, x as DEFAULT_ICONS, ft as DashboardEditModal, nt as DashboardGrid, Ze as DashboardStoreProvider, qr as DashboardThumbnailPlaceholder, Gr as DataBrowser, rt as DrillBreadcrumb, Ue as DrillMenu, qt as ExecutionPlanPanel, Ut as ExplainAIPanel, F as LazyChart, V as LoadingIndicator, Ft as Modal, An as NotebookStoreProvider, ct as PortletAnalysisModal, st as PortletContainer, De as ScrollContainerProvider, Ae as THEME_PRESETS, Fe as applyTheme, Se as buildFunnelConfigFromQueries, ye as buildServerFunnelQuery, d as captureThumbnail, N as chartPluginRegistry, cn as compressAndEncode, a as createCubeClient, Cn as createDashboardLayout, at as createDashboardStore, jt as createDefaultConfig, xt as createDefaultFlowConfig, bt as createDefaultFunnelConfig, Dt as createDefaultQueryConfig, Pt as createDefaultRetentionConfig, vt as createDefaultWorkspace, pe as createExplainQueryKey, re as createFlowQueryKey, oe as createFunnelQueryKey, On as createNotebookStore, en as decodeAndDecompress, nn as detectAsymmetricDateRanges, Xt as detectMeasureCollisions, f as exportPortletToXlsx, Sn as formatChartData, _e as formatDuration, le as generateQueryLabel, tn as generateShareUrl, mn as getAvailableBindingKeyDimensions, S as getAvailableChartTypes, xe as getBindingKeyField, ln as getBindingKeyLabel, v as getChartTypeIcon, te as getCombinedFields, Ce as getCubeNameFromQuery, M as getFieldTypeIcon, o as getIcon, j as getIconData, g as getIconRegistry, _ as getIconsByCategory, y as getMeasureTypeIcon, z as getQueryIndices, se as getQueryLabels, Re as getTheme, je as getThemeVariable, s as getUnavailableChartTypes, hn as getValidationSummary, zt as highlightCodeBlocks, P as isChartTypeAvailable, Me as isDarkMode, w as isExportAvailable, Nt as isFlowConfig, Tt as isFunnelConfig, ve as isFunnelData, fn as isMinimumFunnelConfigValid, Et as isMultiQuery, Ge as isMultiQueryConfig, ae as isMultiQueryData, vn as isMultiQueryValid, Ot as isQueryConfig, St as isRetentionConfig, we as isSankeyData, Te as isServerFlowQuery, it as isServerFunnelQuery, dn as isShareableSize, Ct as isSingleQuery, m as isThumbnailCaptureAvailable, wt as isValidAnalysisConfig, kt as isValidAnalysisWorkspace, C as isValidChartType, ne as mergeQueryResults, B as mergeResultsByKey, I as mergeResultsConcat, yt as migrateConfig, Rt as migrateLegacyPortlet, rn as parseShareUrl, l as preloadChart, c as preloadCharts, u as registerIcons, p as resetIcons, Le as resetTheme, pt as selectAllActions, Rn as selectBlockActions, jn as selectBlocks, gn as selectBreakdowns, Yt as selectChartConfig, Ln as selectChatActions, In as selectChatState, Ht as selectCurrentState, Qe as selectDebugData, $e as selectDebugDataActions, lt as selectEditModeActions, ot as selectEditModeState, Vt as selectFilters, Kt as selectFunnelState, Fn as selectInputValue, Nn as selectIsStreaming, tt as selectLayoutActions, et as selectLayoutState, Mn as selectMessages, sn as selectMetrics, Je as selectModalActions, mt as selectModalState, Bt as selectMultiQueryState, _t as selectPortletDebugData, Pn as selectSessionId, Xe as selectThumbnailDirty, on as selectUIState, h as setIcon, Ie as setTheme, Pe as setThemeVariable, be as transformServerFunnelResult, er as useAgentChat, $t as useAnalysisBuilder, Gt as useAnalysisBuilderStore, k as useCubeApi, A as useCubeContext, T as useCubeFeatures, ke as useCubeFieldLabel, R as useCubeLoadQuery, R as useCubeQuery, Oe as useCubeMeta, D as useCubeMetaQuery, Ye as useDashboard, gt as useDashboardStore, Ke as useDashboardStoreApi, Be as useDashboardStoreOptional, Er as useDataBrowser, ze as useDrillInteraction, fe as useDryRunQueries, de as useDryRunQuery, qe as useElementVisibility, ge as useExplainAI, he as useExplainQuery, L as useFlowQuery, ce as useFunnelQuery, ie as useMultiCubeLoadQuery, me as useMultiDryRunQueries, Z as useNotebookStore, Ee as useScrollContainer, He as useScrollDetection, xn as useTheme, an as validateBindingKeyExists, Zt as validateBindingKeyForSteps, un as validateFunnelConfig, ue as validateMergeKey, Qt as validateMergeKeys, _n as validateMultiQueryConfig, pn as validateStepQueries, Jt as validateTimeDimensionAlignment, E as warnIfExcelJsMissing, O as warnIfScreenshotLibMissing, Ne as watchThemeChanges };
1665
+ export { gr as AgenticNotebook, ut as AnalysisBuilder, lt as AnalyticsDashboard, _r as AnalyticsPage, Be as AnalyticsPortlet, Ue as ChartErrorBoundary, It as ConfirmModal, b as CubeClient, P as CubeProvider, x as DEFAULT_ICONS, dt as DashboardEditModal, tt as DashboardGrid, Xe as DashboardStoreProvider, Jr as DashboardThumbnailPlaceholder, Kr as DataBrowser, nt as DrillBreadcrumb, He as DrillMenu, qt as ExecutionPlanPanel, Ut as ExplainAIPanel, I as LazyChart, _t as LoadingIndicator, Ft as Modal, An as NotebookStoreProvider, st as PortletAnalysisModal, ot as PortletContainer, Ee as ScrollContainerProvider, ke as THEME_PRESETS, Pe as applyTheme, xe as buildFunnelConfigFromQueries, ve as buildServerFunnelQuery, d as captureThumbnail, N as chartPluginRegistry, cn as compressAndEncode, a as createCubeClient, Cn as createDashboardLayout, it as createDashboardStore, jt as createDefaultConfig, xt as createDefaultFlowConfig, bt as createDefaultFunnelConfig, Dt as createDefaultQueryConfig, Pt as createDefaultRetentionConfig, vt as createDefaultWorkspace, fe as createExplainQueryKey, ne as createFlowQueryKey, ae as createFunnelQueryKey, On as createNotebookStore, en as decodeAndDecompress, nn as detectAsymmetricDateRanges, Xt as detectMeasureCollisions, f as exportPortletToXlsx, Sn as formatChartData, ge as formatDuration, ce as generateQueryLabel, tn as generateShareUrl, mn as getAvailableBindingKeyDimensions, S as getAvailableChartTypes, be as getBindingKeyField, ln as getBindingKeyLabel, v as getChartTypeIcon, ee as getCombinedFields, Se as getCubeNameFromQuery, M as getFieldTypeIcon, o as getIcon, j as getIconData, g as getIconRegistry, _ as getIconsByCategory, y as getMeasureTypeIcon, B as getQueryIndices, oe as getQueryLabels, Le as getTheme, Ae as getThemeVariable, s as getUnavailableChartTypes, hn as getValidationSummary, zt as highlightCodeBlocks, F as isChartTypeAvailable, je as isDarkMode, w as isExportAvailable, Nt as isFlowConfig, Tt as isFunnelConfig, _e as isFunnelData, fn as isMinimumFunnelConfigValid, Et as isMultiQuery, We as isMultiQueryConfig, ie as isMultiQueryData, vn as isMultiQueryValid, Ot as isQueryConfig, St as isRetentionConfig, Ce as isSankeyData, we as isServerFlowQuery, rt as isServerFunnelQuery, dn as isShareableSize, Ct as isSingleQuery, m as isThumbnailCaptureAvailable, wt as isValidAnalysisConfig, kt as isValidAnalysisWorkspace, C as isValidChartType, V as mergeQueryResults, te as mergeResultsByKey, L as mergeResultsConcat, yt as migrateConfig, Rt as migrateLegacyPortlet, rn as parseShareUrl, l as preloadChart, c as preloadCharts, u as registerIcons, p as resetIcons, Ie as resetTheme, ft as selectAllActions, Rn as selectBlockActions, jn as selectBlocks, gn as selectBreakdowns, Yt as selectChartConfig, Ln as selectChatActions, In as selectChatState, Ht as selectCurrentState, Ze as selectDebugData, Qe as selectDebugDataActions, ct as selectEditModeActions, at as selectEditModeState, Vt as selectFilters, Kt as selectFunnelState, Fn as selectInputValue, Nn as selectIsStreaming, et as selectLayoutActions, $e as selectLayoutState, Mn as selectMessages, sn as selectMetrics, qe as selectModalActions, pt as selectModalState, Bt as selectMultiQueryState, gt as selectPortletDebugData, Pn as selectSessionId, Ye as selectThumbnailDirty, on as selectUIState, h as setIcon, Fe as setTheme, Ne as setThemeVariable, ye as transformServerFunnelResult, tr as useAgentChat, $t as useAnalysisBuilder, Gt as useAnalysisBuilderStore, k as useCubeApi, A as useCubeContext, T as useCubeFeatures, Oe as useCubeFieldLabel, z as useCubeLoadQuery, z as useCubeQuery, De as useCubeMeta, D as useCubeMetaQuery, Je as useDashboard, ht as useDashboardStore, Ge as useDashboardStoreApi, ze as useDashboardStoreOptional, Dr as useDataBrowser, Re as useDrillInteraction, de as useDryRunQueries, ue as useDryRunQuery, Ke as useElementVisibility, he as useExplainAI, me as useExplainQuery, R as useFlowQuery, se as useFunnelQuery, re as useMultiCubeLoadQuery, pe as useMultiDryRunQueries, Q as useNotebookStore, Te as useScrollContainer, Ve as useScrollDetection, xn as useTheme, an as validateBindingKeyExists, Zt as validateBindingKeyForSteps, un as validateFunnelConfig, le as validateMergeKey, Qt as validateMergeKeys, _n as validateMultiQueryConfig, pn as validateStepQueries, Jt as validateTimeDimensionAlignment, E as warnIfExcelJsMissing, O as warnIfScreenshotLibMissing, Me as watchThemeChanges };
1661
1666
 
1662
1667
  //# sourceMappingURL=index.js.map